了解更多关注微信公众号“木下学Python”吧~
外星人入侵源码:链接:https://pan.baidu.com/s/1RZky9nMCOj_VYb3NNpDAag 密码:482m
游戏的最小框架
import pygame,sys
#初始化所有信息
pygame.init()
screen = pygame.display.set_mode((600,400)) #设置窗口大小
pygame.display.set_caption('Pygame游戏之旅') #设置左上角窗口名称
#开始游戏,事件响应
while True:
for event in pygame.event.get(): #获取时间并响应
if event.type == pygame.QUIT: #如果事件类型是退出,退出游戏
sys.exit()
pygame.display.update() #刷新事件(刷新屏幕)
窗口坐标
引入图像
引入音乐
pygame.mixer.init()
pygame.mixer.music.load('grace.mp3')
pygame.mixer.music.play()
移动偏移量
刷新屏幕
确保图像src一定绘制在,图像dest中
操作时间,控制刷新帧率
clock = pygame.time.Clock()
对键盘的敲击响应
属于事件,放在事件循环里面
例子一个控制小球速度的游戏
import pygame,sys
#初始化所有信息
pygame.init()
size = width,height = 600,400 #设置屏幕大小
speed = [1,1] #设置速度
BLACK = 0,0,0 #设置背景颜色
screen = pygame.display.set_mode((600,400)) #设置窗口大小
pygame.display.set_caption('Pygame游戏壁球')
ball = pygame.image.load('PYG02-ball.gif') #导入小球图片
ballrect = ball.get_rect() #实例化小球图片为矩形
fclock = pygame.time.Clock()
fps = 300
#开始游戏,事件响应
while True:
for event in pygame.event.get(): #获取时间并响应
if event.type == pygame.QUIT: #如果事件类型是退出,退出游戏
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT: #速度减一 #判断符号
speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1) * int(speed[0] / abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
elif event.key == pygame.K_DOWN:
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1) * int(speed[1] / abs(speed[1]))
ballrect = ballrect.move(speed[0],speed[1]) #小球移动
#判断小球是否在窗口,不在,速度取反
if ballrect.left < 0 or ballrect.right > width:
speed[0] = - speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = - speed[1]
screen.fill(BLACK) #图片移动后,重新填充背景色
screen.blit(ball,ballrect) #确保小球绘制在窗口内
pygame.display.update() #刷新事件(刷新屏幕)
fclock.tick(fps) #设置每秒钟刷新300针