我方坦克发射子弹
添加显示子弹
class Bullet:
'''
子弹类
'''
def display_bullet(self) -> None:
'''
显示子弹
'''
MainGame.window.blit(self.image,self.rect)
按空格键产生子弹,并将子弹添加到子弹列表中
class MainGame:
'''
游戏主窗口类
'''
# 游戏主窗口对象
window =None
# 设置我放坦克
my_tank = None
# 存储敌方坦克的列表
enemy_tank_list = []
# 设置敌方坦克的数量
enemy_tank_count = 6
# 存储我方子弹的列表
my_bullet_list = []
def get_event(self) -> None:
'''
获取事件
'''
# 获取所有事件
event_list = pygame.event.get()
# 遍历事件
for event in event_list:
# 判断是什么事件,然后做出相应的处理
if event.type == pygame.QUIT:
# 点击关闭按钮
self.end_game()
if event.type == pygame.KEYDOWN:
# 按下键盘
if event.key == pygame.K_LEFT:
print('坦克向左移动')
# 修改方向
MainGame.my_tank.direction = 'L'
# 修改坦克移动的状态
MainGame.my_tank.remove = True
elif event.key == pygame.K_RIGHT:
print('坦克向右移动')
# 修改方向
MainGame.my_tank.direction = 'R'
# 修改坦克移动的状态
MainGame.my_tank.remove = True
elif event.key == pygame.K_UP:
print('坦克向上移动')
# 修改方向
MainGame.my_tank.direction = 'U'
# 修改坦克移动的状态
MainGame.my_tank.remove = True
elif event.key == pygame.K_DOWN:
# 修改方向
MainGame.my_tank.direction = 'D'
print('坦克向下移动')
# 修改坦克移动的状态
MainGame.my_tank.remove = True
elif event.key == pygame.K_SPACE:
# 发射子弹
print('发射子弹')
# 创建子弹
m_bullet = Bullet(MainGame.my_tank)
# 将子弹添加到列表中
MainGame.my_bullet_list.append(m_bullet)
if event.type == pygame.KEYUP and event.key in (pygame.K_LEFT,pygame.K_RIGHT,pygame.K_UP,pygame.K_DOWN):
# 修改坦克移动的状态
MainGame.my_tank.remove = False
将子弹添加到窗口
def start_game(self) -> None:
'''
开始游戏
'''
# 初始化游戏窗口
pygame.display.init()
# 创建一个窗口
MainGame.window = pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
# 设置窗口标题
pygame.display.set_caption('坦克大战1.0')
# 创建一个我方 坦克
MainGame.my_tank = MyTank(350,200)
# 创建敌方坦克
self.create_enemy_tank()
# 刷新窗口
while True:
sleep(0.02)
# 给窗口设置填充色
MainGame.window.fill(BG_COLOR)
# 增加提示文字
# 1.要增加文字内容
# num = 6
text = self.get_text_surface(f'敌方坦克剩余数量{MainGame.enemy_tank_count}')
# 2.如何把文字加上
MainGame.window.blit(text,(10,10))
# 增加事件
self.get_event()
# 显示 我方坦克
MainGame.my_tank.display_tank()
# 显示敌方坦克
self.display_enemy_tank()
# 移动坦克
if MainGame.my_tank.remove:
MainGame.my_tank.move()
# 显示我方子弹
self.display_my_bullet()
pygame.display.update()
我方子弹移动
#子弹的移动方法
def move(self) -> None:
'''
子弹的移动
'''
# 根据子弹生成的方向来的移动
if self.direction == "L":
# 判断子弹是否超出屏幕
if self.rect.left > 0:
self.rect.left -= self.speed
elif self.direction == "R":
# 判断子弹是否超出屏幕
if self.rect.left + self.rect.width < SCREEN_WIDTH:
self.rect.left += self.speed
elif self.direction == "U":
# 判断子弹是否超出屏幕
if self.rect.top > 0:
self.rect.top -= self.speed
elif self.direction == "D":
# 判断子弹是否超出屏幕
if self.rect.top + self.rect.height < SCREEN_HEIGHT:
self.rect.top += self.speed
修改MainGame类,显示子弹方法
def display_my_bullet(self) -> None:
'''
显示我方子弹
'''
for my_bullet in MainGame.my_bullet_list:
# 显示我方子弹
my_bullet.display_bullet()
# 移动我方子弹
my_bullet.move()
子弹的消亡与数量控制
修改子弹类,创建live属性,与根据移动位置修改live状态
class Bullet:
'''
子弹类
'''
def __init__(self,tank) -> None:
# 设置子弹的状态
self.live = True
def move(self) -> None:
'''
子弹的移动
'''
# 根据子弹生成的方向来的移动
if self.direction == "L":
# 判断子弹是否超出屏幕
if self.rect.left > 0:
self.rect.left -= self.speed
else:
self.live = False
elif self.direction == "R":
# 判断子弹是否超出屏幕
if self.rect.left + self.rect.width < SCREEN_WIDTH:
self.rect.left += self.speed
else:
self.live = False
elif self.direction == "U":
# 判断子弹是否超出屏幕
if self.rect.top > 0:
self.rect.top -= self.speed
else:
self.live = False
elif self.direction == "D":
# 判断子弹是否超出屏幕
if self.rect.top + self.rect.height < SCREEN_HEIGHT:
self.rect.top += self.speed
else:
self.live = False
修改MainGame类,修改显示子弹类,与事件监听
def display_my_bullet(self) -> None:
'''
显示我方子弹
'''
for my_bullet in MainGame.my_bullet_list:
# 判断子弹是否存活
if my_bullet.live:
# 显示我方子弹
my_bullet.display_bullet()
# 移动我方子弹
my_bullet.move()
else:
# 从列表中移除
MainGame.my_bullet_list.remove(my_bullet)
def get_event(self) -> None:
'''
获取事件
'''
# 获取所有事件
event_list = pygame.event.get()
# 遍历事件
for event in event_list:
# 判断是什么事件,然后做出相应的处理
if event.type == pygame.QUIT:
# 点击关闭按钮
self.end_game()
if event.type == pygame.KEYDOWN:
# 按下键盘
if event.key == pygame.K_LEFT:
print('坦克向左移动')
# 修改方向
MainGame.my_tank.direction = 'L'
# 修改坦克移动的状态
MainGame.my_tank.remove = True
elif event.key == pygame.K_RIGHT:
print('坦克向右移动')
# 修改方向
MainGame.my_tank.direction = 'R'
# 修改坦克移动的状态
MainGame.my_tank.remove = True
elif event.key == pygame.K_UP:
print('坦克向上移动')
# 修改方向
MainGame.my_tank.direction = 'U'
# 修改坦克移动的状态
MainGame.my_tank.remove = True
elif event.key == pygame.K_DOWN:
# 修改方向
MainGame.my_tank.direction = 'D'
print('坦克向下移动')
# 修改坦克移动的状态
MainGame.my_tank.remove = True
elif event.key == pygame.K_SPACE:
# 判断子弹是否上限
if len(MainGame.my_bullet_list) < 5:
# 发射子弹
print('发射子弹')
# 创建子弹
m_bullet = Bullet(MainGame.my_tank)
# 将子弹添加到列表中
MainGame.my_bullet_list.append(m_bullet)
if event.type == pygame.KEYUP and event.key in (pygame.K_LEFT,pygame.K_RIGHT,pygame.K_UP,pygame.K_DOWN):
# 修改坦克移动的状态
MainGame.my_tank.remove = False
敌方坦克随机发射子弹
实现发射子弹方法
def shot(self):
'''
敌方坦克的射击
'''
num = random.randint(1,100)
if num < 5:
return Bullet(self)
敌方坦克加入窗口后,发射子弹,并将子弹添加到敌方子弹列表中
#将敌方坦克加入到窗口中
def display_enemy_tank(self) -> None:
'''
显示敌方坦克
'''
for e_tank in self.enemy_tank_list:
# 显示敌方坦克
e_tank.display_tank()
# 移动敌方坦克
e_tank.rand_move()
# 发射子弹
e_bullet = e_tank.shot()
# 判断是否有子弹
if e_bullet:
# 将子弹增加到列表中
MainGame.enemy_bullet_list.append(e_bullet)
将敌方发射的子弹添加到窗口
def start_game(self) -> None:
'''
开始游戏
'''
# 初始化游戏窗口
pygame.display.init()
# 创建一个窗口
MainGame.window = pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
# 设置窗口标题
pygame.display.set_caption('坦克大战1.0')
# 创建一个我方 坦克
MainGame.my_tank = MyTank(350,200)
# 创建敌方坦克
self.create_enemy_tank()
# 刷新窗口
while True:
sleep(0.02)
# 给窗口设置填充色
MainGame.window.fill(BG_COLOR)
# 增加提示文字
# 1.要增加文字内容
# num = 6
text = self.get_text_surface(f'敌方坦克剩余数量{MainGame.enemy_tank_count}')
# 2.如何把文字加上
MainGame.window.blit(text,(10,10))
# 增加事件
self.get_event()
# 显示 我方坦克
MainGame.my_tank.display_tank()
# 显示敌方坦克
self.display_enemy_tank()
# 移动坦克
if MainGame.my_tank.remove:
MainGame.my_tank.move()
# 显示我方子弹
self.display_my_bullet()
# 显示敌方子弹
self.display_enemy_bullet()
pygame.display.update()
我方子弹与敌方坦克的碰撞检测
在游戏开发中,通常把显示图像的对象叫做精灵Spire,精灵需要有两个属性,image要显示的图像,rect图像要显示在屏幕的位置。
在Pygame框架中,使用pygame. sprite模块中的内置函数可以实现碰撞检测。代码如下:
pygame.sprite.collide_rect(first, second) #返回布尔值
修改坦克类,增加是否存活状态
class Tank:
'''
坦克类
'''
def __init__(self) -> None:
self.live = True
在子弹类中增加我方子弹碰撞敌方坦克的方法,如果发生碰撞,修改我方子弹及敌方坦克live属性的状态值。
def hit_enemy_tank(self):
for e_tank in MainGame.enemy_tank_list:
# 判断子弹是否击中坦克
if collide_rect(self,e_tank):
# 修改子弹的状态
self.live = False
e_tank.live = False
在我方子弹移动后判断子弹是否与敌方坦克碰撞。
def display_my_bullet(self) -> None:
'''
显示我方子弹
'''
for my_bullet in MainGame.my_bullet_list:
# 判断子弹是否存活
if my_bullet.live:
# 显示我方子弹
my_bullet.display_bullet()
# 移动我方子弹
my_bullet.move()
# 判断我方子弹是否击中敌方坦克
my_bullet.hit_enemy_tank()
else:
# 从列表中移除
MainGame.my_bullet_list.remove(my_bullet)
修改MainGame类敌方坦克显示逻辑,根据敌方坦克是否存活
def display_enemy_tank(self) -> None:
'''
显示敌方坦克
'''
for e_tank in self.enemy_tank_list:
# 判断敌方坦克是否存活
if e_tank.live:
# 显示敌方坦克
e_tank.display_tank()
# 移动敌方坦克
e_tank.rand_move()
# 发射子弹
e_bullet = e_tank.shot()
# 判断是否有子弹
if e_bullet:
# 将子弹增加到列表中
MainGame.enemy_bullet_list.append(e_bullet)
else:
# 从列表中移除
self.enemy_tank_list.remove(e_tank)
爆炸效果
添加爆炸效果
初始化爆炸类
def __init__(self,tank:Tank) -> None:
# 加载爆炸效果的图片
self.images = [
pygame.image.load('./img/blast0.gif'),
pygame.image.load('./img/blast1.gif'),
pygame.image.load('./img/blast2.gif'),
pygame.image.load('./img/blast3.gif'),
pygame.image.load('./img/blast4.gif'),
]
# 设置爆炸效果的位置
self.rect = tank.rect
# 设置爆炸效果的索引
self.step = 0
# 获取需要渲染的图像
self.image = self.images[self.step]
# 设置爆炸的状态
self.live = True
展示爆炸效果。
def display_explode(self) -> None:
'''
显示爆炸效果
'''
# 判断当前爆照的效果是否播放完毕
if self.step < len(self.images):
# 获取当前爆炸效果的图像
self.image = self.images[self.step]
# 获取下一张爆炸效果的图像的索引
self.step += 1
# 绘制爆炸效果
MainGame.window.blit(self.image,self.rect)
else:
# 初始化爆炸效果的索引
self.step = 0
# 设置爆炸效果的状态,代表爆炸过了
self.live = False
在我方子弹碰撞敌方坦克的方法中,如果检测到碰撞,产生爆炸类,并将爆炸效果添加到爆炸列表。
def hit_enemy_tank(self):
for e_tank in MainGame.enemy_tank_list:
# 判断子弹是否击中坦克
if collide_rect(self,e_tank):
# 爆炸效果
explode = Explode(e_tank)
MainGame.explode_list.append(explode)
# 修改子弹的状态
self.live = False
e_tank.live = False
将爆炸效果添加到窗口。
#新增方法: 展示爆炸效果列表
def display_explode(self) -> None:
'''
显示爆炸效果
'''
for explode in MainGame.explode_list:
# 判断是否活着
if explode.live:
# 显示爆炸效果
explode.display_explode()
else:
# 从列表中移除
MainGame.explode_list.remove(explode)
敌方子弹与我方坦克碰撞检测
子弹类中,新增敌方子弹与我方坦克的碰撞。如果发生碰撞,修改敌方子弹、我方坦克的状态及产生爆炸效果。
#新增敌方子弹与我方坦克的碰撞方法
def hit_my_tank(self):
# 判断我方坦克是否活着
if MainGame.my_tank and MainGame.my_tank.live:
# 判断字段是否击中我方坦克
if collide_rect(self,MainGame.my_tank):
# 爆炸效果
explode = Explode(MainGame.my_tank)
MainGame.explode_list.append(explode)
# 修改子弹的状态
self.live = False
MainGame.my_tank.live = False
添加敌方子弹到窗口中时候,如果子弹还活着,显示子弹、调用子弹移动并判断敌方子弹是否与我方坦克发生碰撞。
#将敌方子弹加入到窗口中
def display_my_bullet(self) -> None:
'''
显示我方子弹
'''
for my_bullet in MainGame.my_bullet_list:
# 判断子弹是否存活
if my_bullet.live:
# 显示我方子弹
my_bullet.display_bullet()
# 移动我方子弹
my_bullet.move()
# 判断我方子弹是否击中敌方坦克
my_bullet.hit_enemy_tank()
else:
# 从列表中移除
MainGame.my_bullet_list.remove(my_bullet)
我方坦克无线重生
坦克大战游戏中一般我方坦克有重生的功能,当按下键盘的Esc键时候,让我方坦克重生。重生指的就是重新创建我方坦克。
def create_my_tank(self) -> None:
'''
创建我方坦克
'''
MainGame.my_tank = MyTank(350,200)
#获取事件
def getEvent(self):
#获取所有事件
eventList= pygame.event.get()
#遍历事件
for event in event_list:
if event.type == pygame.KEYDOWN:
# 如果我方坦克死亡,按下esc键,重新生成我方坦克
if not MainGame.my_tank and event.key == pygame.K_ESCAPE:
print('重新生成我方坦克')
# 按下esc键,重新生成我方坦克
self.create_my_tank()
加载墙壁
初始化墙壁类
class Wall:
'''
墙壁类
'''
def __init__(self,left,top) -> None:
# 加载图片
self.image = pygame.image.load('./img/steels.gif')
# 获取墙壁的图形
self.rect = self.image.get_rect()
# 设置墙壁的位置
self.rect.left = left
self.rect.top = top
def display_wall(self) -> None:
'''
显示墙壁
'''
MainGame.window.blit(self.image,self.rect)
创建墙壁
def create_wall(self) -> None:
'''
创建墙壁
'''
top = 200
for i in range(6):
# 创建墙壁
wall = Wall(i*128,top)
# 添加到墙壁列表中
MainGame.wall_list.append(wall)
墙壁加入到窗口
def display_wall(self) -> None:
'''
显示墙壁
'''
for wall in MainGame.wall_list:
# 显示墙壁
wall.display_wall()
子弹不能穿墙
子弹不能穿墙指子弹碰到墙壁后消失。因此,子弹类中新增方法,子弹与墙壁的碰撞,如果子弹与墙壁碰撞,修改子弹的状态。另外还需要将墙壁的生命值减少,如果墙壁的生命值小于等于零时候修改墙壁的状态。
#新增子弹与墙壁的碰撞
def hit_wall(self):
'''
碰撞墙壁
'''
for wall in MainGame.wall_list:
# 判断是否碰撞
if collide_rect(self,wall):
# 修改子弹的状态
self.live = False
设置我方与敌方坦克子弹移动时,增加碰撞检测
def display_enemy_bullet(self) -> None:
'''
显示敌方子弹
'''
for e_bullet in MainGame.enemy_bullet_list:
# 显示子弹
if e_bullet.live:
# 如果子弹存活,显示子弹
e_bullet.display_bullet()
e_bullet.move()
# 判断是否击中我方坦克
e_bullet.hit_my_tank()
# 判断是否击中墙壁
e_bullet.hit_wall()
else:
# 如果子弹不存活,从列表中移除
MainGame.enemy_bullet_list.remove(e_bullet)
def display_my_bullet(self) -> None:
'''
显示我方子弹
'''
for my_bullet in MainGame.my_bullet_list:
# 判断子弹是否存活
if my_bullet.live:
# 显示我方子弹
my_bullet.display_bullet()
# 移动我方子弹
my_bullet.move()
# 判断我方子弹是否击中敌方坦克
my_bullet.hit_enemy_tank()
# 判断我方子弹是否击中墙壁
my_bullet.hit_wall()
else:
# 从列表中移除
MainGame.my_bullet_list.remove(my_bullet)
设置墙壁耐久
设置墙壁生命值与存活状态
class Wall:
'''
墙壁类
'''
def __init__(self,left,top) -> None:
# 加载图片
self.image = pygame.image.load('./img/steels.gif')
# 获取墙壁的图形
self.rect = self.image.get_rect()
# 设置墙壁的位置
self.rect.left = left
self.rect.top = top
# 设置墙壁的生命值
self.hp = 3
# 设置墙壁的状态
self.live = True
修改子弹碰撞墙壁逻辑
class Bullet:
'''
子弹类
'''
def hit_wall(self):
'''
碰撞墙壁
'''
for wall in MainGame.wall_list:
# 判断是否碰撞
if collide_rect(self,wall):
# 修改子弹的状态
self.live = False
# 修改墙壁的生命值
wall.hp -= 1
# 判断墙壁是否依然显示
if wall.hp <= 0:
wall.live = False
修改显示墙壁逻辑
def display_wall(self) -> None:
'''
显示墙壁
'''
for wall in MainGame.wall_list:
if wall.live:
# 显示墙壁
wall.display_wall()
else:
# 从列表中移除
MainGame.wall_list.remove(wall)
坦克不能穿墙功能
坦克不能穿墙指坦克一旦碰到墙壁则不能再移动,也就是需要修改坦克的坐标为移动之前的。因此在坦克类中新增属性oldLeft、oldTop记录移动之前的坐标,新增stay()、hitWalls()方法。
class Tank:
'''
坦克类
'''
def __init__(self) -> None:
self.live = True
# 记录坦克原来的位置
self.old_left = 0
self.old_top = 0
def move(self) -> None:
'''
坦克的移动
'''
# 记录坦克原来的位置,为了方便还原碰撞后的位置
self.old_left = self.rect.left
self.old_top = self.rect.top
if self.direction == "L":
# 判断坦克的位置是否已左边界
if self.rect.left > 0:
# 修改坦克的位置 离左边的距离 - 操作
self.rect.left = self.rect.left - self.speed
elif self.direction == "R":
# 判断坦克的位置是否已右边界
if self.rect.left + self.rect.width < SCREEN_WIDTH:
# 修改坦克的位置 离左边的距离 + 操作
self.rect.left = self.rect.left + self.speed
elif self.direction == "U":
# 判断坦克的位置是否已上边界
if self.rect.top > 0:
# 修改坦克的位置 离上边的距离 - 操作
self.rect.top = self.rect.top - self.speed
elif self.direction == "D":
# 判断坦克的位置是否已下边界
if self.rect.top + self.rect.height < SCREEN_HEIGHT:
# 修改坦克的位置 离上边的距离 + 操作
self.rect.top = self.rect.top + self.speed
def tank_hit_wall(self) -> None:
'''
坦克和墙壁的碰撞
'''
for wall in MainGame.wall_list:
# 检测当前坦克是否能和墙壁发生碰撞
if pygame.sprite.collide_rect(self,wall):
# 将位置还原到碰撞前的位置
self.rect.left = self.old_left
self.rect.top = self.old_top
坦克移动时,检测是否碰撞
def display_enemy_tank(self) -> None:
'''
显示敌方坦克
'''
for e_tank in self.enemy_tank_list:
# 判断敌方坦克是否存活
if e_tank.live:
# 显示敌方坦克
e_tank.display_tank()
# 移动敌方坦克
e_tank.rand_move()
# 判断是否与墙壁发生碰撞
e_tank.tank_hit_wall()
# 发射子弹
e_bullet = e_tank.shot()
# 判断是否有子弹
if e_bullet:
# 将子弹增加到列表中
MainGame.enemy_bullet_list.append(e_bullet)
else:
# 从列表中移除
self.enemy_tank_list.remove(e_tank)
# 判断我方坦克是否死亡
if MainGame.my_tank and MainGame.my_tank.live:
# 移动坦克
if MainGame.my_tank.remove:
MainGame.my_tank.move()
# 检测我方坦克是否与墙壁发生碰撞
MainGame.my_tank.tank_hit_wall()
双方坦克之间的碰撞检测
如果我方坦克碰撞到敌方坦克,则我方坦克再不能继续移动。同理如果敌方坦克碰撞到我方坦克也不能继续移动。
在坦克类中新增坦克与坦克碰撞的检测方法
class Tank:
def tank_collide_tank(self,tank):
'''
检测2个坦克是否碰撞
'''
# 判断是否都存活
if self.live and tank.live:
if pygame.sprite.collide_rect(self,tank):
# 将位置还原到碰撞前的位置
self.rect.left = self.old_left
self.rect.top = self.old_top
我方坦克移动后,调用是否与敌方坦克发生碰撞。
#根据坦克的开关状态调用坦克的移动方法
if MainGame.TANK_P1 and not MainGame.TANK_P1.stop:
MainGame.TANK_P1.move()
#调用碰撞墙壁的方法
MainGame.TANK_P1.hitWalls()
MainGame.TANK_P1.hitEnemyTank()
在敌方坦克类中,新增敌方坦克碰撞我方坦克的方法。
def hitMyTank(self):
if MainGame.TANK_P1 and MainGame.TANK_P1.live:
if pygame.sprite.collide_rect(self, MainGame.TANK_P1):
# 让敌方坦克停下来 stay()
self.stay()
敌方坦克添加到窗口时候,调用是否与我方坦克碰撞。
#将敌方坦克加入到窗口中
def blitEnemyTank(self):
for eTank in MainGame.EnemyTank_list:
if eTank.live:
eTank.displayTank()
# 坦克移动的方法
eTank.randMove()
#调用敌方坦克与墙壁的碰撞方法
eTank.hitWalls()
#敌方坦克是否撞到我方坦克
eTank.hitMyTank()
# 调用敌方坦克的射击
eBullet = eTank.shot()
# 如果子弹为None。不加入到列表
if eBullet:
# 将子弹存储敌方子弹列表
MainGame.Enemy_bullet_list.append(eBullet)
else:
MainGame.EnemyTank_list.remove(eTank)
音效处理
music是pygame中控制流音频的pygame模块,音乐模块与pygame.mixer紧密相连, pygame.mixer是一个用来处理声音的模块,其含义为“混音器”。游戏中对声音的处理一般包括制造声音和播放声音两部分。
初始化混合器
pygame.mixer.init()
加载一个播放音乐的文件
pygame.mixer.music.load()
开始播放音乐流
pygame.mixer.music.play()
初始化音效类
class Music():
def __init__(self,fileName):
self.fileName = fileName
#先初始化混合器
pygame.mixer.init()
pygame.mixer.music.load(self.fileName)
#开始播放音乐
def play(self):
pygame.mixer.music.play()
创建坦克时,添加音效。文章来源:https://www.toymoban.com/news/detail-849807.html
#创建我方坦克的方法
def creatMyTank(self):
# 创建我方坦克
MainGame.TANK_P1 = MyTank(400, 300)
#创建音乐对象
music = Music('img/start.wav')
#调用播放音乐方法
music.play()
我方坦克发射子弹时,添加音效。文章来源地址https://www.toymoban.com/news/detail-849807.html
elif event.key == pygame.K_SPACE:
print("发射子弹")
if len(MainGame.Bullet_list) < 3:
# 产生一颗子弹
m = Bullet(MainGame.TANK_P1)
# 将子弹加入到子弹列表
MainGame.Bullet_list.append(m)
music = Music('img/fire.wav')
music.play()
到了这里,关于pygame--坦克大战(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!