安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】

一、pygame简介

Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发。允许你在 Python 程序中创建功能丰富的游戏和多媒体程序,Pygame 是一个高可移植性的模块可以支持多个操作系统。用它来开发小游戏非常适合

二、pygame的使用

第一步是把pygame导入到Python程序中,

import pygame

然后需要引入pygame中所有常量

from pygame.locals import *

在经过初始化以后,我们就可以正常的使用pygame了

pygame.ini()

通常来说我们需要创建一个窗口,方便我们与程序就行交互,下面创建一个600 x 500的窗口

screen=pygame.display.set_mode((600,500))

1、打印字体

pygame支持使用pygame.font将文打印到窗口,要打印一个文本的话首先需要创建一个文本对象,即:创建字体,None:默认字体,60:字体大小

myfont = pygame.font.Font(None,60)

这个文本是个重量级的进程,比较耗费时间,常用的做法是先在内存中创建文本对象,然后将文本当做一个图像来渲染,即:创建一个可以使用screen.blit()绘制的平面

white= 255,255,255blue= 0,0,200textImage= myfont.render("hello Pygame",True,white)

textImage对象可以使用screen.blit()来绘制,上面的render函数第一个参数是文本,第二个参数是抗锯齿字体,第三个参数是一个颜色值(RGB值)

要绘制文本,通常的过程是清屏,绘制,刷新,即:进行绘制

screen.blit()需要两个参数,绘制的对象及其(左上角顶点)坐标

screen.fill(blue)

screen.blit(textImage,(100,100))

pygame.display.update()

如果此时运行程序的话,会出现一个窗口一闪而过,为了让他长时间显示,需要把他放入一个循环中

importpygamefrom pygame.locals import *

importsys

white= 255,255,255blue= 0,0,200pygame.init()

screen= pygame.display.set_mode((600,400))

myfont= pygame.font.Font(None,60)

textImage= myfont.render("Hello World",True,white)whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:

sys.exit()

screen.fill(blue)

screen.blit(textImage,(100,100))

pygame.display.update()

执行结果:

安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】_第1张图片

pygame除了能打印字体,仍然可以绘制各种图像

2、绘制一个圆形

使用pygame.draw.cicle()方法,该方法需要传递圆的大小,颜色和参数

color (0,0,0)给定颜色

radius圆半径

position (0,0)给定圆心坐标

width线条宽度

importpygame,sys

pygame.init()

screen= pygame.display.set_mode((600,400))#设置圆形的位置和移动的速度变量

pos_x = 300pos_y= 250vel_x= 2vel_y= 1

whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:

sys.exit()

screen.fill((0, 0,200))#移动圆形

pos_x +=vel_x

pos_y+=vel_y#让圆形保持在窗口内

if pos_x > 500 or pos_x <0:

vel_x= -vel_xif pos_y > 400 or pos_y <0:

vel_y= -vel_y

color= 255, 255, 0

position= 300, 250radius= 80 #半径

width =0

pos=pos_x,pos_y#print(pos)

pygame.draw.circle(screen,color,pos,radius,width)

pygame.display.update()

执行结果

安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】_第2张图片

安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】_第3张图片

3、绘制一个矩形

绘制一个可以移动的矩形,而非简单的显示在屏幕中间

首先需要设置pos_x,pos_y两个变量来记录矩形的位置信息,然后在创建一堆速度变量(vel_x,vel_y),在while循环中不断变化矩形的位置,当矩形移动到屏幕边缘的时候,将速度变量取返,这样就可以产生碰撞的效果

position (pos_x,pos_y,100,100)给定左上角顶点的坐标、长和宽

from pygame.locals import *

importpygameimportsys

pygame.init()

screen= pygame.display.set_mode((600,400))

title= pygame.display.set_caption("Drawing Rectangles")#记录矩形的位置信息,记录移动速度的位置信息

pos_x = 300pos_y= 250vel_x= 2vel_y= 1

whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:

sys.exit()

screen.fill((0,0,200))#移动矩形

pos_x +=vel_x

pos_y+=vel_y#使矩形保持在窗口内

if pos_x > 500 or pos_x <0:

vel_x= -vel_xif pos_y >400 or pos_y <0:

vel_y= -vel_y#绘制矩形

color = 255,255,0

width=0

pos= pos_x,pos_y,100,100pygame.draw.rect(screen,color,pos,width)

pygame.display.update()

执行结果:

安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】_第4张图片

安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】_第5张图片

4、绘制线条

使用pygame.draw.line()方法,该方法需要传递起点和终点,还有线条的颜色和宽度

(0,0)(100,100)负责给定线段的两个端点

importpygameimportsys

pygame.init()

screen= pygame.display.set_mode((600,400))whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:

sys.exit()

screen.fill((0,0,255))

color= 255,255,0

width= 5pygame.draw.line(screen,color,(100,100),(500,300),width)

pygame.display.update()

执行结果:

安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】_第6张图片

5、绘制弧形

弧形是圆形的一部分,可以使用pygame.draw.arc方法绘制它,由于这个形状相对比较复杂,需要用到的知识比前面的知识要多

首先,需要一个矩形来表示弧形的边界(需提供矩形左上角的位置,宽度和高度)弧形就绘制在这个矩形当中

然后需要提供弧形的起始角度和结束角度,平常我们在生活中都是用度为单位衡量一个角度,但在几何三角形中,通常使用的单位是弧度

将角度转换成弧度的函数是math.redians()它包含在math库中,因此使用之前一定要引入math库

#x,y表示弧形所在的圆的圆心坐标,radius表示半径

start_angle起始角度 指向正右侧的半径开始逆时针旋转就是0到360

end_angle结束角度

importmathimportpygamefrom pygame.locals import *

importsys

pygame.init()

screen= pygame.display.set_mode((600,500))

title= pygame.display.set_caption("Drawing Arcs")whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:

sys.exit()

screen.fill((0,0,200))#绘制弧形

color = 255,0,255position= 200,150,200,200start_angle=math.radians(0)

stop_angle= math.radians(180)print(start_angle,stop_angle)

width=8pygame.draw.arc(screen,color,position,start_angle,stop_angle,width)

pygame.display.update()

执行结果:

安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】_第7张图片

二、实践:绘制大饼游戏(当按下1,2,3,4相应的按钮时,就会在程序中绘制相应的饼块,当整个饼块绘制完成以后,颜色变成亮绿色)

importpygamefrom pygame.locals import *

importmathimportsys

pygame.init()

screen= pygame.display.set_mode((600,600))

title= pygame.display.set_caption("The Pie Game")

myfont= pygame.font.Font(None,60)

color= 200,80,60width= 4x= 300y= 250radius= 200position= x-radius,y-radius,radius*2,radius*2

#设置按键1,2,3,4变量

piece1 =False

piece2=False

piece3=False

piece4=FalsewhileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:

sys.exit()elif event.type ==KEYUP:if event.key ==pygame.K_ESCAPE:

sys.exit()elif event.key ==pygame.K_1:

piece1=Trueelif event.key ==pygame.K_2:

piece2=Trueelif event.key ==pygame.K_3:

piece3=Trueelif event.key ==pygame.K_4:

piece4=True#清屏

screen.fill((0,0,200))#绘制4个数字

textImage1 = myfont.render("1",True,color)

text1=screen.blit(textImage1,(x+radius/2-20,y-radius/2))#print("text1==",text1)

textImage2 = myfont.render("2",True,color)

text2=screen.blit(textImage2,(x-radius/2,y-radius/2))#print("text2==", text2)

textImage3 = myfont.render("3",True,color)

text3=screen.blit(textImage3,(x-radius/2,y+radius/2-20))#print("text3==", text3)

textImage4 = myfont.render("4",True,color)

text4=screen.blit(textImage4,(x+radius/2-20,y+radius/2-20))#print("text4==", text4)

#判断是否绘制饼

ifpiece1:

start_angle=math.radians(0)

end_angle= math.radians(90)

arc1=pygame.draw.arc(screen,color,position,start_angle,end_angle,width)print("arc1==",arc1)

line1=pygame.draw.line(screen,color,(x,y),(x,y-radius),width)print("line1==",line1)

line2=pygame.draw.line(screen,color,(x,y),(x+radius,y),width)print("line2==",line2)ifpiece2:

start_angle= math.radians(90)

end_angle= math.radians(180)

pygame.draw.arc(screen,color,position,start_angle,end_angle,width)

pygame.draw.line(screen,color,(x,y),(x,y-radius),width)

pygame.draw.line(screen,color,(x,y),(x-radius,y),width)ifpiece3:

start_angle= math.radians(180)

end_angle= math.radians(270)

pygame.draw.arc(screen,color,position,start_angle,end_angle,width)

pygame.draw.line(screen,color,(x,y),(x-radius,y),width)

pygame.draw.line(screen,color,(x,y),(x,y+radius),width)ifpiece4:

start_angle= math.radians(270)

end_angle= math.radians(360)

pygame.draw.arc(screen,color,position,start_angle,end_angle,width)

pygame.draw.line(screen,color,(x,y),(x,y+radius),width)

pygame.draw.line(screen,color,(x,y),(x,y+radius),width)#是否4个饼都绘制完成

if piece1 and piece2 and piece3 andpiece4:

color= 0,255,0

pygame.display.update()

执行结果

安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】_第8张图片

安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】_第9张图片

安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】_第10张图片

安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】_第11张图片

三、绘制椭圆

采用pygame.draw.ellipse()函数

你可能感兴趣的:(安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】)