Python小游戏(打地鼠)
生活随笔
收集整理的這篇文章主要介紹了
Python小游戏(打地鼠)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
?源碼分享:
import cfg import sys import pygame import random from modules import *'''游戲初始化''' def initGame():pygame.init()pygame.mixer.init()screen = pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption('打地鼠 —— 九歌')return screen'''主函數''' def main():# 初始化screen = initGame()# 加載背景音樂和其他音效pygame.mixer.music.load(cfg.BGM_PATH)pygame.mixer.music.play(-1)audios = {'count_down': pygame.mixer.Sound(cfg.COUNT_DOWN_SOUND_PATH),'hammering': pygame.mixer.Sound(cfg.HAMMERING_SOUND_PATH)}# 加載字體font = pygame.font.Font(cfg.FONT_PATH, 40)# 加載背景圖片bg_img = pygame.image.load(cfg.GAME_BG_IMAGEPATH)# 開始界面startInterface(screen, cfg.GAME_BEGIN_IMAGEPATHS)# 地鼠改變位置的計時hole_pos = random.choice(cfg.HOLE_POSITIONS)change_hole_event = pygame.USEREVENTpygame.time.set_timer(change_hole_event, 800)# 地鼠mole = Mole(cfg.MOLE_IMAGEPATHS, hole_pos)# 錘子hammer = Hammer(cfg.HAMMER_IMAGEPATHS, (500, 250))# 時鐘clock = pygame.time.Clock()# 分數your_score = 0flag = False# 初始時間init_time = pygame.time.get_ticks()# 游戲主循環while True:# --游戲時間為60stime_remain = round((61000 - (pygame.time.get_ticks() - init_time)) / 1000.)# --游戲時間減少, 地鼠變位置速度變快if time_remain == 40 and not flag:hole_pos = random.choice(cfg.HOLE_POSITIONS)mole.reset()mole.setPosition(hole_pos)pygame.time.set_timer(change_hole_event, 650)flag = Trueelif time_remain == 20 and flag:hole_pos = random.choice(cfg.HOLE_POSITIONS)mole.reset()mole.setPosition(hole_pos)pygame.time.set_timer(change_hole_event, 500)flag = False# --倒計時音效if time_remain == 10:audios['count_down'].play()# --游戲結束if time_remain < 0: breakcount_down_text = font.render('Time: '+str(time_remain), True, cfg.WHITE)# --按鍵檢測for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()elif event.type == pygame.MOUSEMOTION:hammer.setPosition(pygame.mouse.get_pos())elif event.type == pygame.MOUSEBUTTONDOWN:if event.button == 1:hammer.setHammering()elif event.type == change_hole_event:hole_pos = random.choice(cfg.HOLE_POSITIONS)mole.reset()mole.setPosition(hole_pos)# --碰撞檢測if hammer.is_hammering and not mole.is_hammer:is_hammer = pygame.sprite.collide_mask(hammer, mole)if is_hammer:audios['hammering'].play()mole.setBeHammered()your_score += 10# --分數your_score_text = font.render('Score: '+str(your_score), True, cfg.BROWN)# --綁定必要的游戲元素到屏幕(注意順序)screen.blit(bg_img, (0, 0))screen.blit(count_down_text, (875, 8))screen.blit(your_score_text, (800, 430))mole.draw(screen)hammer.draw(screen)# --更新pygame.display.flip()clock.tick(60)# 讀取最佳分數(try塊避免第一次游戲無.rec文件)try:best_score = int(open(cfg.RECORD_PATH).read())except:best_score = 0# 若當前分數大于最佳分數則更新最佳分數if your_score > best_score:f = open(cfg.RECORD_PATH, 'w')f.write(str(your_score))f.close()# 結束界面score_info = {'your_score': your_score, 'best_score': best_score}is_restart = endInterface(screen, cfg.GAME_END_IMAGEPATH, cfg.GAME_AGAIN_IMAGEPATHS, score_info, cfg.FONT_PATH, [cfg.WHITE, cfg.RED], cfg.SCREENSIZE)return is_restart'''run''' if __name__ == '__main__':while True:is_restart = main()if not is_restart:break總結
以上是生活随笔為你收集整理的Python小游戏(打地鼠)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python小游戏(消消乐)
- 下一篇: Python小游戏(并夕夕版飞机大战)