亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python編寫一個寶石消消樂小游戲

發布時間:2022-01-06 14:31:05 來源:億速云 閱讀:182 作者:iii 欄目:開發技術

本篇內容介紹了“怎么用Python編寫一個寶石消消樂小游戲”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

開發工具

python版本:3.6.4

相關模塊:

pygame;以及一些python自帶的模塊。

環境搭建

安裝python并添加到環境變量,pip安裝需要的相關模塊即可。

原理簡介

游戲規則:

玩家通過鼠標交換相鄰的拼圖,若交換后水平/豎直方向存在連續三個相同的拼圖,則這些拼圖消失,玩家得分,同時生成新的拼圖以補充消失的部分,否則,交換失敗,玩家不得分。玩家需要在規定時間內獲取盡可能高的得分。

實現過程:

首先加載一些必要的游戲素材:

加載背景音樂:

pygame.mixer.init()
    pygame.mixer.music.load(os.path.join(ROOTDIR, "resources/audios/bg.mp3"))
    pygame.mixer.music.set_volume(0.6)
    pygame.mixer.music.play(-1)

加載音效: 

sounds = {}
    sounds['mismatch'] = pygame.mixer.Sound(os.path.join(ROOTDIR, 'resources/audios/badswap.wav'))
    sounds['match'] = []
    for i in range(6):
        sounds['match'].append(pygame.mixer.Sound(os.path.join(ROOTDIR, 'resources/audios/match%s.wav' % i)))

加載字體:

font = pygame.font.Font(os.path.join(ROOTDIR, 'resources/font.TTF'), 25)

圖片加載:

gem_imgs = []
    for i in range(1, 8):
        gem_imgs.append(os.path.join(ROOTDIR, 'resources/images/gem%s.png' % i))

接著我們就要設置一下游戲的主循環吧

主要循環:

game = gemGame(screen, sounds, font, gem_imgs)
    while True:
        score = game.start()
        flag = False

我給大家講一下原理:

邏輯其實很簡單,就是不斷檢測是否有鼠標點擊事件發生,如果有,則判斷鼠標點擊時的位置是否在某拼圖塊的位置區域內,若在,則選中該拼圖塊,否則不選中。

當有第二塊拼圖塊被選中時,則判斷兩個拼圖塊是否滿足拼圖交換的條件,若滿足,則交換拼圖塊,并獲得獎勵,否則不交換并取消選這兩個拼圖塊的選中狀態。

最后肯定就是設置游戲的結束和退出啦:

游戲倒計時結束后,進入游戲結束界面,界面顯示用戶當前得分。同時,若用戶鍵入R鍵則重新開始游戲,鍵入ESC鍵則退出游戲。

游戲結束后玩家選擇重開或退出:源碼如下

        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE):
                    pygame.quit()
                    sys.exit()
                elif event.type == pygame.KEYUP and event.key == pygame.K_r:
                    flag = True
            if flag:
                break
            screen.fill((135, 206, 235))
            text0 = 'Final score: %s' % score
            text1 = 'Press <R> to restart the game.'
            text2 = 'Press <Esc> to quit the game.'
            y = 150
            for idx, text in enumerate([text0, text1, text2]):
                text_render = font.render(text, 1, (85, 65, 0))
                rect = text_render.get_rect()
                if idx == 0:
                    rect.left, rect.top = (212, y)
                elif idx == 1:
                    rect.left, rect.top = (122.5, y)
                else:
                    rect.left, rect.top = (126.5, y)
                y += 100
                screen.blit(text_render, rect)
            pygame.display.update()
        game.reset()

上面就是一步一步來講代碼思路理清楚的講解啦 下面我把源碼放到下面:

import os
import pygame
from utils import *
from config import *
 
 
'''游戲主程序'''
def main():
    pygame.init()
    screen = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption('Gemgem-Python交流群:932574150)
    # 加載背景音樂
    pygame.mixer.init()
    pygame.mixer.music.load(os.path.join(ROOTDIR, "resources/audios/bg.mp3"))
    pygame.mixer.music.set_volume(0.6)
    pygame.mixer.music.play(-1)
    # 加載音效
    sounds = {}
    sounds['mismatch'] = pygame.mixer.Sound(os.path.join(ROOTDIR, 'resources/audios/badswap.wav'))
    sounds['match'] = []
    for i in range(6):
        sounds['match'].append(pygame.mixer.Sound(os.path.join(ROOTDIR, 'resources/audios/match%s.wav' % i)))
    # 加載字體
    font = pygame.font.Font(os.path.join(ROOTDIR, 'resources/font.TTF'), 25)
    # 圖片加載
    gem_imgs = []
    for i in range(1, 8):
        gem_imgs.append(os.path.join(ROOTDIR, 'resources/images/gem%s.png' % i))
    # 主循環
    game = gemGame(screen, sounds, font, gem_imgs)
    while True:
        score = game.start()
        flag = False
        # 一輪游戲結束后玩家選擇重玩或者退出
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE):
                    pygame.quit()
                    sys.exit()
                elif event.type == pygame.KEYUP and event.key == pygame.K_r:
                    flag = True
            if flag:
                break
            screen.fill((135, 206, 235))
            text0 = 'Final score: %s' % score
            text1 = 'Press <R> to restart the game.'
            text2 = 'Press <Esc> to quit the game.'
            y = 150
            for idx, text in enumerate([text0, text1, text2]):
                text_render = font.render(text, 1, (85, 65, 0))
                rect = text_render.get_rect()
                if idx == 0:
                    rect.left, rect.top = (212, y)
                elif idx == 1:
                    rect.left, rect.top = (122.5, y)
                else:
                    rect.left, rect.top = (126.5, y)
                y += 100
                screen.blit(text_render, rect)
            pygame.display.update()
        game.reset()
 
 
'''test'''
if __name__ == '__main__':
    main()

“怎么用Python編寫一個寶石消消樂小游戲”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晋城| 洪洞县| 齐齐哈尔市| 澳门| 崇信县| 株洲县| 兴文县| 安陆市| 顺昌县| 天水市| 蓝田县| 雷州市| 灵武市| 如东县| 浏阳市| 囊谦县| 鄂尔多斯市| 岳池县| 兴宁市| 平顶山市| 玉龙| 刚察县| 竹北市| 旅游| 昌宁县| 陇西县| 嘉黎县| 古蔺县| 义马市| 靖安县| 佳木斯市| 九江县| 繁峙县| 宁河县| 丹棱县| 当涂县| 巨鹿县| 柳州市| 扎囊县| 古交市| 武宣县|