资讯专栏INFORMATION COLUMN

Pygame实战:记忆差怎么办?别急,增强记忆力的小游戏送给你~【越玩越上瘾】

nanfeiyan / 1245人阅读

摘要:导语哈喽大家好,我是木木子。首先准备好相应的图片这里准备的。

导语

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

今日游戏更新系列来啦,是不是很想知道今天的游戏是什么类型的?立马安排上——

随着年纪的不断上升,我们开始丢三落四,忘东忘西,记忆力越来越差了!

这不止大人随着年纪增大记忆力退却,其实很多小孩子也是一样~

很多家长是不是经常抱怨:

“我家孩子背课文特别慢,常常背了几十遍都背不下来,昨晚又背到一点多,我都要崩溃了;

在给孩子辅导课后作业,明明很简单的古诗词填空,孩子的第一反应就是打开书照抄,如果不翻课本,半天写不出来

昨晚单词背得还好好的,第二天早上抽查的时候,10个单词错8个,忘得一干二净;”

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

下面小编为你整理了提高记忆的方法——编写一款提高记忆力的小游戏,希望能帮到大家!游戏的话更容易让大家接受嘛~

正文

游戏模块Pygame上线——先安装好相应的环境跟模块,还是之前写游戏的哪些环境哈!不清楚的去看下之前的游戏文章哦~

游戏规则:在规定的时间内完成记忆力的翻出相应的图片即可消除,每次只能明牌三张,完全靠记忆力完成这款小游戏,增加大脑的灵活度,多动动脑,锻炼下。

首先准备好相应的图片:这里准备的。

这些也很可爱吖:随机的哈大家可以自己选择不止这些的哈!背景音乐哪些肯定也设置了的哈~

正式开始——

主要游戏的代码:

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)        # 已经显示正面的卡片        self.shown_cards = []        # 场上存在的卡片数量        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()        # 计时        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)

设置回调函数,三张卡片的对比:

 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:            # --之前翻开的卡片和现在的卡片一样            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)            # --之前翻开的卡片和现在的卡片不一样            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:            # --之前翻开的第一张卡片和现在的卡片一样            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)            # --之前翻开的第二张卡片和现在的卡片一样            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)            # --之前翻开的卡片和现在的卡片都不一样            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        # 判断游戏是否已经胜利        if self.num_existing_cards == 0:            is_restart = messagebox.askyesno("Game Over", "胜利, 你赢了, 你想要再来一次嘛?")            if is_restart: self.restart()            else: self.root.destroy()

计时,超时即没完成游戏,弹窗选择:

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", "你已经超时了,要重新来一次嘛?")            if is_restart: self.restart()            else: self.root.destroy()

如下图所示:

总游戏运行效果如下:

总结

所以,若记忆力不好,不必悲观,还是可以通过后天的学习和训练去改善和提高哒~嘿嘿嘿,赶紧来试试吧~

免费源码领取处:

如需要完整的文章项目源码+素材:#私信小编06#即可免费获取哦!

你们的支持是我最大的动力!!记得三连哦~mua 欢迎大家阅读往期的文章~

往期游戏文章推荐:

1.9 Pygame实战:慎点|虐单身狗的最高境界是…【附源码】

2.0Pygame实战:利用Python实现智能五子棋,实现之后发现我玩不赢它!

1.2 Pygame实战:据说这是史上最难扫雷游戏,没有之一!你们感受下......

1.3 Pygame实战:对象突然想玩坦克大战,我用Python三十分钟实现!看!他开心的像个孩子!

哈哈哈~最后一下不要走:

文章汇总——

1.1Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了~

​​

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/122195.html

相关文章

  • Pygame实战】开心——消消乐,乐,我乐,大家乐~

    摘要:正文开心消消乐分为二部分首先是开心然后是消消乐游戏嘛嘿嘿一开心小故事三则近视聪明的学生杀手二消消乐游戏素材图片开心消消乐语音提示环境安装本文是由写的小游戏。 导语 你今天消消乐了吗? ​ 哈喽哈喽~木木子之前不是写过一篇百变消消乐嘛? 可能你们不记得了,没关系——今天重温一下,来一篇开心?...

    changfeng1050 评论0 收藏0
  • 仪表盘 hostmap 新玩法让运维工作玩越 high

    摘要:还有那个极具极客范儿的监控闭路电视的硬盘空间也是用仪表盘展示数据的,具体代码可以看上项目。对了还有业务层面的实现业务响应速度监控,监控的响应时间,什么监控数据,应用数据,仪表盘统统搞的定。 Cloud Insight 第13次新品发布会现在开始,首先非常感谢大家前来看我们的新功能发布会,下面我先给大家介绍一下新功能,之后有什么问题大家尽管问?。 新功能 Cloud Insight 发布...

    Codeing_ls 评论0 收藏0
  • 首次公开,整理12年积累博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • Pygame实战】嗷大喵历险记之程序员吸猫指南:真太上头了~

    摘要:嗷大喵和他的小伙伴们快乐的生活在一起,他们总是能给大家带来欢乐。大家都说嗷大喵真棒。大家要做的就是解救嗷大喵远离恶龙。 导语 哈喽~大家好,我是木子,首先今天木子先给大家讲个小故事: 在喵界有这样一只网红——混迹于二次元、表情包界,贱萌活泼,调皮机灵,白色的大圆脸,脖子 上系了个铃铛,年龄不...

    dreamans 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<