17.新增功能:实现爆炸效果类 ,在窗口中展示爆炸效果

"""
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:
            <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oo0day

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值