| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 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[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()
 
 
  复制代码 
 
如果帮助你积攒了功德,记得评分!!! 
 
感谢!!! 
 
注意!附加文件在评论区!记得下载! 
 
 
 
 
 
 
 
 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |