鱼C论坛

 找回密码
 立即注册
查看: 909|回复: 10

[技术交流] 用Pygame制作一个“木鱼功德器”!

[复制链接]
发表于 2024-2-5 11:16:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Quick_Sort 于 2024-2-5 20:14 编辑

昨天闲来无事,忽然思考以后死了进地府没有一点“功德”怎行!于是想到了电子木鱼,攒电子功德。

今天一早,坐桌前,用Python的Pygame写出一个“木鱼功德器”,现在分享给大家,望大家不要吝啬,送些评分,让我这个新鱼油换换头像吧,

球球啦!!!谢谢!!!

图片

木鱼功德器.PNG

攒功德ing...
import pygame, sys

# 初始化
pygame.init()

# 窗口大小
width, height = 500, 500

# 图标的加载和设定
icon = pygame.image.load("muyu.png")
pygame.display.set_icon(icon)
# 标题
pygame.display.set_caption("木鱼功德器")
# 窗口和它的矩形
window = pygame.display.set_mode((width, height))
window_rect = window.get_rect()

# 加载音频
muyuyin = pygame.mixer.Sound("muyu.mp3")

# 加载图片
# 木鱼图
muyu_old = pygame.image.load("muyu.png")
# 木鱼棒图
bang_old = pygame.image.load("bang.png")

# 原木鱼图太大了,缩小到原来的25%
muyu = pygame.transform.rotozoom(muyu_old, 0, 0.25)
# 设置位置
muyu_rect = muyu.get_rect()
muyu_rect.center = window_rect.center
muyu_rect.x -= 30
# 原木鱼棒也太大了,缩小
bang = pygame.transform.rotozoom(bang_old, -30, 0.25)
# 设置位置
bang_rect = bang.get_rect()
bang_rect.centerx = 350
bang_rect.centery = 180

# 加载字体
font = pygame.font.Font('ziti.ttf', 30)
# 创建文字
text = font.render("功德 +1", True, (255, 255, 255))
# 获得矩形
text_rect = text.get_rect()

# 记录按下鼠标的坐标
gongdelist = []
# 上列表的副本
new_gongdelist = []

# 木鱼棒的倾斜角度
jiaodu = -30
# 木鱼棒角度每次循环的减少数量
jian = -1

# 是否敲击
qiaoji = False
# 木鱼大小每次循环的减少数量
mujian = 0
# 木鱼与原图的同比例大小
muda = 0.25

# 临时变量
b = True
jiance = 0

while True:
    pygame.time.Clock().tick(60)

    # 填充
    window.fill((0, 0, 0))

    # 放置图片
    window.blit(muyu, muyu_rect)
    window.blit(bang, bang_rect)

    # copy一下位置列表列表,以后有用
    new_gongdelist = gongdelist.copy()
    # 遍历
    for i in range(len(gongdelist)):
        # 设置文字的位置为鼠标按下的位置
        text_rect.centerx = gongdelist[i][0]
        text_rect.y = gongdelist[i][1]
        # 放置
        window.blit(text, text_rect)
        # y坐标减5
        gongdelist[i][1] -= 5
        # 如果小于-30,就删除。
        # 因为如果直接删除,会导致循环错误,所以用一个新列表来记录
        if gongdelist[i][1] < -30:
            new_gongdelist.pop(i)
    # 将旧列表换为新列表
    gongdelist = new_gongdelist.copy()

    # 以下代码用于实现木棒的摇动效果,不再赘述
    #----------------------------------------------------#
    jiaodu += jian
    if jiaodu <= -50 or jiaodu >= -30:
        jian = -jian

    bang = pygame.transform.rotozoom(bang_old, jiaodu, 0.25)
    bang_rect = bang.get_rect()
    bang_rect.centerx = 350
    bang_rect.centery = 180
    #----------------------------------------------------#

    # 以下代码用于实现敲击时木鱼变小再变大的功能
    # 如果大小为最大,标记一下
    if muda * 100 == 25:
        b = True
    # 如果大小为最小,标记一下
    elif muda * 100 == 20:
        b = False

    # 如果敲击了并且大小合适
    if qiaoji and muda * 100 >= 20 and muda * 100 <= 25:
        # 如果最大
        if b:
            # 就在循环中变小
            mujian = -1
        else:
            # 否则在循环中变大
            mujian = 1

        # 以下用于停止变大变小,防止死循环
        jiance = jiance + mujian
        if jiance == 0:
            qiaoji = False
            mujian = 0
            muda = (muda * 100 + 1) / 100

    # 这里乘100又除以100是为了防止小数问题
    muda = (muda * 100 + mujian) / 100

    # 缩小并设置位置
    muyu = pygame.transform.rotozoom(muyu_old, 0, muda)
    muyu_rect = muyu.get_rect()
    muyu_rect.center = window_rect.center
    muyu_rect.x -= 30

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # 退出不题
            pygame.quit()
            sys.exit()

        if event.type == pygame.MOUSEBUTTONDOWN:
            # 只检测鼠标左键
            if event.button == 1:
                # 当按下了鼠标
                # 将坐标放进列表里
                gongdelist.append(list(event.pos))
                # 播放声音
                muyuyin.play()
                # 是否敲击设为true
                qiaoji = True

    pygame.display.update()

如果帮助你积攒了功德,记得评分!!!

感谢!!!


注意!附加文件在评论区!记得下载!







评分

参与人数 8荣誉 +39 鱼币 +19 贡献 +20 收起 理由
歌者文明清理员 + 5 + 3
cjjJasonchen + 5 + 5 + 3 好玩欸!暑假的时候就像做着完了,奈何一直.
python爱好者. + 5 + 1 + 3 鱼C有你更精彩^_^
zhangjinxuan + 8 + 8 + 5 鱼C有你更精彩^_^
zhangchenyvn + 4 + 3
Wei-Yuanzhe + 2
liuhongrun2022 + 5 + 3
Ewan-Ahiouy + 5 + 5 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-2-5 11:18:14 | 显示全部楼层
本帖最后由 Ewan-Ahiouy 于 2024-2-5 11:59 编辑

木鱼功德器.rar (1.29 MB, 下载次数: 32)

所需文件都在这里哦!记得评分!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-5 11:22:10 | 显示全部楼层
Ewan-Ahiouy 发表于 2024-2-5 11:18
所需文件都在这里哦!记得评分!

小号?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-5 11:23:39 | 显示全部楼层

评分

参与人数 2荣誉 +4 鱼币 +4 贡献 +3 收起 理由
python爱好者. + 2 + 2 + 3 鱼C有你更精彩^_^
Ewan-Ahiouy + 2 + 2 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-5 11:24:07 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-5 13:46:41 | 显示全部楼层
怎么没人啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-5 13:57:12 | 显示全部楼层
本帖最后由 Ewan-Ahiouy 于 2024-2-5 13:58 编辑

@zhangchenyvn @sfqxx @cjjJasonchen @python爱好者. @歌者文明清理员 @学习编程中的Ben @zhangjinxuan  来看看吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-5 19:31:11 | 显示全部楼层
来力!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-2-6 00:32:04 | 显示全部楼层
划掉:我才刚刚搞懂为什么都用这些头像,又被震碎三观了

已评
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-6 09:44:20 | 显示全部楼层
歌者文明清理员 发表于 2024-2-6 00:32
划掉:我才刚刚搞懂为什么都用这些头像,又被震碎三观了

已评

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-6 09:56:19 | 显示全部楼层

换一个角度说,你头像确实好看()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 21:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表