首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

python实现坦克大战

游戏开发 1.19MB 14 需要积分: 1
立即下载

资源介绍:

python写的坦克大战,有点地方不太完善
import pygame import time import random import warnings # 图片颜色配置有问题的警告,通过1.py中的方法将图片ICC配置进行删除 warnings.filterwarnings("ignore", message="iCCP: known incorrect sRGB profile") class MainGame(): # 游戏主窗口 window = None SCREEN_WIDTH = 800 SCREEN_HEIGHT = 500 # 创建我方坦克 TANK_P1 = None # 存储所有敌方坦克 EnemyTank_list = [] # 创建敌方坦克的数量 EnemyTank_count = 5 # 存储我方子弹的列表 Bullet_list = [] # 存储敌方子弹的列表 Enemy_bullet_list = [] # 爆炸效果列表 Explode_list = [] # 墙壁列表 Wall_list = [] # 开始游戏方法 def startGame(self): pygame.display.init() # 创建窗口加载函数 MainGame.window = pygame.display.set_mode([MainGame.SCREEN_WIDTH,MainGame.SCREEN_HEIGHT]) self.createMyTank() # 创建我方坦克 # MainGame.TANK_P1 = Tank(400,300) # 创建敌方坦克 self.createEnemyTank() self.createWalls() # 设置一下游戏标题 pygame.display.set_caption("坦克大战") # 让窗口持续刷新操作 while True: MainGame.window.fill(pygame.Color(0,0,0)) # 在循环中完成事件的获取 self.getEvent() # 将绘制文字得到的小画布,粘贴到窗口中 MainGame.window.blit(self.getTextSurface("剩余地方坦克%d辆"%len(MainGame.EnemyTank_list)),(5,5)) # 展示墙壁 self.blitWalls() # 将我方坦克加入到窗口中 if MainGame.TANK_P1 and MainGame.TANK_P1.live: MainGame.TANK_P1.displayTank() else: del MainGame.TANK_P1 MainGame.TANK_P1 = None # 循环展示敌方坦克 self.blitEnemyTank() # 根据坦克的开关调用坦克的移动方法 if MainGame.TANK_P1 and not MainGame.TANK_P1.stop: MainGame.TANK_P1.move() MainGame.TANK_P1.hitWalls() MainGame.TANK_P1.hitEnemyTank() # 调用渲染我方子弹列表的方法 self.blitBullet() # 调用渲染我方子弹列表的方法 self.blitEnemyBullet() # 调用爆炸效果方法 self.displayExplode() # 给窗口完成一个填充颜色 time.sleep(0.02) pygame.display.update() # 创建敌方坦克 def createEnemyTank(self): top = 100 for i in range(MainGame.EnemyTank_count): speed = random.randint(3, 6) left = random.randint(1, 7) eTank = EnemyTank(left*100,top,speed) MainGame.EnemyTank_list.append(eTank) def createMyTank(self): MainGame.TANK_P1 = MyTank(400, 300) # 创建音乐对象 music = Music("tank/start.wav") # 调用播放方法 music.play() def createWalls(self): for i in range(1,7): wall = Wall(120*i,240) MainGame.Wall_list.append(wall) def blitWalls(self): for wall in MainGame.Wall_list: if wall.live: wall.displayWall() else: MainGame.Wall_list.remove(wall) # 将敌方坦克加入到窗口中 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) # 将我方子弹渲染到窗口中 def blitBullet(self): for bullet in MainGame.Bullet_list: if bullet.live: bullet.displayBullet() # 让子弹移动 bullet.bulletMove() # 调用我方子弹与敌方坦克的碰撞方法 bullet.hitEnemyTank() # 调用判断子弹是否与墙壁发生碰撞 bullet.hitWalls() else: MainGame.Bullet_list.remove(bullet) # 将敌方子弹加入到窗口中 def blitEnemyBullet(self): for eBullet in MainGame.Enemy_bullet_list: if eBullet.live: eBullet.displayBullet() # 让子弹移动 eBullet.bulletMove() # 调用判断子弹是否与墙壁发生碰撞 eBullet.hitWalls() if MainGame.TANK_P1 and MainGame.TANK_P1.live: eBullet.hitMyTank() else: MainGame.Enemy_bullet_list.remove(eBullet) # 展示爆炸效果列表 def displayExplode(self): for explode in MainGame.Explode_list: if explode.live: explode.displayExplode() music = Music("tank/bang.wav") music.play() else: MainGame.Explode_list.remove(explode) # 获取程序运行期间所有的事件 def getEvent(self): # 1.获取所有事件 eventList = pygame.event.get() # 2. 对事件进行判断处理 for event in eventList: # 判断event.type 是否为QUIT,如果退出的话,直接条用成簇结束方法 if event.type == pygame.QUIT: self.endGame() # 判断事件类型是否为按键按下,如果是,继续判断按键是哪一个 if event.type == pygame.KEYDOWN: # 点击ESC按键让我方坦克重生 if event.key == pygame.K_ESCAPE and not MainGame.TANK_P1: # 调用创建MyTank函数 self.createMyTank() if MainGame.TANK_P1 and MainGame.TANK_P1.live: # 具体是哪一个按键的处理 if event.key == pygame.K_LEFT: print("坦克向左调头,移动") # 修改坦克方向 MainGame.TANK_P1.direction = 'L' MainGame.TANK_P1.stop = False elif event.key == pygame.K_RIGHT: print("坦克向右调头,移动") # 修改坦克方向 MainGame.TANK_P1.direction = 'R' MainGame.TANK_P1.stop = False elif event.key == pygame.K_UP: print("坦克向上调头,移动") # 修改坦克方向 MainGame.TANK_P1.direction = 'U' MainGame.TANK_P1.stop = False elif event.key == pygame.K_DOWN: print("坦克向下调头,移动") # 修改坦克方向 MainGame.TANK_P1.direction = 'D' MainGame.TANK_P1.stop = False elif event.key == pygame.K_SPACE: print("发射子弹") if len(MainGame.Bullet_list) < 3: # 产生一颗子弹 m = Bullet(MainGame.TANK_P1) # 将子弹加入到子弹列表 MainGame

资源文件列表:

tank.zip 大约有47个文件
  1. tank/
  2. tank/tank/
  3. tank/tank/add.wav 127.59KB
  4. tank/tank/background.jpg 74.69KB
  5. tank/tank/bang.wav 9.49KB
  6. tank/tank/blast.wav 52.88KB
  7. tank/tank/boom_dynamic_00.png 4.04KB
  8. tank/tank/boom_dynamic_00_fixed.png 1.48KB
  9. tank/tank/boom_dynamic_01.png 5KB
  10. tank/tank/boom_dynamic_01_fixed.png 2.45KB
  11. tank/tank/boom_dynamic_02.png 5.53KB
  12. tank/tank/boom_dynamic_02_fixed.png 2.97KB
  13. tank/tank/boom_dynamic_03.png 7.96KB
  14. tank/tank/boom_dynamic_03_fixed.png 5.4KB
  15. tank/tank/boom_dynamic_04.png 9.11KB
  16. tank/tank/boom_dynamic_04_fixed.png 6.55KB
  17. tank/tank/boom_dynamic_05.png 5.62KB
  18. tank/tank/boom_dynamic_05_fixed.png 3.06KB
  19. tank/tank/brick.png 636B
  20. tank/tank/bullet_down.png 105B
  21. tank/tank/bullet_left.png 109B
  22. tank/tank/bullet_right.png 109B
  23. tank/tank/bullet_up.png 105B
  24. tank/tank/bullet_up_fixed.png 105B
  25. tank/tank/enemy_down.png 1006B
  26. tank/tank/enemy_left.png 984B
  27. tank/tank/enemy_right.png 989B
  28. tank/tank/enemy_up.png 1009B
  29. tank/tank/fire.wav 67.59KB
  30. tank/tank/Gunfire.wav 1.9KB
  31. tank/tank/hit.wav 790B
  32. tank/tank/others/
  33. tank/tank/others/appear.png 15.42KB
  34. tank/tank/others/boom_dynamic.png 87.99KB
  35. tank/tank/others/boom_static.png 22.14KB
  36. tank/tank/others/protect1.png 211B
  37. tank/tank/others/protect2.png 220B
  38. tank/tank/start.wav 862.59KB
  39. tank/tank/tank_down.png 1021B
  40. tank/tank/tank_down_fixed.png 1021B
  41. tank/tank/tank_left.png 993B
  42. tank/tank/tank_left_fixed.png 993B
  43. tank/tank/tank_right.png 992B
  44. tank/tank/tank_right_fixed.png 992B
  45. tank/tank/tank_up.png 1022B
  46. tank/tank/tank_up_fixed.png 1022B
  47. tank/tank.py 18.29KB
0评论
提交 加载更多评论
其他资源 鼠标选择点云某个点,就打印某个点的坐标
深度学习点云处理,往往需要知道某个点的坐标然后进行标注,希望鼠标选择点云某个点,就打印某个点的坐标。
测试文件顺德区奥德赛dao
测试文件顺德区奥德赛dao
测试文件顺德区奥德赛dao
DLTJNJ1993-2023.zip
本资源详情请看关联的文章,文章里会详细描述资源的具体内容。 以下内容为过审需求: 假设我们想确定三种不同的运动方案是否对减肥有不同的影响。我们正在研究的预测变量是锻炼计划,响应变量(response variable)是体重减轻,以磅为单位。我们可以进行一个单因素方差分析,以确定三个方案的结果体重减轻之间是否有统计学意义上的差异。 我们招募了91人参加一个实验,在这个实验中,我们随机分配31人跟随方案A,方案B或方案C2个月,以确定三个方案的结果体重减轻之间是否有统计学意义上的差异。 dataframe的第一列显示了该人参加了2个月的项目(A、B、C),第二列显示了该人在项目结束时经历的总体重减轻,以磅为单位。
DLTJNJ1993-2023.zip
3.+LSLIDAR_CX_ROS_V4.3.1_240409.zip
3.+LSLIDAR_CX_ROS_V4.3.1_240409.zip
江协科技STM32系列视频OLED模块调试代码
OLED(Organic Light Emitting Diode):有机发光二极管 OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点 供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64
open3d python 给点云每个点设置不同的颜色
open3d python 给点云每个点设置不同的颜色
html切积木小游戏试玩
html切积木小游戏试玩
简单的系统智能黑白棋小游戏
简单的系统智能黑白棋小游戏