👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
一、代码分析
基于 Pygame 的游戏程序,它实现了一个类似于消消乐的游戏。代码的结构和功能进行分析:
import pygame import random from pygame.locals import *
- 导入了
pygame
和random
库,以及从pygame.locals
导入了一些常量。 - 定义了
SoundPlay
类和一些音效文件路径。该类用于播放游戏中的各种音效。 - 定义了
Tree
类,表示游戏中的树,包括树、果子、精力、银币等元素,以及绘制这些元素的方法。 - 定义了
ManagerTree
类,用于管理树的相关操作,包括绘制树界面、处理鼠标点击事件等。 - 定义了
Element
类,表示游戏中的元素,包括动物、冰块、砖块等,以及绘制、移动这些元素的方法。 - 定义了
Board
类,表示游戏中的板子,包括剩余步数、任务板、过关成功、失败等板子,以及绘制、移动这些板子的方法。 - 定义了
Manager
类,用于管理游戏中的元素数组、绘制游戏界面、处理游戏逻辑等。 - 在
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)
👇👇👇 关注公众号,回复 “开心消消乐” 获取源码👇👇👇