Pygame游戏(5)
这是一个让坦克不断切换形态,用户通过按下键盘的上下左右键来控制坦克的方法
首先,把窗口的基本框架搭好
import pygame,sys
from pygame.locals import *
pygame.init() #初始化模块
pygame.mixer.init() #初始化播放器
screen = pygame.display.set_mode((640,480))
pygame.display.set_caption("合金弹头")
clock = pygame.time.Clock() #控制帧数
back = pygame.image.load('photo/bg.jpg') #加载背景图片
backposition = back.get_rect() #获取图片的外接矩形
pygame.mixer.music.load('game_music.ogg') #加载背景音乐
pygame.mixer.music.set_volume(0.5) #设置音量
pygame.mixer.music.play(-1) #循环播放
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
screen.blit(back,backposition) #绘制背景图片
pygame.display.update() #刷新屏幕
clock.tick(60) #帧数设置为60
这样一个带背景图的窗口就创建好啦
接下去让我们把坦克加入进来(解释在代码行的后面)
import pygame,sys
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((640,480))
pygame.display.set_caption("合金弹头")
clock = pygame.time.Clock() #调节帧数
speed = [1,0]
i=0 #记录帧
change = 1 #记录切换
state = False #坦克形态开关
direct = 'L' #转向开关
fire = False #开火开关
back = pygame.image.load('photo/bg.jpg') #加载背景图片
tank = pygame.image.load('photo/tank_01.png') #加载坦克1的图片
pygame.mixer.music.load('game_music.ogg') #加载音乐
pygame.mixer.music.set_volume(0.5) #设置音量
pygame.mixer.music.play(-1) #循环播放
backposition = back.get_rect() #获取外接矩形
tankposition = tank.get_rect()
tankposition.center = (80,240) #把初始位置放地图前端位置
while True:
#每过一段时间切换坦克的形态(用i记录)
i = i + 1
if i%10 == 0:
state = True
else:
state = False
#让坦克在两种形态中不断切换
if state:
if change == 1:
tank = pygame.image.load('photo/tank_02.png')
change = 2
else:
tank = pygame.image.load('photo/tank_01.png')
change = 1
#图片水平翻转180度(按下左右键让坦克掉头,不然坦克一直是头朝着右方)
if direct == 'R':
img2=pygame.transform.flip(tank,True,False)
else:
img2=tank
for event in pygame.event.get(): #获取事件
if event.type == pygame.QUIT: #鼠标按下窗口的关闭
sys.exit() #退出
if event.type == pygame.KEYDOWN: #按下键盘
if event.key == pygame.K_ESCAPE:#按下ESC键
sys.exit() #退出
if event.key == pygame.K_RIGHT: #按下右键
speed = [2,0] #速度
direct = 'L' #掉头
if event.key == pygame.K_LEFT: #按下左键
speed = [-2,0] #速度
direct = 'R' #掉头
if event.key == pygame.K_UP: #按下上键
speed = [0,-2] #速度
if event.key == pygame.K_DOWN: #按下下键
speed = [0,2] #速度
if event.key == pygame.K_SPACE: #按下空格
fire = True #开火
if event.type == pygame.KEYUP: #键盘释放
speed = [0,0] #原地不动
if event.key == pygame.K_SPACE: #空格键释放
fire = False #开火停止
tankposition = tankposition.move(speed) #让坦克以速度speed前进
screen.blit(back,backposition) #绘制背景图片
screen.blit(img2,tankposition) #绘制坦克
pygame.display.update() #刷新屏幕
clock.tick(60) #控制帧数
这是坦克的两种形态,让它以一定时间不断切换,就会产生开头那样坦克一上一下的动作喽
坦克的开火开关已经做好,有兴趣的小伙伴只要找个子弹的图片,设置代码让其在坦克的前端以一定速度前进就好啦
具体的做法,将会在我的下一篇博客 豌豆射手 通过射手发射豌豆 ,便能让坦克同样的发射子弹
点击:
Pygame游戏之 豌豆射手
还有一款难度和挑战性更大一个框架
Pygame游戏之 愤怒的小鸟