資源簡介
模仿微信的打飛機(jī)游戲
代碼片段和文件信息
#!/usr/bin/env.python
#?_*_coding:utf-8_*_
from?plane_sprites?import?*
class?PlaneGame(object):
????#?飛機(jī)大戰(zhàn)主游戲類
????def?__init__(self):
????????print(“游戲初始化“)
????????#?1.創(chuàng)建游戲的窗口
????????self.screen?=?pygame.display.set_mode(SCREEN_RECT.size)
????????#?2.創(chuàng)建游戲的時鐘
????????self.clock?=?pygame.time.Clock()
????????#?3.調(diào)用私有方法,精靈和精靈組的創(chuàng)建
????????self.__create_sprites()
????????#?設(shè)置定時器事件?-?創(chuàng)建敵機(jī)1s
????????pygame.time.set_timer(CREATE_ENEMY_EVENT?1000)
????????pygame.time.set_timer(HERO_FIRE_EVENT?500)
????def?__create_sprites(self):
????????#?創(chuàng)建背景精靈和精靈組
????????bg1?=?Background()
????????bg2?=?Background(True)
????????self.back_group?=?pygame.sprite.Group(bg1?bg2)
????????#?創(chuàng)建敵機(jī)的精靈組
????????self.enemy_group?=?pygame.sprite.Group()
????????#?創(chuàng)建英雄的精靈和精靈組
????????self.hero?=?Hero()
????????self.hero_group?=?pygame.sprite.Group(self.hero)
????def?start_game(self):
????????print(“游戲開始...“)
????????while?True:
????????????#?1.設(shè)置刷新幀率
????????????self.clock.tick(frame_PER_SEC)
????????????#?2.事件監(jiān)聽
????????????self.__event_handler()
????????????#?3.碰撞檢測
????????????self.__check_collide()
????????????#?4.更新/繪制精靈組
????????????self.__update_sprites()
????????????#?5.更新屏幕顯示
????????????pygame.display.update()
????def?__event_handler(self):
????????‘‘‘事件監(jiān)控‘‘‘
????????for?event?in?pygame.event.get():
????????????#?判斷是否退出游戲
????????????if?event.type?==?pygame.QUIT:
????????????????PlaneGame.__game_over()
????????????elif?event.type?==?CREATE_ENEMY_EVENT:
????????????????#?print(“敵機(jī)出場...“)
????????????????#?創(chuàng)建敵機(jī)精靈
????????????????enemy?=?Enemy()
????????????????#?將敵機(jī)精靈添加到敵機(jī)精靈組
????????????????self.enemy_group.add(enemy)
????????????elif?event.type?==?HERO_FIRE_EVENT:
????????????????self.hero.fire()
????????#?使用鍵盤提供的方法獲取鍵盤按鍵?-?按鍵元組
????????key_perssed?=?pygame.key.get_pressed()
????????#?判斷元組中對應(yīng)的按鍵索引值
????????if?key_perssed[pygame.K_RIGHT]:
????????????self.hero.speed?=?2
????????elif?key_perssed[pygame.K_LEFT]:
????????????self.hero.speed?=?-2
????????else:
????????????self.hero.speed?=?0
????def?__check_collide(self):
????????‘‘‘碰撞檢測‘‘‘
????????#?1.子彈摧毀敵機(jī)
????????pygame.sprite.groupcollide(self.hero.bullets?self.enemy_group?True?True)
????????#?2.敵機(jī)撞毀英雄
????????enemys?=?pygame.sprite.spritecollide(self.hero?self.enemy_group?True)
????????#?3.判斷列表是否有內(nèi)容
????????if?len(enemys)?>?0:
????????????#?讓英雄犧牲
????????????self.hero.kill()
????????????#?結(jié)束游戲
????????????self.__game_over()
????def?__update_sprites(self):
????????‘‘‘精靈組更新和繪制‘‘‘
????????self.back_group.update()
????????self.back_group.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?__game_over():
????????print(“游戲結(jié)束“)
????????pygame.quit()
????????exit
- 上一篇:南瓜書(PumpkinBook)
- 下一篇:爬取58同城二手房信息.py
評論
共有 條評論