"""
v1.18
新增功能:
1.实现爆炸效果类
2.在窗口中展示爆炸效果
"""
import pygame,time,random
_display = pygame.display
COLOR_BLACK = pygame.Color(0,0,0)
COLOR_RED = pygame.Color(255,0,0)
version = 'v1.18'
class Maingame():#游戏主逻辑类,1开始游戏 2结束游戏
#游戏主窗口
window = None
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 500
#创建我方坦克
TANK_P1 = None
#存储所有敌方坦克
EnemyTank_list = []
#要创建的敌方坦克数量
EnemyTank_count = 5
#存储我方子单的列表
Bullet_list = []
#存储敌方子弹的列表
Enemy_bullet_list = []
#增加爆炸效果列表
Explode_List = []
def __init__(self):
pass
#开始游戏方法
def startGame(self):
#创建窗口加载窗口
_display.init()
Maingame.window = _display.set_mode([Maingame.SCREEN_WIDTH,Maingame.SCREEN_HEIGHT])
#创建我方坦克
Maingame.TANK_P1 = Tank(300,400)
#创建敌方坦克
self.creatEnemyTank()
#设置游戏标题
_display.set_caption("坦克大战"+version)
#查找所有系统字体
#fontlist = pygame.font.get_fonts()
#print(fontlist)
#让窗口使用持续刷新操作
while True:
#给窗口完成一个填充颜色
Maingame.window.fill(COLOR_BLACK)
self.getEvent()
#将绘制文字得到的小画布,粘贴到窗口中
Maingame.window.blit(self.getTextSurface("剩余敌方坦克%d辆"%len(Maingame.EnemyTank_list)),(5,5))
#将我方坦克加入到窗口中
Maingame.TANK_P1.displayTank()
#循环展示敌方坦克
self.blitEnemyTank()
#根据坦克的开关调用坦克的移动方法
if Maingame.TANK_P1 and not Maingame.TANK_P1.stop:
Maingame.TANK_P1.move()
#调用渲染子弹列表的一个方法
self.blitBullet()
#调用渲染敌方子弹列表的一个方法
self.blitEnemyBullet()
#调用展示爆炸效果的方法
Maingame.displayExplodes(self)
time.sleep(0.02)
#窗口刷新
_display.update()
#创建敌方坦克
def creatEnemyTank(self):
top = 100
for i in range(Maingame.EnemyTank_count):
speed = random.randint(3, 6)
#每次都随机生成一个left值
left = random.randint(1, 7)
eTank = EnemyTank(left*100, top, speed)
Maingame.EnemyTank_list.append(eTank)
#将敌方坦克加入到窗口中
def blitEnemyTank(self):
for eTank in Maingame.EnemyTank_list:
if eTank.live:
eTank.displayTank()
# 坦克移动方法
eTank.randMove()
# 调用敌方坦克的射击方法
eBullet = eTank.shot()
# 如果子弹为None,不加入到列表
if eBullet:
# 将子弹存储到敌方子弹列表
Maingame.Enemy_bullet_list.append(eBullet)
else:
Maingame.EnemyTank_list.remove(eTank)
#将我方子弹加入到窗口中
def blitBullet(self):
for bullet in Maingame.Bullet_list:
<
17.新增功能:实现爆炸效果类 ,在窗口中展示爆炸效果
最新推荐文章于 2024-06-10 14:31:59 发布