??博__主??:米碼收割機(jī)
??技__能??:C++/Python語言
??公眾號(hào)??:測(cè)試開發(fā)自動(dòng)化【獲取源碼+商業(yè)合作】
??榮__譽(yù)??:阿里云博客專家博主、51CTO技術(shù)博主
??專__注??:專注主流機(jī)器人、人工智能等相關(guān)領(lǐng)域的開發(fā)、測(cè)試技術(shù)。
python小游戲——開心消消樂(源碼)
一、代碼分析
基于 Pygame 的游戲程序,它實(shí)現(xiàn)了一個(gè)類似于消消樂的游戲。代碼的結(jié)構(gòu)和功能進(jìn)行分析:
import pygame
import random
from pygame.locals import *
-
導(dǎo)入了
pygame
和random
庫,以及從pygame.locals
導(dǎo)入了一些常量。 -
定義了
SoundPlay
類和一些音效文件路徑。該類用于播放游戲中的各種音效。 -
定義了
Tree
類,表示游戲中的樹,包括樹、果子、精力、銀幣等元素,以及繪制這些元素的方法。 -
定義了
ManagerTree
類,用于管理樹的相關(guān)操作,包括繪制樹界面、處理鼠標(biāo)點(diǎn)擊事件等。 -
定義了
Element
類,表示游戲中的元素,包括動(dòng)物、冰塊、磚塊等,以及繪制、移動(dòng)這些元素的方法。 -
定義了
Board
類,表示游戲中的板子,包括剩余步數(shù)、任務(wù)板、過關(guān)成功、失敗等板子,以及繪制、移動(dòng)這些板子的方法。 -
定義了
Manager
類,用于管理游戲中的元素?cái)?shù)組、繪制游戲界面、處理游戲邏輯等。 -
在
Manager
類中,包含了許多游戲相關(guān)的參數(shù)和方法,如元素的移動(dòng)、繪制任務(wù)板子、轉(zhuǎn)換坐標(biāo)等。
總體來說,這段代碼實(shí)現(xiàn)了一個(gè)簡單的消消樂游戲,其中包含了樹界面、游戲界面、任務(wù)板等功能。每個(gè)類都承擔(dān)了特定的功能,通過調(diào)用這些類和方法來實(shí)現(xiàn)游戲的各種操作。
?????? 關(guān)注公眾號(hào),回復(fù) “開心消消樂” 獲取源碼??????
二、功能展示
?????? 關(guān)注公眾號(hào),回復(fù) “開心消消樂” 獲取源碼??????
?????? 關(guān)注公眾號(hào),回復(fù) “開心消消樂” 獲取源碼??????
?????? 關(guān)注公眾號(hào),回復(fù) “開心消消樂” 獲取源碼??????
三、代碼展示
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" # 點(diǎn)擊選中聲音
board_sound = 'sound/board.ogg' # 落板子聲音
click_button = 'sound/click_common_button.ogg' # 點(diǎn)擊按鈕聲音
money_sound = 'sound/money.ogg' # 點(diǎn)擊銀幣聲音
ice_break = 'sound/ice_break.ogg' # 冰消除聲音
def __init__(self, filename, loops=0):
self.sound = pygame.mixer.Sound(filename)
self.sound.play(loops)
?????? 關(guān)注公眾號(hào),回復(fù) “開心消消樂” 獲取源碼??????
3.2 關(guān)卡樹
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]) # 果子坐標(biāo)組
energy_num_position = (15, 70) # 精力坐標(biāo)
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 # 左下角為坐標(biāo)
def draw(self, screen):
screen.blit(self.image, self.rect)
?????? 關(guān)注公眾號(hào),回復(fù) “開心消消樂” 獲取源碼??????文章來源:http://www.zghlxwxcb.cn/news/detail-847249.html
3.3 元素類
class Element(pygame.sprite.Sprite):
""" 元素類 """
# 圖標(biāo)元組,包括6個(gè)小動(dòng)物,
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") # 消除動(dòng)畫
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') # 消除冰塊動(dòng)畫
# 得分圖片
score_level = ('pic2/good.png', 'pic2/great.png', 'pic2/amazing.png', 'pic2/excellent.png', 'pic2/unbelievable.png')
none_animal = 'pic2/noneanimal.png' # 無可消除小動(dòng)物
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 # 左上角坐標(biāo)
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: # 如果左右移動(dòng)
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)
?????? 關(guān)注公眾號(hào),回復(fù) “開心消消樂” 獲取源碼??????文章來源地址http://www.zghlxwxcb.cn/news/detail-847249.html
到了這里,關(guān)于【python】python小游戲——開心消消樂(源碼)【獨(dú)一無二】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!