Pygame游戏(5)

这是一个让坦克不断切换形态,用户通过按下键盘的上下左右键来控制坦克的方法

合金弹头java编写方法教程 合金弹头操作说明_Pygame 游戏


首先,把窗口的基本框架搭好

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)					#控制帧数

合金弹头java编写方法教程 合金弹头操作说明_Pygame 小游戏_02

合金弹头java编写方法教程 合金弹头操作说明_Python_03


这是坦克的两种形态,让它以一定时间不断切换,就会产生开头那样坦克一上一下的动作喽

坦克的开火开关已经做好,有兴趣的小伙伴只要找个子弹的图片,设置代码让其在坦克的前端以一定速度前进就好啦
具体的做法,将会在我的下一篇博客 豌豆射手 通过射手发射豌豆 ,便能让坦克同样的发射子弹

点击:
Pygame游戏之 豌豆射手

还有一款难度和挑战性更大一个框架
Pygame游戏之 愤怒的小鸟