Quick_Sort 发表于 2024-2-5 11:16:25

用Pygame制作一个“木鱼功德器”!

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

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

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

球球啦!!!谢谢!!!

图片



攒功德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
      text_rect.y = gongdelist
      # 放置
      window.blit(text, text_rect)
      # y坐标减5
      gongdelist -= 5
      # 如果小于-30,就删除。
      # 因为如果直接删除,会导致循环错误,所以用一个新列表来记录
      if gongdelist < -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()


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

感谢!!!

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







Ewan-Ahiouy 发表于 2024-2-5 11:18:14

本帖最后由 Ewan-Ahiouy 于 2024-2-5 11:59 编辑



所需文件都在这里哦!记得评分!

liuhongrun2022 发表于 2024-2-5 11:22:10

Ewan-Ahiouy 发表于 2024-2-5 11:18
所需文件都在这里哦!记得评分!

小号?

Quick_Sort 发表于 2024-2-5 11:23:39

liuhongrun2022 发表于 2024-2-5 11:22
小号?

是的{:5_109:}

Ewan-Ahiouy 发表于 2024-2-5 11:24:07

liuhongrun2022 发表于 2024-2-5 11:22
小号?

{:10_256:}

Ewan-Ahiouy 发表于 2024-2-5 13:46:41

怎么没人啊{:10_266:}

Ewan-Ahiouy 发表于 2024-2-5 13:57:12

本帖最后由 Ewan-Ahiouy 于 2024-2-5 13:58 编辑

@zhangchenyvn @sfqxx @cjjJasonchen @python爱好者. @歌者文明清理员 @学习编程中的Ben @zhangjinxuan来看看吧{:10_257:}

cjjJasonchen 发表于 2024-2-5 19:31:11

来力!

歌者文明清理员 发表于 2024-2-6 00:32:04

划掉:我才刚刚搞懂为什么都用这些头像,又被震碎三观了{:10_245:}

已评

Quick_Sort 发表于 2024-2-6 09:44:20

歌者文明清理员 发表于 2024-2-6 00:32
划掉:我才刚刚搞懂为什么都用这些头像,又被震碎三观了

已评

{:10_256:}

歌者文明清理员 发表于 2024-2-6 09:56:19

Quick_Sort 发表于 2024-2-6 09:44


换一个角度说,你头像确实好看()
页: [1]
查看完整版本: 用Pygame制作一个“木鱼功德器”!