基于对面向对象编程的思想完成简单的坦克大战游戏。主要目的锻炼面相对象编程思想
同样的在使用python进行游戏编写时需要安装pygame模块
<>强安装方法:强>
pycharm安装方式:文件——比;设置
游戏中的主要对象有:
坦克父类: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实现简单坦克大战