Python坦克大战代码.rar

  • k6_190910
    了解作者
  • 778KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-15 01:47
    上传日期
Python的坦克大战的源代码,初学Python的小白练习和模仿,结构简单,明了,易懂。工程文件分开建造,测试阶段合理
代码.rar
  • 代码
  • img
  • fire.wav
    67.6KB
  • blast0.gif
    744B
  • enemy1U.gif
    3.6KB
  • steels.gif
    1.7KB
  • start.wav
    862.6KB
  • p1tankL.gif
    3.5KB
  • enemy1D.gif
    3.6KB
  • enemy1L.gif
    3.6KB
  • p1tankD.gif
    3.4KB
  • enemymissile.gif
    377B
  • enemy1R.gif
    3.6KB
  • blast1.gif
    1.9KB
  • blast4.gif
    5.6KB
  • blast2.gif
    2.6KB
  • p1tankR.gif
    3.5KB
  • blast3.gif
    3.7KB
  • p1tankU.gif
    3.4KB
  • hit.wav
    22.6KB
  • tank23.py
    19.8KB
  • tank22.py
    19KB
  • tank20.py
    17.2KB
  • tank19.py
    16.8KB
  • tank16.py
    13KB
  • tank15.py
    12KB
  • tank18.py
    15.5KB
  • tank17.py
    14.1KB
  • tank21.py
    18.2KB
  • tank25.py
    21KB
  • tank24.py
    20.6KB
内容介绍
''' 新增功能: 1.完善音效类 2.添加开场音效 3.我方坦克发射子弹添加音效 ''' #导入pygame模块 import pygame,time,random from pygame.sprite import Sprite SCREEN_WIDTH=800 SCREEN_HEIGHT=500 BG_COLOR=pygame.Color(0,0,0) TEXT_COLOR=pygame.Color(255,0,0) #定义一个基类 class BaseItem(Sprite): def __init__(self, color, width, height): # Call the parent class (Sprite) constructor pygame.sprite.Sprite.__init__(self) class MainGame(): window=None my_tank=None #存储敌方坦克的列表 enemyTankList=[] #定义敌方坦克的数量 enemyTankCount=5 #存储我方子弹的列表 myBulletList=[] #存储敌方子弹的列表 enemyBulletList=[] #存储爆炸效果的列表 explodeList=[] #存储墙壁的列表 wallList=[] def __init__(self): pass #开始游戏 def startGame(self): #加载主窗口 #初始化窗口 pygame.display.init() #设置窗口的大小及显示 MainGame.window=pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT]) #初始化我方坦克 self.createMytank() #初始化敌方坦克,并将敌方坦克添加到列表中 self.createEnemyTank() #初始化墙壁 self.createWall() #设置窗口的标题 pygame.display.set_caption('坦克大战1.03') while True: #使用坦克移动的速度慢一点 time.sleep(0.02) #给窗口设置填充色 MainGame.window.fill(BG_COLOR) #获取事件 self.getEvent() #绘制文字 MainGame.window.blit(self.getTextSuface('敌方坦克剩余数量%d'%len(MainGame.enemyTankList)),(10,10)) #调用坦克显示的方法 #判断我方坦克是否是否存活 if MainGame.my_tank and MainGame.my_tank.live: MainGame.my_tank.displayTank() else: #删除我方坦克 del MainGame.my_tank MainGame.my_tank=None #循环遍历敌方坦克列表,展示敌方坦克 self.blitEnemyTank() #循环遍历显示我方坦克的子弹 self.blitMyBullet() #循环遍历敌方子弹列表,展示敌方子弹 self.blitEnemyBullet() #循环遍历爆炸列表,展示爆炸效果 self.blitExplode() #循环遍历墙壁列表,展示墙壁 self.blitWall() #调用移动方法 #如果坦克的开关是开启,才可以移动 if MainGame.my_tank and MainGame.my_tank.live: if not MainGame.my_tank.stop: MainGame.my_tank.move() #检测我方坦克是否与墙壁发生碰撞 MainGame.my_tank.hitWall() #检测我方坦克是否与敌方坦克发生碰撞 MainGame.my_tank.myTank_hit_enemyTank() pygame.display.update() # 循环遍历墙壁列表,展示墙壁 def blitWall(self): for wall in MainGame.wallList: #判断墙壁是否存活 if wall.live: #调用墙壁的显示方法 wall.displayWall() else: #从墙壁列表移出 MainGame.wallList.remove(wall) #初始化墙壁 def createWall(self): for i in range(6): #初始化墙壁 wall=Wall(i*130,220) #将墙壁添加到列表中 MainGame.wallList.append(wall) #创建我方坦克的方法 def createMytank(self): MainGame.my_tank = MyTank(350, 300) #创建Music对象 music=Music('img/start.wav') #播放音乐 music.play() # 初始化敌方坦克,并将敌方坦克添加到列表中 def createEnemyTank(self): top=100 #循环生成敌方坦克 for i in range(MainGame.enemyTankCount): left=random.randint(0,600) speed=random.randint(1,4) enemy=EnemyTank(left,top,speed) MainGame.enemyTankList.append(enemy) #循环展示爆炸效果 def blitExplode(self): for explode in MainGame.explodeList: #判断是否活着 if explode.live: #展示 explode.displayExplode() else: #在爆炸列表中移除 MainGame.explodeList.remove(explode) # 循环遍历敌方坦克列表,展示敌方坦克 def blitEnemyTank(self): for enemyTank in MainGame.enemyTankList: #判断当前敌方坦克是否活着 if enemyTank.live: enemyTank.displayTank() enemyTank.randMove() #调用检测是否与墙壁碰撞 enemyTank.hitWall() #检测敌方坦克是否与我方坦克发生碰撞 if MainGame.my_tank and MainGame.my_tank.live: enemyTank.enemyTank_hit_myTank() # 发射子弹 enemyBullet = enemyTank.shot() # 敌方子弹是否是None,如果不为None则添加到敌方子弹列表中 if enemyBullet: # 将敌方子弹存储到敌方子弹列表中 MainGame.enemyBulletList.append(enemyBullet) else:#不活着,从敌方坦克列表中移除 MainGame.enemyTankList.remove(enemyTank) #循环遍历我方子弹存储列表 def blitMyBullet(self): for myBullet in MainGame.myBulletList: #判断当前的子弹是否是活着状态,如果是则进行显示及移动, if myBullet.live: myBullet.displayBullet() # 调用子弹的移动方法 myBullet.move() #调用检测我方子弹是否与敌方坦克发生碰撞 myBullet.myBullet_hit_enemyTank() # 检测我方子弹是否与墙壁碰撞 myBullet.hitWall() # 否则在列表中删除 else: MainGame.myBulletList.remove(myBullet) # 循环遍历敌方子弹列表,展示敌方子弹 def blitEnemyBullet(self): for enemyBullet in MainGame.enemyBulletList: if enemyBullet.live: #判断敌方子弹是否存活 enemyBullet.displayBullet() enemyBullet.move() #调用敌方子弹与我方坦克碰撞的方法 enemyBullet.enemyBullet_hit_myTank() #检测敌方子弹是否与墙壁碰撞 enemyBullet.hitWall() else: MainGame.enemyBulletList.remove(enemyBullet) #结束游戏 def endGame(self): print('谢谢使用,欢迎再次使用') exit() #左上角文字的绘制 def getTextSuface(self,text): #初始化字体模块 pygame.font.init() #查看所有的字体名称 # print(pygame.font.get_fonts()) #获取字体Font对象 font=pygame.font.SysFont('kaiti',18) #绘制文字信息 textSurface=font.render(text,True,TEXT_COLOR) return textSurface #获取事件 def getEvent(self): #获取所有事件 eventList= pygame.event.get() #遍历事件 for event in eventList: #判断按下的键是关闭还是键盘按下 #如果按的是退出,关闭窗口 if event.type == pygame.QUIT: self.endGame() #如果是键盘的按下
评论
    相关推荐
    • Python
      Python
    • python
      Python 这是用于大多数基本和简单python代码的示例模板的存储库。
    • Python
      Python项目 Python是一些简单的Python项目,它是一种解释性的高级通用编程语言,我愿意学习它为将来的许多项目做出贡献! 入门 您必须安装Python 3.9.2才能尝试这些项目。 这些项目来自各种书籍,您可以根据需要进行...
    • Python
      Python Dit是Mijn储存库van Python
    • python
      Python 基本的python编程
    • Python
      Python python和pyspark
    • Python教程
      本手册不会尝试涵盖 Python 的全部知识和每个特性,甚至不会涵盖所有常用的特性。相反地,它介绍了 Python 中许多最引人瞩目的特性,并且会给你一个关于语言特色和风格的认识。读完之后,你将能够阅读和编写 Python ...
    • python学习
      python学习 安装Python 我们转到Python页面进行初始下载:( )在为Mac OSX选择了最新版本(3.9.2)之后,我将其下载到了我的计算机上。 然后,我们搜索了“ Python入门”,并确认VS Code是适用于Python的可行代码...
    • Fluent Python
      This book was written for practicing Python programmers who want to become proficient in Python 3. If you know Python 2 but are willing to migrate to Python 3.4 or later, you should be fine. At the ...
    • Python
      Python 该存储库包含与Python编程研究相关的文档