python实现简单坦克大战

  

基于对面向对象编程的思想完成简单的坦克大战游戏。主要目的锻炼面相对象编程思想
  同样的在使用python进行游戏编写时需要安装pygame模块

  

<>强安装方法:

  

pycharm安装方式:文件——比;设置

  

 python实现简单坦克大战

  

游戏中的主要对象有:

  

坦克父类:BaseTank
  我方坦克:HeroTank
  敌方坦克:EnemyTank
  子弹类:子弹
  爆炸类:爆炸
  墙墙类:
  主进程:MainGame

  

<强>定义一个精灵类:

        #定义一个精灵类   类BaseItem(雪碧):   def __init__(自我、颜色、宽度、高度):   #调用父类构造函数(雪碧)   pygame.sprite.Sprite.__init__(自我)      

<强>坦克父类:

        #坦克父类   类BaseTank (BaseItem):   #定义类属性,所有坦克对象高和宽都是一样   宽度=60   身高=60      def __init__(自我、左、前):   自我。方向=' U ' #坦克的方向默认向上   #存放图片的字典   自我。图像={   “U”: pygame.image.load (' tank_img/p1tankU.gif '),   “D”: pygame.image.load (' tank_img/p1tankD.gif '),   “L”: pygame.image.load (' tank_img/p1tankL.gif '),   “R”: pygame.image.load (“tank_img/p1tankR.gif”)   }   自我。形象=self.images[自我。方向)#坦克的图片由方向决定   自我。速度=5 #坦克的速度   自我。矩形=self.image.get_rect ()   #设置放置的位置   self.rect。左=左   self.rect。前=前   自我。停止=True #坦克是否停止   自我。生活=True #决定坦克是否消灭了      #保持原来的位置   自我。oldLeft=self.rect.left   自我。oldTop=self.rect.top      #射击方法   def拍摄(自我):   返回子弹(自我)      #坦克的移动   def移动(自我):   #保持原来的状态   自我。oldLeft=self.rect.left   自我。oldTop=self.rect.top   #判断坦克的移动方向   如果自我。方向==癠”:   如果self.rect。最高的在0:   self.rect。最高-=self.speed   elif自我。==' D '方向:   如果self.rect。+ self.rect。高度& lt;WINDOW_HEIGHT:   self.rect。前+=self.speed   elif自我。方向==癓”:   如果self.rect。剩下的在0:   self.rect。左-=self.speed   elif自我。方向==癛”:   如果self.rect.left + self.rect。高度& lt;WINDOW_WIDTH:   self.rect。左+=self.speed      #加载坦克   def displayTank(自我):   自我。形象=self.images [self.direction]   MainGame.window.blit(自我。形象,self.rect)      #撞墙处理   def hitWall(自我):   在MainGame.wallList墙:   如果pygame.sprite。collide_rect(墙,自我):   self.stay ()      #处理位置不变   def呆(自我):   self.rect。左=self.oldLeft   self.rect。顶级=self.oldTop      

<强>我方坦克类():

        #我方坦克   类HeroTank (BaseTank):   def __init__(自我、左、前):   超级()。顶部__init__(左)      #我方坦克碰撞敌方坦克   def myTank_hit_enemyTank(自我):   在MainGame.EnemyTankList enemyTank:   如果pygame.sprite。collide_rect (enemyTank,自我):   self.stay ()      

<强>敌方坦克类():

        #敌方坦克   类EnemyTank (BaseTank):   def __init__(自我、左、前、速度):   超级(EnemyTank,自我)。顶部__init__(左)   自我。图像={   “U”: pygame.image.load (' tank_img/enemy1U.gif '),   “D”: pygame.image.load (' tank_img/enemy1D.gif '),   “L”: pygame.image.load (' tank_img/enemy1L.gif '),   “R”: pygame.image.load (“tank_img/enemy1R.gif”)   }      自我。方向=self.RandomDirection ()   自我。形象=self.images [self.direction]   自我。矩形=self.image.get_rect ()   self.rect。左=左   self.rect。前=前   自我。速度=速度   自我。一步=60   自我。enemy_flag=False      #坦克出生随机方向   def RandomDirection(自我):   num=随机的。randint (1、4)   如果num==1:   返回“U”   elif num==2:   返回' D '   elif num==3:   返回“L”   其他:   返回“R”      #坦克随机移动   def randomMove(自我):   如果自我。一步& lt;0:   自我。方向=self.RandomDirection ()   自我。一步=60   其他:   self.move ()   自我。一步——=1      #坦克射击   def拍摄(自我):   num=随机的。randint (100)   如果num & lt;4:   返回子弹(自我)      #敌方坦克碰撞我方坦克   def enemyTank_hit_MyTank(自我):   敌人在MainGame.EnemyTankList:   如果MainGame。my_tank MainGame.my_tank.live:   如果pygame.sprite.collide_rect (MainGame。my_tank,敌人):   self.stay ()

python实现简单坦克大战