用python制作小游戏——开心消消乐(附源码可分享!!)

在这里插入图片描述

用python制作小游戏——开心消消乐(附源码可分享!!)

请添加图片描述


👉博__主👈:吱屋猪_11
👉技__能👈:Python语言 、C/C++

用python制作小游戏——开心消消乐(附源码可分享!!)边学边玩,带你体验游戏的快乐!!


目录
  • python小游戏——开心消消乐(源码)
  • 一、代码分析
  • 二、功能展示
  • 三、代码展示
    • 3.1 声音模块
    • 3.2 关卡树
  • 3.3 元素类

一、代码分析

基于 Pygame 的游戏程序,它实现了一个类似于消消乐的游戏。代码的结构和功能进行分析:

import pygame
import random
from pygame.locals import *

  1. 导入了 pygamerandom 库,以及从 pygame.locals 导入了一些常量。

  2. 定义了 SoundPlay 类和一些音效文件路径。该类用于播放游戏中的各种音效。

  3. 定义了 Tree 类,表示游戏中的树,包括树、果子、精力、银币等元素,以及绘制这些元素的方法。

  4. 定义了 ManagerTree 类,用于管理树的相关操作,包括绘制树界面、处理鼠标点击事件等。

  5. 定义了 Element 类,表示游戏中的元素,包括动物、冰块、砖块等,以及绘制、移动这些元素的方法。

  6. 定义了 Board 类,表示游戏中的板子,包括剩余步数、任务板、过关成功、失败等板子,以及绘制、移动这些板子的方法。

  7. 定义了 Manager 类,用于管理游戏中的元素数组、绘制游戏界面、处理游戏逻辑等。

  8. Manager 类中,包含了许多游戏相关的参数和方法,如元素的移动、绘制任务板子、转换坐标等。

总体来说,这段代码实现了一个简单的消消乐游戏,其中包含了树界面、游戏界面、任务板等功能。每个类都承担了特定的功能,通过调用这些类和方法来实现游戏的各种操作。

👇👇👇 关注,回复 “开心消消乐” 获取源码👇👇👇
在这里插入图片描述

二、功能展示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

👇👇👇 关注,回复 “开心消消乐” 获取源码👇👇👇
在这里插入图片描述

三、代码展示

3.1 声音模块

class SoundPlay:
    game_bgm = "sound/GameSceneBGM.ogg"
    world_bgm = 'sound/WorldSceneBGM.ogg'
    eliminate = ('sound/eliminate1.ogg', 'sound/eliminate2.ogg', 'sound/eliminate3.ogg', 'sound/eliminate4.ogg',\
                 'sound/eliminate5.ogg')  # 消除声音
    score_level = ('sound/good.ogg', 'sound/great.ogg', 'sound/amazing.ogg', 'sound/excellent.ogg',\
                   'sound/unbelievable.ogg')   # 得分声音
    click = "sound/click.bubble.ogg"  # 点击选中声音
    board_sound = 'sound/board.ogg'   # 落板子声音
    click_button = 'sound/click_common_button.ogg'  # 点击按钮声音
    money_sound = 'sound/money.ogg'   # 点击银币声音
    ice_break = 'sound/ice_break.ogg'   # 冰消除声音

    def __init__(self, filename, loops=0):
        self.sound = pygame.mixer.Sound(filename)
        self.sound.play(loops)


3.2 关卡树


class Tree(pygame.sprite.Sprite):
    """树类"""
    tree = 'pic2/tree.png'     # 树
    fruit = 'pic2/fruit.png'   # 果子
    energy_num = 'pic2/energy_num.png'  # 精力
    money = 'pic2/money.png'   # 银币
    energy_buy = 'pic2/energy_buy.png'   # 购买精力
    x, y = 340, 510
    h = 90
    position = ([x, y], [x+50, y-25], [x+105, y-45], [x-5, y-h-5], [x+55, y-25-h+10], [x+105, y-45-h], \
                [x, y-h*2], [x+50+10, y-25-h*2-5], [x+105+25, y-45-h*2-14], [x+30, y-h*3-30])   # 果子坐标组
    energy_num_position = (15, 70)  # 精力坐标
    energy_buy_position = (250, 400)

    def __init__(self, icon, position):
        super().__init__()
        self.image = pygame.image.load(icon).convert_alpha()
        self.rect = self.image.get_rect()
        self.rect.bottomleft = position      # 左下角为坐标

    def draw(self, screen):
        screen.blit(self.image, self.rect)


3.3 元素类


class Element(pygame.sprite.Sprite):
    """ 元素类 """
    # 图标元组,包括6个小动物,
    animal = ('pic2/fox.png', 'pic2/bear.png', 'pic2/chick.png', 'pic2/eagle.png', 'pic2/frog.png', 'pic2/cow.png')
    ice = 'pic2/ice.png'  # 冰层
    brick = 'pic2/brick.png'  # 砖
    frame = 'pic2/frame.png'   # 选中框
    bling = ("pic2/bling1.png", "pic2/bling2.png", "pic2/bling3.png", "pic2/bling4.png", "pic2/bling5.png",\
             "pic2/bling6.png", "pic2/bling7.png", "pic2/bling8.png", "pic2/bling9.png")   # 消除动画

    ice_eli = ('pic2/ice0.png', 'pic2/ice1.png', 'pic2/ice2.png', 'pic2/ice3.png', 'pic2/ice4.png', 'pic2/ice5.png',\
               'pic2/ice6.png', 'pic2/ice7.png', 'pic2/ice8.png')    # 消除冰块动画

    # 得分图片
    score_level = ('pic2/good.png', 'pic2/great.png', 'pic2/amazing.png', 'pic2/excellent.png', 'pic2/unbelievable.png')
    none_animal = 'pic2/noneanimal.png'             # 无可消除小动物
    stop = 'pic2/exit.png'       # 暂停键
    stop_position = (20, 530)

    def __init__(self, icon, position):
        super().__init__()
        self.image = pygame.image.load(icon).convert_alpha()
        self.rect = self.image.get_rect()
        self.rect.topleft = position         # 左上角坐标
        self.speed = [0, 0]
        self.init_position = position

    def move(self, speed):
        self.speed = speed
        self.rect = self.rect.move(self.speed)
        if self.speed[0] != 0:    # 如果左右移动
            if abs(self.rect.left-self.init_position[0]) == self.rect[2]:
                self.init_position = self.rect.topleft
                self.speed = [0, 0]
        else:
            if abs(self.rect.top-self.init_position[1]) == self.rect[3]:
                self.init_position = self.rect.topleft
                self.speed = [0, 0]

    def draw(self, screen):
        screen.blit(self.image, self.rect)

👇👇👇 关注,回复 “开心消消乐” 获取源码👇👇👇

在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
开心消消乐(Candy Crush Saga)是一款非常受欢迎的休闲消除类游戏,但直接使用Python开发一个完整的游戏版本可能会比较复杂,因为这类游戏通常由专业的游戏引擎和大量的图形资源构建而成。然而,如果你对Python有兴趣,你可以尝试用Python做一些简单的益智游戏或者实现一些基本的游戏逻辑,比如模拟消消过程、计分系统等,作为学习游戏开发的入门项目。 以下是一个简化的Python示例,演示如何创建一个非常基础的消除游戏概念: ```python import random class Block: def __init__(self, color): self.color = color class GameGrid: def __init__(self, size=5): self.size = size self.blocks = [[Block(random.choice(['red', 'blue', 'green'])) for _ in range(size)] for _ in range(size)] def move_down(self): new_grid = [ * self.size for _ in range(self.size)] for i in range(1, self.size): for j in range(self.size): if self.blocks[i-1][j].color != 0: # 如果上方有颜色,向下移动 new_grid[i][j] = self.blocks[i-1][j] self.blocks = new_grid # 示例游戏运行 game = GameGrid() for _ in range(10): # 模拟消除10次 game.move_down() print("消除后:") for row in game.blocks: print(row) ``` 这个例子中,我们创建了两个类`Block`和`GameGrid`,用于表示游戏中的方块和游戏网格。`move_down`方法模拟消除动作。这只是一个非常基础的框架,要制作类似开心消消乐的游戏,你需要更深入地学习图形界面库(如Pygame),以及游戏逻辑的复杂设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值