Python實現(xiàn)敲擊木魚積累功德小項目
前言:前幾天上課閑著沒事寫了一個python敲擊木魚積累功德的小項目,當(dāng)時純粹就是寫著玩,回顧一下鼠標(biāo)事件的東西還記不記得,發(fā)現(xiàn)這個博客的點贊和收藏量還挺高的,我當(dāng)時也沒有把它當(dāng)回事,后面也有很多人問怎么實現(xiàn)的,想讓我再添加一些其他功能!
隨著點贊量和關(guān)注量不斷增高,我又重新看了一下博客,感覺過于簡單了,實在不配當(dāng)當(dāng)時python熱榜的第一,所以我又把代碼給稍微大改了一下,在原來總體實現(xiàn)的基礎(chǔ)上添加了如下功能!
我們先看原來的效果:
1:實現(xiàn)了點擊鼠標(biāo)會彈出切換功德+1的surface界面,鼠標(biāo)松開回復(fù)原先界面!
2:隨著鼠標(biāo)按鍵的按下同時也會伴隨木魚敲擊的空靈的聲音!
本次更新之后的功能有:
1:點擊鼠標(biāo)按鍵會出現(xiàn)功德+1和累計敲擊多少次,積累了多少功德的新畫面
2:優(yōu)化了聲音的play,降噪處理!
3:增加較強的互動性能,在不斷的積累功德的過程中,會不定時隨機出現(xiàn)意想不到的的互動效果,極大程度增加了該程序的趣味性!
ps:下次更新可能會在半個月后了,屆時會使用tk的模塊添加登錄注冊,以及網(wǎng)絡(luò)編程的使用用戶功德的統(tǒng)計排行榜!最近期末,還請諒解!
好了,話不多說,直接上代碼:
import pygame
from locale import *
pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode((700,500))
pygame.display.set_caption("木魚功德")
img1=pygame.image.load("images/muyuluck1.jpg")
# img2=pygame.image.load("images/muyulucky2.png")
img2=pygame.image.load("images/zan.jpg")
img3=pygame.image.load("images/qw.png")
rect1=img1.get_rect()
muyulucky = pygame.mixer.Sound('sound/muyu.WAV')
muyulucky.set_volume(0.4)
if pygame.mouse.get_focused():
# 獲取光標(biāo)位置,2個值
ball_x, ball_y = pygame.mouse.get_pos()
screen.blit(img1, (-180, -100))
count=0
f = pygame.font.SysFont('華文楷體',50)
f1 = pygame.font.SysFont('華文楷體',30)
# 生成文本信息,第一個參數(shù)文本內(nèi)容;第二個參數(shù),字體是否平滑;
# 第三個參數(shù),RGB模式的字體顏色;第四個參數(shù),RGB模式字體背景顏色;
# text = f.render("功德+1",True,(255,0,0),(0,0,0))
# text1=f1.render("今日積累功德"+str(count)+"次",True,(255,0,0),(0,0,0))
#獲得顯示對象的rect區(qū)域坐標(biāo)
# textRect =text.get_rect()
# text1Rect =text1.get_rect()
# 設(shè)置顯示對象居中
# textRect.topleft = (30,30)
# text1Rect.topleft = (450,30)
flag = False
while True:
for event in pygame.event.get():
if pygame.Rect.collidepoint(rect1, (ball_x, ball_y)) and event.type==pygame.MOUSEBUTTONDOWN:
muyulucky.play()
flag=True
count = count + 1
text = f.render("功德+1", True, (255, 0, 0), (0, 0, 0))
textRect = text.get_rect()
textRect.topleft = (30, 30)
text1 = f1.render("今日積累功德" + str(count) + "次", True, (255, 0, 0), (0, 0, 0))
text1Rect = text1.get_rect()
text1Rect.topleft = (450, 30)
screen.blit(text1, text1Rect)
screen.blit(text,textRect)
if count==8:
f2 = pygame.font.SysFont("華文楷體", 25)
text2 = f2.render("今日積累功德8次,去表白應(yīng)該不會被拒絕太難堪哦", True, (255, 0, 20))
text2Rect = text.get_rect()
text2Rect.topleft = (60, 150)
screen.blit(text2, text2Rect)
if count==10:
text = f.render("功德+1", True, (255, 0, 0), (0, 0, 0))
textRect = text.get_rect()
textRect.topleft = (30, 30)
text1 = f1.render("今日積累功德" + str(count) + "次", True, (255, 0, 0))
text1Rect = text1.get_rect()
text1Rect.topleft = (450, 30)
screen.blit(img1, (-180, -100))
screen.blit(text1, text1Rect)
screen.blit(text, textRect)
if count==20:
f2 = pygame.font.SysFont("華文楷體", 25)
text3 = f2.render("手速這么快干嘛,這是敲木魚積功德,不是你dfj", True, (230, 90, 80))
text3Rect = text.get_rect()
text3Rect.topleft = (60, 150)
screen.blit(text3, text3Rect)
if count==22:
text = f.render("功德+1", True, (255, 0, 0), (0, 0, 0))
textRect = text.get_rect()
textRect.topleft = (30, 30)
text1 = f1.render("今日積累功德" + str(count) + "次", True, (255, 0, 0), (0, 0, 0))
text1Rect = text1.get_rect()
text1Rect.topleft = (450, 30)
screen.blit(img1, (-180, -100))
screen.blit(text1, text1Rect)
screen.blit(text, textRect)
if count==28:
f2 = pygame.font.SysFont("華文楷體", 25)
text3 = f2.render("tmd,我看你不是敲木魚,是泄火吧", True, (255, 200, 20))
text3Rect = text.get_rect()
text3Rect.topleft = (60, 150)
screen.blit(text3, text3Rect)
if count==30:
text = f.render("功德+1", True, (255, 0, 0), (0, 0, 0))
textRect = text.get_rect()
textRect.topleft = (30, 30)
text1 = f1.render("今日積累功德" + str(count) + "次", True, (255, 0, 0), (0, 0, 0))
text1Rect = text1.get_rect()
text1Rect.topleft = (450, 30)
screen.blit(img1, (-180, -100))
screen.blit(text1, text1Rect)
screen.blit(text, textRect)
if count==40:
screen.blit(img2, (-210,10))
if count==41:
text = f.render("功德+1", True, (255, 0, 0), (0, 0, 0))
textRect = text.get_rect()
textRect.topleft = (30, 30)
text1 = f1.render("今日積累功德" + str(count) + "次", True, (255, 0, 0), (0, 0, 0))
text1Rect = text1.get_rect()
text1Rect.topleft = (450, 30)
screen.blit(img1, (-180, -100))
screen.blit(text1, text1Rect)
screen.blit(text, textRect)
if count==50:
f2 = pygame.font.SysFont("華文楷體", 25)
text3 = f2.render("今日功德累計50次了,小熊后臺獎勵你一只女朋友!", True, (255, 0, 0))
text3Rect = text.get_rect()
text3Rect.topleft = (60, 150)
screen.blit(text3, text3Rect)
screen.blit(img3, (-300, 0))
if count==51:
text = f.render("功德+1", True, (255, 0, 0), (0, 0, 0))
textRect = text.get_rect()
textRect.topleft = (30, 30)
text1 = f1.render("今日積累功德" + str(count) + "次", True, (255, 0, 0), (0, 0, 0))
text1Rect = text1.get_rect()
text1Rect.topleft = (450, 30)
screen.blit(img1, (-180, -100))
screen.blit(text1, text1Rect)
screen.blit(text, textRect)
pygame.display.flip()
if pygame.Rect.collidepoint(rect1, (ball_x, ball_y)) and event.type==pygame.MOUSEBUTTONUP:
flag = False
text = f.render("功德+1", True, (0, 0, 0), (0, 0, 0))
textRect = text.get_rect()
textRect.topleft = (30, 30)
screen.blit(text, textRect)
if count==40:
screen.blit(img2, (-210, 10))
if count==50:
f2 = pygame.font.SysFont("華文楷體", 25)
text3 = f2.render("功德積累是好事,凡事有個度!", True, (255, 0, 0))
text4 = f2.render("小熊后臺檢測到你今日功德累計50次,看張照片放松一下吧?。?, True, (255, 0, 0))
text3Rect = text.get_rect()
text4Rect = text.get_rect()
text3Rect.topleft = (60, 150)
text4Rect.topleft = (0, 180)
screen.blit(img3, (-300, 0))
screen.blit(text3, text3Rect)
screen.blit(text4, text4Rect)
pygame.display.flip()
if event.type==pygame.QUIT:
import mouse
pygame.quit()
pygame.display.flip()截圖:


到此這篇關(guān)于Python實現(xiàn)敲擊木魚積累功德小項目的文章就介紹到這了,更多相關(guān)Python敲擊木魚內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中使用smtplib和email模塊發(fā)送郵件實例
python腳本發(fā)郵件,一般會用到smtplib和email這兩個模塊??纯丛撃K怎么使用,先看smtplib模塊。 smtplib模塊定義了一個簡單的SMTP客戶端,可以用來在互聯(lián)網(wǎng)上發(fā)送郵件2014-04-04
教你利用PyTorch實現(xiàn)sin函數(shù)模擬
這篇文章主要給大家介紹了關(guān)于教你利用PyTorch實現(xiàn)sin函數(shù)模擬的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-01-01

