最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)戰(zhàn)小游戲之考驗(yàn)記憶力

 更新時間:2021年09月29日 15:17:33   作者:顧木子吖  
本篇文章介紹了用python編寫的曾經(jīng)風(fēng)靡的考驗(yàn)記憶力的小游戲,詳細(xì)介紹了整個思路和過程以及代碼,通讀本篇對大家的學(xué)習(xí)或工作具有一定的價值,需要的朋友可以參考下

導(dǎo)語

哈嘍!大家好,我是木木子。

今日游戲更新系列來啦,是不是很想知道今天的游戲是什么類型的?立馬安排上——

隨著年紀(jì)的不斷上升,我們開始丟三落四,忘東忘西,記憶力越來越差了!

這不止大人隨著年紀(jì)增大記憶力退卻,其實(shí)很多小孩子也是一樣~

很多家長是不是經(jīng)常抱怨:

“我家孩子背課文特別慢,常常背了幾十遍都背不下來,昨晚又背到一點(diǎn)多,我都要崩潰了;

在給孩子輔導(dǎo)課后作業(yè),明明很簡單的古詩詞填空,孩子的第一反應(yīng)就是打開書照抄,如果不翻課本,半天寫不出來;

昨晚單詞背得還好好的,第二天早上抽查的時候,10個單詞錯8個,忘得一干二凈;”

​...............................................................................................................................

圖片

下面小編為你整理了提高記憶的方法——編寫一款提高記憶力的小游戲,希望能幫到大家!游戲的話更容易讓大家接受嘛~

正文

游戲模塊Pygame上線——先安裝好相應(yīng)的環(huán)境跟模塊,還是之前寫游戲的哪些環(huán)境哈!不清楚的去看下之前的游戲文章哦~

游戲規(guī)則:在規(guī)定的時間內(nèi)完成記憶力的翻出相應(yīng)的圖片即可消除,每次只能明牌三張,完全靠記憶力完成這款小游戲,增加大腦的靈活度,多動動腦,鍛煉下。

首先準(zhǔn)備好相應(yīng)的圖片:這里準(zhǔn)備的神奇寶貝的。

這些也很可愛吖:隨機(jī)的哈大家可以自己選擇不止這些的哈!背景音樂哪些肯定也設(shè)置了的哈~

正式開始——

主要游戲的代碼:

class FlipCardByMemory():
    def __init__(self):
        # 播放背景音樂
        self.playbgm()
        # 載入得分后響起的音樂
        self.score_sound = pygame.mixer.Sound(cfg.AUDIOPATHS['score'])
        self.score_sound.set_volume(1)
        # 卡片圖片路徑
        self.card_dir = random.choice(cfg.IMAGEPATHS['carddirs'])
        # 主界面句柄
        self.root = Tk()
        self.root.wm_title('神器寶貝——記憶明牌小游戲 ')
        # 游戲界面中的卡片字典
        self.game_matrix = {}
        # 背景圖像
        self.blank_image = PhotoImage(data=cfg.IMAGEPATHS['blank'])
        # 卡片背面
        self.cards_back_image = PhotoImage(data=cfg.IMAGEPATHS['cards_back'])
        # 所有卡片的索引
        cards_list = list(range(8)) + list(range(8))
        random.shuffle(cards_list)
        # 在界面上顯示所有卡片的背面
        for r in range(4):
            for c in range(4):
                position = f'{r}_{c}'
                self.game_matrix[position] = Label(self.root, image=self.cards_back_image)
                self.game_matrix[position].back_image = self.cards_back_image
                self.game_matrix[position].file = str(cards_list[r * 4 + c])
                self.game_matrix[position].show = False
                self.game_matrix[position].bind('<Button-1>', self.clickcallback)
                self.game_matrix[position].grid(row=r, column=c)
        # 已經(jīng)顯示正面的卡片
        self.shown_cards = []
        # 場上存在的卡片數(shù)量
        self.num_existing_cards = len(cards_list)
        # 顯示游戲剩余時間
        self.num_seconds = 30
        self.time = Label(self.root, text=f'Time Left: {self.num_seconds}')
        self.time.grid(row=6, column=3, columnspan=2)
        # 居中顯示
        self.root.withdraw()
        self.root.update_idletasks()
        x = (self.root.winfo_screenwidth() - self.root.winfo_reqwidth()) / 2
        y = (self.root.winfo_screenheight() - self.root.winfo_reqheight()) / 2
        self.root.geometry('+%d+%d' % (x, y))
        self.root.deiconify()
        # 計(jì)時
        self.tick()
        # 顯示主界面
        self.root.mainloop()

游戲開始即背景音樂播放:

def playbgm(self):
        pygame.init()
        pygame.mixer.init()
        pygame.mixer.music.load(cfg.AUDIOPATHS['bgm'])
        pygame.mixer.music.play(-1, 0.0)

設(shè)置回調(diào)函數(shù),三張卡片的對比:

 def clickcallback(self, event):
        card = event.widget
        if card.show: return
        # 之前沒有卡片被翻開
        if len(self.shown_cards) == 0:
            self.shown_cards.append(card)
            image = ImageTk.PhotoImage(Image.open(os.path.join(self.card_dir, card.file+'.png')))
            card.configure(image=image)
            card.show_image = image
            card.show = True
        # 之前只有一張卡片被翻開
        elif len(self.shown_cards) == 1:
            # --之前翻開的卡片和現(xiàn)在的卡片一樣
            if self.shown_cards[0].file == card.file:
                def delaycallback():
                    self.shown_cards[0].configure(image=self.blank_image)
                    self.shown_cards[0].blank_image = self.blank_image
                    card.configure(image=self.blank_image)
                    card.blank_image = self.blank_image
                    self.shown_cards.pop(0)
                    self.score_sound.play()
                self.num_existing_cards -= 2
                image = ImageTk.PhotoImage(Image.open(os.path.join(self.card_dir, card.file+'.png')))
                card.configure(image=image)
                card.show_image = image
                card.show = True
                card.after(300, delaycallback)
            # --之前翻開的卡片和現(xiàn)在的卡片不一樣
            else:
                self.shown_cards.append(card)
                image = ImageTk.PhotoImage(Image.open(os.path.join(self.card_dir, card.file+'.png')))
                card.configure(image=image)
                card.show_image = image
                card.show = True
        # 之前有兩張卡片被翻開
        elif len(self.shown_cards) == 2:
            # --之前翻開的第一張卡片和現(xiàn)在的卡片一樣
            if self.shown_cards[0].file == card.file:
                def delaycallback():
                    self.shown_cards[0].configure(image=self.blank_image)
                    self.shown_cards[0].blank_image = self.blank_image
                    card.configure(image=self.blank_image)
                    card.blank_image = self.blank_image
                    self.shown_cards.pop(0)
                    self.score_sound.play()
                self.num_existing_cards -= 2
                image = ImageTk.PhotoImage(Image.open(os.path.join(self.card_dir, card.file+'.png')))
                card.configure(image=image)
                card.show_image = image
                card.show = True
                card.after(300, delaycallback)
            # --之前翻開的第二張卡片和現(xiàn)在的卡片一樣
            elif self.shown_cards[1].file == card.file:
                def delaycallback():
                    self.shown_cards[1].configure(image=self.blank_image)
                    self.shown_cards[1].blank_image = self.blank_image
                    card.configure(image=self.blank_image)
                    card.blank_image = self.blank_image
                    self.shown_cards.pop(1)
                    self.score_sound.play()
                self.num_existing_cards -= 2
                image = ImageTk.PhotoImage(Image.open(os.path.join(self.card_dir, card.file+'.png')))
                card.configure(image=image)
                card.show_image = image
                card.show = True
                card.after(300, delaycallback)
            # --之前翻開的卡片和現(xiàn)在的卡片都不一樣
            else:
                self.shown_cards.append(card)
                self.shown_cards[0].configure(image=self.cards_back_image)
                self.shown_cards[0].show = False
                self.shown_cards.pop(0)
                image = ImageTk.PhotoImage(Image.open(os.path.join(self.card_dir, card.file+'.png')))
                self.shown_cards[-1].configure(image=image)
                self.shown_cards[-1].show_image = image
                self.shown_cards[-1].show = True
        # 判斷游戲是否已經(jīng)勝利
        if self.num_existing_cards == 0:
            is_restart = messagebox.askyesno('Game Over', '勝利, 你贏了, 你想要再來一次嘛?')
            if is_restart: self.restart()
            else: self.root.destroy()

計(jì)時,超時即沒完成游戲,彈窗選擇:

def tick(self):
        if self.num_existing_cards == 0: return
        if self.num_seconds != 0:
            self.num_seconds -= 1
            self.time['text'] = f'Time Left: {self.num_seconds}'
            self.time.after(1000, self.tick)
        else:
            is_restart = messagebox.askyesno('Game Over', '你已經(jīng)超時了,要重新來一次嘛?')
            if is_restart: self.restart()
            else: self.root.destroy()

如下圖所示:

總游戲運(yùn)行效果如下:

總結(jié)

所以,若記憶力不好,不必悲觀,還是可以通過后天的學(xué)習(xí)和訓(xùn)練去改善和提高噠~嘿嘿嘿,趕緊來試試吧~

你們的支持是我最大的動力!!記得三連哦~mua 歡迎大家閱讀往期的文章~

​​

到此這篇關(guān)于python實(shí)戰(zhàn)小游戲之考驗(yàn)記憶力的文章就介紹到這了,更多相關(guān)python 小游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中經(jīng)常使用的代碼片段

    Python中經(jīng)常使用的代碼片段

    大家好,本篇文章主要講的是Python中經(jīng)常使用的代碼片段,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python中的裝飾器鏈(decorator chain)詳解

    Python中的裝飾器鏈(decorator chain)詳解

    在Python中,裝飾器是一種高級功能,它允許你在不修改函數(shù)或類代碼的情況下,為它們添加額外的功能,裝飾器通常用于日志記錄、性能測量、權(quán)限檢查等場景,當(dāng)多個裝飾器應(yīng)用于同一個函數(shù)或類時,形成裝飾器鏈,這篇文章主要介紹了Python中的裝飾器鏈詳解,需要的朋友可以參考下
    2024-06-06
  • 詳解python tkinter模塊安裝過程

    詳解python tkinter模塊安裝過程

    tkinter其實(shí)是Python調(diào)用tcl程序的標(biāo)準(zhǔn)Python程序,可以通過這個interface調(diào)用tcl的程序,因?yàn)樵诖蠖鄶?shù)的unix系統(tǒng)中都內(nèi)置了很多的tcl程序和命令。這篇文章主要介紹了python tkinter模塊安裝,需要的朋友可以參考下
    2020-01-01
  • 基于Python中求和函數(shù)sum的用法詳解

    基于Python中求和函數(shù)sum的用法詳解

    今天小編就為大家分享一篇基于Python中求和函數(shù)sum的用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Numpy數(shù)組的轉(zhuǎn)置和軸交換的實(shí)現(xiàn)

    Numpy數(shù)組的轉(zhuǎn)置和軸交換的實(shí)現(xiàn)

    本文主要介紹了Numpy數(shù)組的轉(zhuǎn)置和軸交換的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • python項(xiàng)目--使用Tkinter的日歷GUI應(yīng)用程序

    python項(xiàng)目--使用Tkinter的日歷GUI應(yīng)用程序

    在 Python 中,我們可以使用 Tkinter 制作 GUI。如果你非常有想象力和創(chuàng)造力,你可以用 Tkinter 做出很多有趣的東西,希望本篇文章能夠幫到你
    2021-08-08
  • python 從list中隨機(jī)取值的方法

    python 從list中隨機(jī)取值的方法

    這篇文章主要介紹了python 從list中隨機(jī)取值的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 用python wxpy管理微信公眾號并利用微信獲取自己的開源數(shù)據(jù)

    用python wxpy管理微信公眾號并利用微信獲取自己的開源數(shù)據(jù)

    這篇文章主要介紹了用python wxpy管理微信公眾號并利用微信獲取自己的開源數(shù)據(jù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • Django 404、500頁面全局配置知識點(diǎn)詳解

    Django 404、500頁面全局配置知識點(diǎn)詳解

    在本篇文章里小編給大家整理了關(guān)于Django 404、500頁面全局配置知識點(diǎn)詳解,需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • Jupyter notebook命令和編輯模式常用快捷鍵匯總

    Jupyter notebook命令和編輯模式常用快捷鍵匯總

    這篇文章主要介紹了Jupyter notebook命令和編輯模式常用快捷鍵匯總,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11

最新評論

石狮市| 杂多县| 丰镇市| 广昌县| 墨玉县| 乾安县| 白玉县| 滦南县| 阳原县| 鹤岗市| 穆棱市| 五寨县| 泉州市| 商都县| 高阳县| 乳源| 铜陵市| 泰和县| 肥东县| 宁晋县| 张家港市| 抚州市| 灯塔市| 靖州| 武威市| 龙胜| 广元市| 金山区| 渭南市| 许昌县| 抚顺县| 尼玛县| 松溪县| 保亭| 张家川| 伊吾县| 郁南县| 枣庄市| 江达县| 岳西县| 淮阳县|