鱼C论坛

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

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

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

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

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

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

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

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

球球啦!!!谢谢!!!

图片

木鱼功德器.PNG

攒功德ing...

  1. import pygame, sys

  2. # 初始化
  3. pygame.init()

  4. # 窗口大小
  5. width, height = 500, 500

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

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

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

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

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

  39. # 记录按下鼠标的坐标
  40. gongdelist = []
  41. # 上列表的副本
  42. new_gongdelist = []

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

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

  53. # 临时变量
  54. b = True
  55. jiance = 0

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

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

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

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

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

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

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

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

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

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

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

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

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

  134.     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有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

所需文件都在这里哦!记得评分!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

小号?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-5 11:24:07 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-5 13:46:41 | 显示全部楼层
怎么没人啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

@zhangchenyvn @sfqxx @cjjJasonchen @python爱好者. @歌者文明清理员 @学习编程中的Ben @zhangjinxuan  来看看吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-5 19:31:11 | 显示全部楼层
来力!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

已评
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

已评

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

换一个角度说,你头像确实好看()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-26 06:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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