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

我相信这个游戏的话对于大家可能会比较难,刚开始学习的话这个代码就直接发给大家玩一玩的
哈,但是大家可以看看这个代码啦!
当然基础好的话可以考虑看完后尝试做一个类似的游戏,然后遇到不懂的地方可以来我的粉丝裙,
没有基础的同学也不用担心:偶尔有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)

最低0.47元/天 解锁文章
2370

被折叠的 条评论
为什么被折叠?



