python实现坦克大战游戏实现坦克大战游戏 附详细注释附详细注释
主要为大家详细介绍了python实现坦克大战游戏,附详细注释,具有一定的参考价值,感兴趣的小伙伴们可以
参考一下
本文实例为大家分享了python实现坦克大战的具体代码,供大家参考,具体内容如下
#功能实现游戏主窗口
import pygame,time,random#导入模块
_display = pygame.display#赋值给一个变量 调用时方便
color_red = pygame.Color(255,0,0)#同上 v
class MainGame(object):
screen_width = 900#游戏界面宽度
screen_height = 550#界面的高度
Tank_p1 = None#坦克对象
window = None #窗口对象
EnemyTank_list = []# 存储所有敌方坦克
EnemTank_count = 10# 要创建的敌方坦克的数量
Bullet_list = [] #创建我方子弹列表
EnemyTank_bullet_list = []
Explode_list= []
wall_list = []
def startGame(self):
pygame.display.init()#初始化游戏模块的显示
MainGame.window = _display.set_mode([MainGame.screen_width,MainGame.screen_height])#生成并加载游戏窗口、\
#pygame.display模块及set_mode方法和pygame相关方法调用设置
# 见<<https://www.pygame.org/docs/ref/display.html#pygame.display.set_mode>> UC浏览器实现自动翻译
pygame.display.set_caption("坦克大战v1.0")#s设置游戏标题
self.creatEnemyTank()#类中调用初始敌方坦克方法
self.creatMyTank()#创建我方坦克
self.creatWalls()#创建障碍物
while True:#无限循环 所有行为方法都要无限制的显示
MainGame.window.fill(pygame.Color(0,0,0))#窗口颜色设置 Window在开始方法已设置为游戏窗口
self.getEvent()#死循环中 获取事件的值 对其进行相应处理
MainGame.window.blit(self.drawText("剩余敌方数量%d" %len(MainGame.EnemyTank_list)),(7, 7))#循环游戏窗口加载文本 bilt方法在页面写入另一个
self.blitWalls()
if MainGame.Tank_p1 and MainGame.Tank_p1.alive:
MainGame.Tank_p1.displayTank()#循环调用生成的坦克对象(显示)方法
self.blitEnemyTank()# 此类中用self 循环展示敌方坦克
if MainGame.Tank_p1 and not MainGame.Tank_p1.stop:
MainGame.Tank_p1.move()# 移动
MainGame.Tank_p1.hitWall()#撞击墙壁
MainGame.Tank_p1.hitEnemyTank()#撞击敌方坦克方法
self.blitEnemyBullet()#显示敌方坦克子弹
self.blitBullet()#显示炮弹
self.blitExplode()#显示爆炸效果
time.sleep(0.02)
_display.update()#获取更新
#将带有文字的surface 绘制到窗口中 循环
# 创建敌方坦克
def creatEnemyTank(self):#创建敌方坦克
top = 100
for i in range(MainGame.EnemTank_count):#MainGame.EnemTank_count=5 五次循环创建敌方坦克
speed = random.randint(3, 6) # 随机模块 random.randint
# 每次都随机生成一个left值
left = random.randint(1, 7)
eTank = EnemyTank(left * 100, top, speed)#生成敌方坦克类对象 传入参数 left为随机
MainGame.EnemyTank_list.append(eTank)#将创建的每一个敌方坦克添加到列表
# 将坦克加入到窗口中
def creatMyTank(self):
MainGame.Tank_p1 = MyTank(400, 480) # 生成一个坦克类的实例对象
music = Music("img/start.wav")
music.play()
def creatWalls(self):
for i in range(1,10):
wall = Wall(60*i,250)
MainGame.wall_list.append(wall)
def blitWalls(self):
for wall in MainGame.wall_list:
if wall.live == True:
wall.displayWall()
评论0
最新资源