【python】python小游戏——开心消消乐(源码)【独一无二】

简介: 【python】python小游戏——开心消消乐(源码)【独一无二】


👉博__主👈:米码收割机

👉技__能👈:C++/Python语言

👉公众号👈:测试开发自动化【获取源码+商业合作】

👉荣__誉👈:阿里云博客专家博主、51CTO技术博主

👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。



一、代码分析

基于 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)

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


相关文章
|
6天前
|
Python
【Python笔记】pip intall -e命令:让你的工程直接使用开源包的源码,可断点调试,修改源码!
【Python笔记】pip intall -e命令:让你的工程直接使用开源包的源码,可断点调试,修改源码!
8 0
|
6天前
|
存储 Python
Python 基于列表实现的通讯录管理系统(有完整源码)
Python 基于列表实现的通讯录管理系统(有完整源码)
7 0
|
7天前
|
Shell Python
python|闲谈2048小游戏和数组的旋转及翻转和转置
python|闲谈2048小游戏和数组的旋转及翻转和转置
22 1
|
22天前
|
编解码 人工智能 IDE
【python毕业设计】Python基于Pygame的跑酷游戏设计与实现(源码+毕业论文)【独一无二】
【python毕业设计】Python基于Pygame的跑酷游戏设计与实现(源码+毕业论文)【独一无二】
|
22天前
|
存储 定位技术 数据库
【python毕业设计】python基于Pygame的吃金币游戏设计与实现(源码+毕业论文)【独一无二】
【python毕业设计】python基于Pygame的吃金币游戏设计与实现(源码+毕业论文)【独一无二】
|
22天前
|
前端开发 算法 数据库
【python毕业设计】python基于pygame桥牌游戏设计与实现(源码+数据库+毕业论文)
【python毕业设计】python基于pygame桥牌游戏设计与实现(源码+数据库+毕业论文)
|
22天前
|
存储 人工智能 机器人
【python毕业设计】基于Python的医院信息管理系统的设计与实现(源码+数据库+毕业论文)【独一无二】
【python毕业设计】基于Python的医院信息管理系统的设计与实现(源码+数据库+毕业论文)【独一无二】
|
4天前
|
机器学习/深度学习 数据挖掘 API
pymc,一个灵活的的 Python 概率编程库!
pymc,一个灵活的的 Python 概率编程库!
10 1
|
4天前
|
人工智能 算法 调度
uvloop,一个强大的 Python 异步IO编程库!
uvloop,一个强大的 Python 异步IO编程库!
16 2
|
4天前
|
机器学习/深度学习 人工智能 数据可视化
Python:探索编程之美
Python:探索编程之美
9 0