【Pygame小游戏】神还原【欢乐无穷的双人坦克大战】小程序游戏,上手开玩~(附完整源码)

   前言

嘿!我是栗子同学,欢迎大家阅读这篇《坦克大战双人版游戏编程》。

我相信这个游戏的话对于大家可能会比较难,刚开始学习的话这个代码就直接发给大家玩一玩的

哈,但是大家可以看看这个代码啦!

当然基础好的话可以考虑看完后尝试做一个类似的游戏,然后遇到不懂的地方可以来我的粉丝裙,

没有基础的同学也不用担心:偶尔有Python免费的在线直播互动课哟,大家可以跟着我一起学习,我带大家入门。

好啦,总之我所有的文章源码+素材都是可以免费拿的,需要的滴滴我哈!也欢迎大家阅读往期的文章。

《坦克大战双人版》

游戏介绍:

双人版的《坦克大战》的基本规则是玩家消灭出现的敌方坦克保卫我方基地。

中间还会随机出现很多特殊道具吸收可获得相应的功能,消灭玩即可进入下一关。

方向键:上下左右移动即可。另一个方向键则是:WSAD。

环境配置:

Python3、 Pycharm 、Pygame。

第三方库的安装:pip  install pygame

效果展示:

开始界面一一

开始即可上手玩游戏,还有背景音乐辅助!游戏玩儿起来更带感!

 游戏界面——

代码演示:

1)游戏主程序



import pygame
import sys
import traceback
import wall
import myTank
import enemyTank
import food
    

def main():
    pygame.init()
    pygame.mixer.init()
    
    resolution = 630, 630
    screen = pygame.display.set_mode(resolution)
    pygame.display.set_caption("Tank War ")
    
    # 加载图片,音乐,音效.
    background_image     = pygame.image.load(r"..\image\background.png")
    home_image           = pygame.image.load(r"..\image\home.png")
    home_destroyed_image = pygame.image.load(r"..\image\home_destroyed.png")
    
    bang_sound          = pygame.mixer.Sound(r"..\music\bang.wav")
    bang_sound.set_volume(1)
    fire_sound           = pygame.mixer.Sound(r"..\music\Gunfire.wav")
    start_sound          = pygame.mixer.Sound(r"..\music\start.wav")
    start_sound.play()
    
    # 定义精灵组:坦克,我方坦克,敌方坦克,敌方子弹
    allTankGroup     = pygame.sprite.Group()
    mytankGroup      = pygame.sprite.Group()
    allEnemyGroup    = pygame.sprite.Group()
    redEnemyGroup    = pygame.sprite.Group()
    greenEnemyGroup  = pygame.sprite.Group()
    otherEnemyGroup  = pygame.sprite.Group()  
    enemyBulletGroup = pygame.sprite.Group()
    # 创建地图 
    bgMap = wall.Map()
    # 创建食物/道具 但不显示
    prop = food.Food()
    # 创建我方坦克
    myTank_T1 = myTank.MyTank(1)
    allTankGroup.add(myTank_T1)
    mytankGroup.add(myTank_T1)
    myTank_T2 = myTank.MyTank(2)
    allTankGroup.add(myTank_T2)
    mytankGroup.add(myTank_T2)
    # 创建敌方 坦克
    for i in range(1, 4):
            enemy = enemyTank.EnemyTank(i)
            allTankGroup.add(enemy)
            allEnemyGroup.add(enemy)
            if enemy.isred == True:
                redEnemyGroup.add(enemy)
                continue
            if enemy.kind == 3:
                greenEnemyGroup.add(enemy)
                continue
            otherEnemyGroup.add(enemy)
    # 敌军坦克出现动画
    appearance_image = pygame.image.load(r"..\image\appear.png").convert_alpha()
    appearance = []
    appearance.append(appearance_image.subsurface(( 0, 0), (48, 48)))
    appearance.append(appearance_image.subsurface((48, 0), (48, 48)))
    appearance.append(appearance_image.subsurface((96, 0), (48, 48)))
    
    
    
    
    # 自定义事件
    # 创建敌方坦克延迟200
    DELAYEVENT = pygame.constants.USEREVENT
    pygame.time.set_timer(DELAYEVENT, 200)
    # 创建 敌方 子弹延迟1000
    ENEMYBULLETNOTCOOLINGEVENT = pygame.constants.USEREVENT + 1
    pygame.time.set_timer(ENEMYBULLETNOTCOOLINGEVENT, 1000)
    # 创建 我方 子弹延迟200
    MYBULLETNOTCOOLINGEVENT = pygame.constants.USEREVENT + 2
    pygame.time.set_timer(MYBULLETNOTCOOLINGEVENT, 200)
    # 敌方坦克 静止8000
    NOTMOVEEVENT = pygame.constants.USEREVENT + 3
    pygame.time.set_timer(NOTMOVEEVENT, 8000)
    
    
    delay = 100
    moving = 0
    movdir = 0
    moving2 = 0
    movdir2 = 0
    enemyNumber = 3
    enemyCouldMove      = True
    switch_R1_R2_image  = True
    homeSurvive         = True
    running_T1          = True
    running_T2          = True
    clock = pygame.time.Clock()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            
            # 我方子弹冷却事件
            if event.type == MYBULLETNOTCOOLINGEVENT:
                myTank_T1.bulletNotCooling = True
                
            # 敌方子弹冷却事件
            if event.type == ENEMYBULLETNOTCOOLINGEVENT:
                for each in allEnemyGroup:
                    each.bulletNotCooling = True
            
            # 敌方坦克静止事件
            if event.type == NOTMOVEEVENT:
                enemyCouldMove = True
            
            # 创建敌方坦克延迟
            if event.type == DELAYEVENT:
                if enemyNumber < 4:
                    enemy = enemyTank.EnemyTank()
                    if pygame.sprite.spritecollide(enemy, allTankGroup, False, None):
                        break
                    allEnemyGroup.add(enemy)
                    allTankGroup.add(enemy)
                    enemyNumber += 1
                    if enemy.isred == True:
                        redEnemyGroup.add(enemy)
                    elif enemy.kind == 3:
                        greenEnemyGroup.add(enemy)
                    else:
                        otherEnemyGroup.add(enemy)
                                
   
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值