Python开心消消乐

点击蓝字

关注我们

picture.image

写在前面

在繁忙的现代生活中,我们时常需要一些轻松愉快的消遣来放松心情、缓解压力。而开心消消乐小游戏正是这样一款能够让你在闲暇时光中享受无限乐趣的佳作,它不仅玩法简单易懂,画面清新可爱,而且每一关都充满了惊喜和挑战,让人欲罢不能。

picture.image

开心消消乐的魅力在于其独特的消除玩法。玩家需要通过滑动屏幕,将相同颜色的方块连接在一起,然后一次性消除它们,随着消除的方块数量增多,玩家将获得更高的分数和更丰厚的奖励。这种简单而有趣的玩法,让人在轻松愉快的氛围中不断挑战自己的极限。

picture.image

picture.image

主页面

除了基本的消除玩法外,开心消消乐还融入了多种创新元素,使得游戏更加丰富多彩。比如,有些关卡中会出现特殊方块,它们具有不同的功能和效果,可以帮助玩家更快地消除方块或获得更高的分数。此外,游戏还设置了丰富的道具和障碍物,增加了游戏的挑战性和趣味性。

picture.image

picture.image

第1关

在视觉方面,开心消消乐同样表现出色。游戏画面采用了清新可爱的卡通风格,色彩明亮、细节精致,给人一种轻松愉快的感觉。同时,游戏中的音效和背景音乐也十分悦耳动听,能够营造出轻松愉悦的游戏氛围。

picture.image

picture.image

第10关

作为一款适合所有年龄段的休闲游戏,开心消消乐不仅可以在手机上随时随地畅玩,还可以与好友一起组队挑战,共同分享游戏的乐趣。无论是想要放松心情的上班族,还是想要寻找乐趣的学生党,都可以在这款游戏中找到属于自己的快乐。

picture.image

picture.image

精力值

总之,开心消消乐是一款简单有趣、轻松愉快的休闲游戏,它不仅能够让你在闲暇时光中放松心情、缓解压力,还能够锻炼你的反应能力和思维能力。如果你正在寻找一款能够让你在忙碌的生活中找到乐趣的小游戏,那么开心消消乐绝对是一个不错的选择。快来加入我们的队伍,一起享受消除带来的无限快乐吧!

picture.image

picture.image

过关成功

picture.image

程序设计


                        
import sys
                        
import pygame
                        
from pygame.locals import KEYDOWN, QUIT, K_q, K_ESCAPE, MOUSEBUTTONDOWN
                        
from level import Manager
                        
from level_tree import LevelTreeManager
                        
from sounds import Sounds
                        
class Game:
                        
    """
                        
    游戏主类,负责初始化和主循环
                        
    """
                        
    def __init__(self):
                        
        """
                        
        初始化游戏
                        
        """
                        
        pygame.init()
                        
        pygame.mixer.init()
                        
        pygame.display.set_caption('开心消消乐')  # 设置游戏窗口标题
                        
        pygame.mouse.set_visible(False)  # 隐藏鼠标指针
                        
        # 初始化游戏管理器和声音
                        
        self.tree = LevelTreeManager()  # 树管理器,用于主菜单
                        
        self.manager = Manager(0, 0)  # 游戏管理器,用于处理游戏逻辑
                        
        self.world_bgm = pygame.mixer.Sound(Sounds.WORLD_BGM.value)  # 世界背景音乐
                        
        self.game_bgm = pygame.mixer.Sound(Sounds.GAME_BGM.value)  # 游戏背景音乐
                        
        # 提高游戏性能的优化
                        
        self.get_events = pygame.event.get  # 获取事件的方法
                        
        self.update_window = pygame.display.flip  # 刷新窗口的方法
                        
        self.sound_sign = 0  # 用于控制背景音乐切换的标志
                        
    def run(self):
                        
        """主游戏循环"""
                        
        while True:
                        
            self.handle_music()  # 处理背景音乐
                        
            self.draw()  # 绘制游戏界面
                        
            self.handle_events()  # 处理用户输入事件
                        
            self.update()  # 更新显示
                        
    def handle_music(self):
                        
        """根据游戏级别管理背景音乐"""
                        
        if self.manager.level == 0:
                        
            if self.sound_sign == 0:
                        
                self.game_bgm.stop()  # 停止游戏背景音乐
                        
                self.world_bgm.play(-1)  # 循环播放世界背景音乐
                        
                self.sound_sign = 1
                        
        else:
                        
            if self.sound_sign == 1:
                        
                self.world_bgm.stop()  # 停止世界背景音乐
                        
                self.game_bgm.play(-1)  # 循环播放游戏背景音乐
                        
                self.sound_sign = 0
                        
    def draw(self):
                        
        """根据级别绘制相应的游戏界面"""
                        
        if self.manager.level == 0:
                        
            self.tree.draw_tree(self.manager.energy_num, self.manager.money)  # 绘制主菜单界面
                        
        else:
                        
            self.manager.set_level_mode(self.manager.level)  # 设置当前关卡模式
                        
            sprite_group = self.manager.draw()  # 绘制游戏关卡界面
                        
            if self.manager.type == 0:
                        
                self.manager.eliminate_animals()  # 消除动物
                        
                self.manager.death_map()  # 更新死亡地图
                        
                self.manager.swap(sprite_group)  # 处理交换逻辑
                        
            self.manager.judge_level()  # 判断关卡状态
                        
    def handle_events(self):
                        
        """处理用户输入事件"""
                        
        for event in self.get_events():
                        
            if event.type == KEYDOWN:
                        
                if event.key in (K_q, K_ESCAPE):
                        
                    sys.exit()  # 按下 Q 或 ESC 键退出游戏
                        
            elif event.type == QUIT:
                        
                sys.exit()  # 点击关闭按钮退出游戏
                        
            elif event.type == MOUSEBUTTONDOWN:
                        
                mouse_x, mouse_y = event.pos  # 获取鼠标点击位置
                        
                if self.manager.level == 0:
                        
                    self.tree.mouse_select(
                        
                        self.manager, mouse_x,
                        
                        mouse_y,
                        
                        self.manager.level,
                        
                        self.manager.energy_num,
                        
                        self.manager.money
                        
                    )  # 处理主菜单鼠标选择
                        
                self.manager.mouse_select(mouse_x, mouse_y)  # 处理游戏内鼠标选择
                        
    def update(self):
                        
        """
                        
        更新鼠标图像并刷新显示
                        
        :return:
                        
        """
                        
        self.manager.mouse_image()  # 更新鼠标图像
                        
        self.update_window()  # 刷新显示
                        
if __name__ == '__main__':
                        
    game = Game()  # 创建游戏实例
                        
    game.run()  # 启动游戏
                    

picture.image

这段代码使用 Pygame 实现了一个开心消消乐小游戏。 Game 类是游戏的主要执行体,它包含了游戏初始化、主循环、事件处理、绘图和音效管理等功能,下面是对这个类的详细分析。

1.初始化(__init__()方法)

  • 初始化 Pygame 和混音器模块。

  • 设置游戏窗口标题为“开心消消乐”。

  • 隐藏鼠标指针。

  • 实例化 LevelTreeManager 类和 Manager 类,分别用于管理主菜单和游戏逻辑。

  • 加载背景音乐文件。

  • 优化游戏性能,通过存储事件获取和窗口更新方法的引用减少函数调用开销。

2.主循环(run()方法)

  • 连续执行游戏循环,处理音乐、绘图、事件和更新显示。

3. 音乐管理(handle_music()方法)

  • 控制世界背景音乐和游戏背景音乐的播放与停止。

  • 根据游戏管理器的 level 属性切换背景音乐。

4. 绘图(draw()方法)

  • 根据当前游戏级别( level )绘制主菜单或游戏关卡。

  • 对于游戏关卡,设置关卡模式,绘制关卡界面,并处理消除、死亡地图更新、交换逻辑和关卡判断。

5. 事件处理(handle_events()方法)

  • 监听键盘和鼠标事件。

  • 检查退出条件(按 QESC 键或窗口关闭事件)。

  • 处理鼠标点击事件,根据当前级别调用不同的选择逻辑。

6. 更新显示(update方法)

  • 更新鼠标图像。

  • 刷新整个游戏窗口显示。

7. 游戏入口(if __name__ == '__main__')

  • 创建 Game 实例。

  • 调用 run() 方法启动游戏。

整个代码展示了游戏开发中常见的几个关键点,包括游戏循环、事件监听、绘图、音频管理和游戏状态管理。代码中引用了一些自定义类如 LevelTreeManagerManagerSounds 。此外, pygame.locals 中的一些常量被用于事件类型的识别,例如 QUIT 表示窗口关闭事件, KEYDOWN 表示按键按下事件等。最后,使用 sys.exit() 来确保游戏在退出时能够释放系统资源。

picture.image

picture.image

运行效果

序号文章目录直达链接
爱心系列
1无限弹窗代码无限弹窗!满屏表白代码来啦,快来看看吧
2满屏飘字代码
满屏飘字表白代码(Python版)
3李峋同款跳动的爱心Python李峋同款跳动的爱心代码(可写字版)
4漂浮爱心Python满屏漂浮爱心代码
5爱心光波
Python动感爱心光波代码

| | 6 | 流星雨 | 一起来看python流星雨吧!(含表白界面) | | 7 | 玫瑰花 | 叮咚,您的玫瑰花已送达~ | | 节日系列 | | 1 | 生日蛋糕 | Python与众不同的生日蛋糕(可定制版) | | 2 | 圣诞节 | Python画一棵浪漫的圣诞树(2022)

Python粉红色圣诞树(慢慢画版)

从天而降的Python圣诞礼物(可写字版)

| | 3 | 中秋节 | 中秋佳节将至,一起来赏月吧 | | 4 | 国庆节 | 目光所至皆华夏,五星闪耀为信仰 | | 5 | 儿童节 | 让代码创造童话,共建快乐世界 | | 6 | 万圣节 | 终于要到我这只可爱鬼的节日啦! | | 7 | 新春/跨年 | 动漫风Python跨年烟花秀(可换照片

今年跨年一起去看python烟花秀吧!

| | 动漫系列 | | 1 | 柯南 | 真相只有一个!名侦探柯南来袭~ | | 2 | 皮卡丘 | 我用python实现了三只可爱的皮卡丘! | | 3 | hellokitty | 粉红色限定丨你好我是HelloKitty! | | 4 | 猪猪侠 | Python绘制猪猪侠代码 | | 5 | 沸羊羊 | 叮咚,您订购的沸羊羊已送达 | | 6 | 喜羊羊 | 我用python实现了一只呆萌的喜羊羊!

| | 7 | 懒羊羊 | 教你用python实现一只可爱的懒羊羊!

| | 8 | 小灰灰 | 谁会拒绝一只呆萌的小灰灰呢~ | | 炫酷系列 | | 1 | 满天星 | 一闪一闪亮晶晶,跨年就看林北星(Python) | | 2 | 雪花 | 陪你看一场冬雪(大雪纷飞Python版

这个冬天让我们用python送她一场飘雪吧!

张万森,下雪了(Python)

| | 3 | 樱花树 | 樱花树下的约定,是承诺也是青春 | | 4 | 七彩花朵 | Python七彩花朵代码 | | 5 | 代码雨 | 三十行代码教你实现《黑客帝国》炫酷代码雨 | | 6 | 蝙蝠代码 | 万圣节特辑(一)丨 一只蝙蝠的诞生! | | 7 | 南瓜头 | 万圣节特辑(二)丨 你好恶魔南瓜头! |

picture.image

picture.image

写在后面

picture.image

我是一只有趣的兔子

感谢你的喜欢!

picture.image

0
0
0
0
评论
未登录
暂无评论