飞机大战Python程序.docx
- 文档编号:8399591
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:5
- 大小:15.54KB
飞机大战Python程序.docx
《飞机大战Python程序.docx》由会员分享,可在线阅读,更多相关《飞机大战Python程序.docx(5页珍藏版)》请在冰豆网上搜索。
飞机大战Python程序
importpygame
fromplane_spritesimport*
classPlaneGame(object):
#初始化开始游戏类方法启动游戏
def__init__(self):
#创建窗口时钟调用创建精灵方法
self.screen=pygame.display.set_mode(SCREEN_RECT.size)
self.clock=pygame.time.Clock()
self.__create_spites()
pygame.time.set_timer(CREATE_ENEMY_EVENT,1000)
pygame.time.set_timer(HERO_FIRE_EVENT,500)
#添加精灵
def__create_spites(self):
#背景精灵
bg1=BackGroup()
bg2=BackGroup(True)
self.back_ground=pygame.sprite.Group(bg1,bg2)
#敌机精灵
self.enemy_group=pygame.sprite.Group()
#英雄精灵
self.hero=Hero()
self.hero_group=pygame.sprite.Group(self.hero)
#监听
def__event_handler(self):
#关闭×退出游戏
foreventinpygame.event.get():
ifevent.type==pygame.QUIT:
PlaneGame.__Gameover()
elifevent.type==CREATE_ENEMY_EVENT:
#创建敌机d
enemy=Enemy()
self.enemy_group.add(enemy)
elifevent.type==HERO_FIRE_EVENT:
self.hero.fire()
#按键
keys_pressed=pygame.key.get_pressed()
ifkeys_pressed[pygame.K_RIGHT]:
self.hero.speed=2
elifkeys_pressed[pygame.K_LEFT]:
self.hero.speed=-2
else:
self.hero.speed=0
#碰撞检测
def__check_collide(self):
pygame.sprite.groupcollide(self.hero.bullets,self.enemy_group,True,True)
enemys=pygame.sprite.spritecollide(self.hero,self.enemy_group,True)
iflen(enemys)>0:
self.hero.kill()
PlaneGame.__Gameover()
#更新图象更新屏幕
def__update_sprites(self):
self.back_ground.update()
self.back_ground.draw(self.screen)
self.enemy_group.update()
self.enemy_group.draw(self.screen)
self.hero_group.update()
self.hero_group.draw(self.screen)
self.hero.bullets.update()
self.hero.bullets.draw(self.screen)
#游戏结束
@staticmethod
def__Gameover():
pygame.quit()
exit()
defstart_game(self):
#时钟监听碰撞检测更新图象更新屏幕结束
self.clock.tick(FRAME_PER_SEC)
self.__event_handler()
self.__check_collide()
self.__update_sprites()
pygame.display.update()
if__name__=="__main__":
#创建对象
game=PlaneGame()
#启动游戏
whileTrue:
game.start_game()
importrandom
importpygame
#定义常量
SCREEN_RECT=pygame.Rect(0,0,480,700)
FRAME_PER_SEC=60
CREATE_ENEMY_EVENT=pygame.USEREVENT
HERO_FIRE_EVENT=pygame.USEREVENT+1
classGameSprite(pygame.sprite.Sprite):
def__init__(self,image_name,speed=1):
super().__init__()
self.image=pygame.image.load(image_name)
self.rect=self.image.get_rect()
self.speed=speed
defupdate(self):
self.rect.y+=self.speed
classBackGroup(GameSprite):
def__init__(self,is_alt=False):
super().__init__(".\images\huibeijing.png")
ifis_alt:
self.rect.y=-self.rect.height
#背景精灵
defupdate(self):
super().update()
ifself.rect.y>=SCREEN_RECT.height:
self.rect.y=-self.rect.height
classEnemy(GameSprite):
#随机精灵
#调用父类,图片
def__init__(self):
super().__init__(".\images\diji1.png")
#随机速度
self.speed=random.randint(1,3)
#随机位置
self.rect.bottom=0
max_x=SCREEN_RECT.width-self.rect.width
self.rect.x=random.randint(0,max_x)
defupdate(self):
#调用父类
super().update()
#判断是否删除
ifself.rect.y>=SCREEN_RECT.height:
self.kill()
def__del__(self):
#print("敌机挂了")
pass
classHero(GameSprite):
#英雄图片
def__init__(self):
super().__init__(".\images\eiji1.png",0)
self.rect.centerx=SCREEN_RECT.centerx
self.rect.bottom=SCREEN_RECT.bottom-120
self.bullets=pygame.sprite.Group()
defupdate(self):
self.rect.x+=self.speed
ifself.rect.x<0:
self.rect.x=0
elifself.rect.right>SCREEN_RECT.right:
self.rect.right=SCREEN_RECT.right
deffire(self):
foriin(0,1,2):
bullet=Bullet()
bullet.rect.bottom=self.rect.y-i*20
bullet.rect.centerx=self.rect.centerx
self.bullets.add(bullet)
classBullet(GameSprite):
def__init__(self):
super().__init__(".\images\zidan1.png",-2)
defupdate(self):
super().update()
ifself.rect.bottom<0:
self.kill()
def__del__(self):
pass
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 飞机 大战 Python 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)