摘要:導(dǎo)語哈嘍大家好,我是木木子。首先準(zhǔn)備好相應(yīng)的圖片這里準(zhǔn)備的。
哈嘍!大家好,我是木木子。
今日游戲更新系列來啦,是不是很想知道今天的游戲是什么類型的?立馬安排上——
隨著年紀(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("", 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)行效果如下:
?
所以,若記憶力不好,不必悲觀,還是可以通過后天的學(xué)習(xí)和訓(xùn)練去改善和提高噠~嘿嘿嘿,趕緊來試試吧~
如需要完整的文章項(xiàng)目源碼+素材:#私信小編06#即可免費(fèi)獲取哦!
你們的支持是我最大的動力!!記得三連哦~mua 歡迎大家閱讀往期的文章~
往期游戲文章推薦:
1.9?Pygame實(shí)戰(zhàn):慎點(diǎn)|虐單身狗的最高境界是…【附源碼】
2.0Pygame實(shí)戰(zhàn):利用Python實(shí)現(xiàn)智能五子棋,實(shí)現(xiàn)之后發(fā)現(xiàn)我玩不贏它!
1.2?Pygame實(shí)戰(zhàn):據(jù)說這是史上最難掃雷游戲,沒有之一!你們感受下......
1.3?Pygame實(shí)戰(zhàn):對象突然想玩坦克大戰(zhàn),我用Python三十分鐘實(shí)現(xiàn)!看!他開心的像個孩子!
哈哈哈~最后一下不要走:
1.1Python—2021 |已有文章匯總 | 持續(xù)更新,直接看這篇就夠了~
??
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/122195.html
摘要:正文開心消消樂分為二部分首先是開心然后是消消樂游戲嘛嘿嘿一開心小故事三則近視聰明的學(xué)生殺手二消消樂游戲素材圖片開心消消樂語音提示環(huán)境安裝本文是由寫的小游戲。 導(dǎo)語 你今天消消樂了嗎? ? 哈嘍哈嘍~木木子之前不是寫過一篇百變消消樂嘛? 可能你們不記得了,沒關(guān)系——今天重溫一下,來一篇開心?...
摘要:還有那個極具極客范兒的監(jiān)控閉路電視的硬盤空間也是用儀表盤展示數(shù)據(jù)的,具體代碼可以看上項(xiàng)目。對了還有業(yè)務(wù)層面的實(shí)現(xiàn)業(yè)務(wù)響應(yīng)速度監(jiān)控,監(jiān)控的響應(yīng)時間,什么監(jiān)控?cái)?shù)據(jù),應(yīng)用數(shù)據(jù),儀表盤統(tǒng)統(tǒng)搞的定。 Cloud Insight 第13次新品發(fā)布會現(xiàn)在開始,首先非常感謝大家前來看我們的新功能發(fā)布會,下面我先給大家介紹一下新功能,之后有什么問題大家盡管問?。 新功能 Cloud Insight 發(fā)布...
摘要:時間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:嗷大喵和他的小伙伴們快樂的生活在一起,他們總是能給大家?guī)須g樂。大家都說嗷大喵真棒。大家要做的就是解救嗷大喵遠(yuǎn)離惡龍。 導(dǎo)語 哈嘍~大家好,我是木子,首先今天木子先給大家講個小故事: 在喵界有這樣一只網(wǎng)紅——混跡于二次元、表情包界,賤萌活潑,調(diào)皮機(jī)靈,白色的大圓臉,脖子 上系了個鈴鐺,年齡不...
閱讀 1504·2021-11-17 09:33
閱讀 1269·2021-10-11 10:59
閱讀 2901·2021-09-30 09:48
閱讀 1911·2021-09-30 09:47
閱讀 3034·2019-08-30 15:55
閱讀 2347·2019-08-30 15:54
閱讀 1500·2019-08-29 15:25
閱讀 1654·2019-08-29 10:57