图片和音效自己自行在网上下载即可。
import pygame,time,random
from pygame.sprite import Sprite
#定义常量
SCREEN_WIDTH = 750
SCREEN_HEIGHT= 500
BG_COLOR = pygame.Color(0,0,0)
TEXT_COLOR = pygame.Color(255,0,0)
#创建精灵基类
class BaseItem(Sprite):
pass
class MainGame():
window = None
myTank = None
enemyCount = 5
enemyList = []
#定义我方坦克发射的子弹列表
myBulletList = []
#定义敌方坦克发射的子弹列表
enemyBulletList = []
#定义存储爆炸效果类列表
explodeList =[]
#定义墙壁列表
wallList = []
#初始化方法
def __init__(self) -> None:
pass
#创建敌方坦克
def createEnemyTank(self):
top = 100
for i in range(MainGame.enemyCount):
left = random.randint(0,600)
speed = random.randint(1,4)
enemyTank = EnemyTank(left,top,speed)
#添加到列表
MainGame.enemyList.append(enemyTank)
#加载敌方坦克
def displayEnemyTank(self):
for enemyTank in MainGame.enemyList:
#判断敌方坦克是否存活
if enemyTank.live:
enemyTank.displayTank()
#调用move进行移动
enemyTank.randMove()
#初始化敌方坦克发射的子弹
#调用检测敌方坦克是否与墙壁发生碰撞
enemyTank.tank_hit_wall()
#调用检测敌方坦克是否与我方坦克发生碰撞
if MainGame.myTank and MainGame.myTank.live:
enemyTank.enemyTank_hit_myTank()
enemyBullet = enemyTank.shot()
#判断子弹是否有值
if enemyBullet:
MainGame.enemyBulletList.append(enemyBullet)
else:#当前敌方坦克已经死亡,从敌方坦克列表移除
MainGame.enemyList.remove(enemyTank)
#显示我方坦克发射的子弹
def displayMyBullet(self):
for myBullet in MainGame.myBulletList:
#判断子弹是否存活
if myBullet.live :
myBullet.displayBullet()
#调用子弹的移动方法
myBullet.move()
#调用我方子弹是否与敌方坦克碰撞
myBullet.myBullet_hit_enemyTank()
#调用检测我方子弹是否与墙壁发生碰撞
myBullet.bullet_hit_wall()
else:
#从子弹列表中删除子弹
MainGame.myBulletList.remove(myBullet)
#显示敌方坦克发射的子弹
def displayEnemyBullet(self):
for enemyBullet in MainGame.enemyBulletList:
#判断子弹是否存活
if enemyBullet.live:
enemyBullet.displayBullet()
#调用子弹移动的方法
enemyBullet.move()
#调用敌方子弹与我方坦克碰撞检测
enemyBullet.enemyBullet_hit_myTank()
#调用检测敌方子弹是否与墙壁发生碰撞
enemyBullet.bullet_hit_wall()
else:
#从子弹列表删除
MainGame.enemyBulletList.remove(enemyBullet)
#循环遍历爆炸效果列表展示爆炸效果
def displayExplodeList(self):
for explode in MainGame.explodeList:
#判断是否存活
if explode.live:
#展示
explode.displayExplode()
else:
#从爆炸效果列表中移除
MainGame.explodeList.remove(explode)
#创建我方坦克
def createMyTank(self):
MainGame.myTank = MyTank(350,300)
#添加音效
music=Music("img\start.wav")
# 播放
music.playMusic()
#创建墙壁
def createWall(self):
top = 220
for i in range(6):
#初始化墙壁
wall = Wall(i*130,top)
#添加到墙壁列表
MainGame.wallList.append(wall)
#加载墙壁
def displayWallList(self):
#循环遍历墙壁列表
for wall in MainGame.wallList:
if wall.live:
wall.displayWall()
else