又是一年中秋至|用Python Pygame製作兔子接月餅遊戲
from lunar_sprites import *
class PlaneGame(object):
""" 兔子接月餅遊戲 """
def __init__(self):
print(" 遊戲初始化 ")
pygame.init()
# 1. 建立遊戲的視窗
self.screen = pygame.display.set_mode(SCREEN_RECT.size)
# 2. 建立遊戲的時鐘
self.clock = pygame.time.Clock()
# 3. 呼叫私有方法,完成精靈和精靈組的建立
self.__create_sprites()
# 4. 設定定時器事件——每 1 秒建立一次月餅
pygame.time.set_timer(CREATE_MOONCAKE_EVENT, 1000)
# 5. 設定定時器事件——倒數計時每 1 秒觸發一次
pygame.time.set_timer(CREATE_I_EVENT, 1000)
# 6. 設定定時器事件—— 10 秒後結束遊戲
pygame.time.set_timer(CREATE_OVER_EVENT, 10000)
# 7. 設定遊戲狀態 ,1 代表開始, 0 代表結束, -1 代表退出
self.game_state = 1
def __create_sprites(self):
""" 建立背景精靈和精靈組 """
# 建立背景的精靈組
bg1 = Background()
bg2 = Background(True)
self.back_group = pygame.sprite.Group(bg1, bg2)
# 建立月餅的精靈組
self.mooncake_group = pygame.sprite.Group()
# 建立兔子的精靈和精靈組
self.rabbit = Rabbit()
self.rabbit_group = pygame.sprite.Group(self.rabbit)
# 建立得分精靈和精靈組
self.score_sprite = Score()
self.score_group = pygame.sprite.Group(self.score_sprite)
# 建立倒數計時精靈和精靈組
self.countdown_sprite = Countdown(10)
self.countdown_group = pygame.sprite.Group(self.countdown_sprite)
# 建立選單精靈和精靈組
self.menu_sprite = Menu()
self.menu_group = pygame.sprite.Group(self.menu_sprite)
# 建立滑鼠精靈和精靈組
self.mouse_sprite = Mouse()
self.mouse_group = pygame.sprite.Group(self.mouse_sprite)
def start_game(self):
print(" 遊戲正式開始。。。 ")
pygame.mixer.init()
pygame.mixer.music.load("./images/plane_background.mp3")
pygame.mixer.music.play()
while True:
if self.game_state == 1:
""" 遊戲進行中 """
# 1. 設定重新整理幀率
self.clock.tick(FRAME_PER_SEC)
# 2. 事件監聽
self.__event_handler()
# 3. 碰撞檢測
self.__check_collide()
# 4. 更新 / 繪製精靈組
self.__update_sprites()
# 5. 更新顯示
pygame.display.update()
elif self.game_state == 0:
""" 遊戲某一輪結束 """
# 1. 設定重新整理幀率
self.clock.tick(FRAME_PER_SEC)
# 2. 更新遊戲選單
self.__event_menu_handler()
self.__check_menu_collide()
self.__update_menu()
# 3. 更新顯示
pygame.display.update()
elif self.game_state == -1:
""" 遊戲退出 """
PlaneGame.__game_over()
def __event_handler(self):
for event in pygame.event.get():
# 判斷是否退出遊戲
if event.type == pygame.QUIT:
self.game_state = -1
elif event.type == CREATE_MOONCAKE_EVENT:
# 建立月餅精靈
mooncake = Mooncake()
# 將月餅精靈新增到月餅精靈組
self.mooncake_group.add(mooncake)
elif event.type == CREATE_I_EVENT:
# 倒數計時減 1 秒
self.countdown_sprite.start_time = self.countdown_sprite.start_time - 1
elif event.type == CREATE_OVER_EVENT:
self.menu_sprite.display = True
self.game_state = 0
# 使用鍵盤提供的方法獲取鍵盤按鍵 - 按鍵元組
keys_pressed =外匯跟單gendan5.com pygame.key.get_pressed()
# 判斷元組中對應的按鍵索引值
if keys_pressed[pygame.K_RIGHT]:
self.rabbit.speed = 5
elif keys_pressed[pygame.K_LEFT]:
self.rabbit.speed = -5
else:
self.rabbit.speed = 0
def __check_collide(self):
# 1. 兔子接到月餅
mooncakes = pygame.sprite.spritecollide(self.rabbit, self.mooncake_group, True)
# 2. 判斷碰撞列表長度
if len(mooncakes) > 0:
# 接到月餅得分加 1
self.score_sprite.score = self.score_sprite.score + 1
def __update_sprites(self):
self.back_group.update()
self.back_group.draw(self.screen)
self.mooncake_group.update()
self.mooncake_group.draw(self.screen)
self.rabbit_group.update()
self.rabbit_group.draw(self.screen)
self.score_group.update()
self.score_group.draw(self.screen)
self.score_group.update()
self.score_group.draw(self.screen)
self.countdown_group.update()
self.countdown_group.draw(self.screen)
def __event_menu_handler(self):
for event in pygame.event.get():
# 判斷是否退出遊戲
if event.type == pygame.QUIT:
self.game_state = -1
elif event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
# 點選左鍵
pos = pygame.mouse.get_pos()
self.mouse_sprite.rect.top = pos[1]
self.mouse_sprite.rect.left = pos[0]
self.menu_sprite.update()
def __check_menu_collide(self):
click_list = pygame.sprite.spritecollide(self.menu_sprite, self.mouse_group,False)
if len(click_list) > 0:
""" 滑鼠擊中選單 , 重新開始遊戲 """
# 1. 設定遊戲狀態為進行中
self.game_state = 1
# 2. 重置滑鼠位置
self.mouse_sprite.rect.top=0
self.mouse_sprite.rect.left=0
# 3. 重新總時間, 10s 秒後結束
pygame.time.set_timer(CREATE_OVER_EVENT, 0)
pygame.time.set_timer(CREATE_OVER_EVENT, 10000)
# 4. 重置分數精靈
self.score_sprite.score = 0
# 5. 重置倒數計時精靈
self.countdown_sprite.start_time = 10
def __update_menu(self):
self.menu_group.update()
self.menu_group.draw(self.screen)
self.mouse_group.update()
self.mouse_group.draw(self.screen)
@staticmethod
def __game_over():
print(" 遊戲結束 ")
pygame.quit()
exit()
if __name__ == "__main__":
# 建立遊戲物件
game = PlaneGame()
# 啟動遊戲
game.start_game(
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2915431/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用python繪製月餅,慢慢等待將至的中秋節Python
- 又是一年中秋
- Python版中秋佳節月餅搶購指令碼Python指令碼
- 用程式碼過中秋,python海龜月餅你要不要嘗一口?Python
- 微信吸粉小遊戲怎麼製作?中秋節微信公眾號吸粉小遊戲製作教程遊戲
- Python製作太空射擊小遊戲!Python遊戲
- 如何用Python製作自己的遊戲Python遊戲
- python中pygame遊戲打包為exe檔案PythonGAM遊戲
- Python遊戲開發!Mac完美安裝pygamePython遊戲開發MacGAM
- python手機版做小遊戲程式碼大全-python簡單小遊戲程式碼 怎麼用Python製作簡單小遊戲...Python遊戲
- 【中秋徵文】使用Python中秋節嫦娥投食小遊戲《千里嬋娟》Python遊戲
- Python pyecharts繪製餅圖PythonEcharts
- JS實現的接粽子小遊戲,願你好運接粽而至JS遊戲
- pygame開發小遊戲GAM遊戲
- 小遊戲的製作遊戲
- Pygame - Python 遊戲程式設計入門 class1GAMPython遊戲程式設計
- Pygame - Python 遊戲程式設計入門 class2GAMPython遊戲程式設計
- 用 Pygame 使你的遊戲角色移動起來GAM遊戲
- 製作遊戲的遊戲:創作樂趣的樂趣遊戲
- 畫餅成癮的遊戲製作人究竟有多可怕?遊戲
- pygame模組引數彙總(python遊戲程式設計)GAMPython遊戲程式設計
- 使用 Python 和 Pygame 模組構建一個遊戲框架PythonGAM遊戲框架
- 使用Unity製作遊戲AIUnity遊戲AI
- 遊戲雜談:大製作遊戲和小製作遊戲,在開發思路方式上的差別遊戲
- 親自動手實現Python+pygame中國象棋遊戲PythonGAM遊戲
- 在 Pygame 遊戲中放置平臺GAM遊戲
- PS動作快速製作可愛餅乾文字效果
- 如何低成本製作遊戲音效遊戲
- Python 利用pandas和matplotlib繪製餅圖Python
- 暗黑童話風休閒動作遊戲《進擊的兔子》開啟預約遊戲
- 遊戲角色寫實頭髮製作遊戲
- 製作遊戲載入進度條遊戲
- 斐波那契生兔子問題(一月大兔子生a對,二月大兔子生b對,三月大兔子生c對。。。)
- Pygame - Python 遊戲程式設計入門 class3-創造出敵人GAMPython遊戲程式設計S3
- python及pygame雷霆戰機遊戲專案實戰01 控制飛機PythonGAM遊戲
- Python遊戲開發:Pygame的執行環境|案例執行與分析Python遊戲開發GAM
- Python3+Pygame實現的射擊遊戲,很流暢,有音效PythonGAM遊戲
- Azure OpenAI在遊戲NPC和製作場景中的應用OpenAI遊戲