鱼C论坛

 找回密码
 立即注册
查看: 1489|回复: 2

[技术交流] 大家来看下呢,占卜小游戏(已经解决在三楼)

[复制链接]
发表于 2023-7-19 20:53:38 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 fffccc8080 于 2023-7-20 08:58 编辑









图片素材及代码在百度盘,这里最多把代码能贴出来

https英文冒号//pan点baidu点com/s/10PUCktCq1S-vDiT8LWWvNQ?pwd=2i4j 提取码: 2i4j





2个py文件,  dbc12a.py      dbc12f.py
dbc12a.py    这个按鼠标左键擦试水晶球时,只有显示一张的占卜图片,Alpha透明能正常从无到有。

dbc12f.py     这个呢,已经加入了所有图片了,所有图片可以正常的,但就是Alpha透明失效了,找不到原因呢。






以下两个文件的代码都能正常运行的,游戏能正常游戏,就是第二个透明问题失效了。




dbc12a.py 代码如下:

  1. # 占卜术小游戏(鼠标事件)
  2. import pygame,sys
  3. WIDTH=800
  4. HEIGHT=600
  5. pygame.init()
  6. root=pygame.display.set_mode((WIDTH,HEIGHT),0,32)
  7. clock=pygame.time.Clock()
  8. bj0=pygame.image.load("./bj0.jpg")
  9. bj1=pygame.image.load("./bj1.jpg")
  10. but0=pygame.image.load("./but0.png").convert_alpha()
  11. but1=pygame.image.load("./but1.png").convert_alpha()
  12. but=but0
  13. fh=pygame.image.load("./fh6.png").convert_alpha()
  14. num=0
  15. alnum=0
  16. fh.set_alpha(num)
  17. kg=0 # 开关

  18. while True:
  19.         for event in pygame.event.get():
  20.                 if event.type==pygame.QUIT:
  21.                         pygame.quit()
  22.                         sys.exit()
  23.                 elif event.type==pygame.MOUSEMOTION: # 鼠标移动
  24.                         if 662<=event.pos[0]<=662+102 and 62<=event.pos[1]<=62+35 and kg==0: # 按钮宽、高: 102  35    按钮坐标: 662  62
  25.                                 but=but1
  26.                         elif kg==0:
  27.                                 but=but0
  28.                         elif 175<=event.pos[0]<=175+450 and 63<=event.pos[1]<=63+513 and kg==1: # 第二张水晶球的图片的时候
  29.                                 #print(event.buttons)
  30.                                 if event.buttons[0]==1: # buttons[]=(0,0,0) 分别代表左,中,右键,按下即为1,放开为0
  31.                                         num+=1
  32.                                         if 200<=num<455:
  33.                                                 alnum+=1
  34.                                 elif num<200:
  35.                                         alnum=0
  36.                                 # elif 200<=num<455: # 这两行好像多此一举
  37.                                 #         alnum=alnum
  38.                                 elif num>=455:
  39.                                         alnum=255

  40.                 elif event.type==pygame.MOUSEBUTTONUP: # 鼠标放开
  41.                         if 662<=event.pos[0]<=662+102 and 62<=event.pos[1]<=62+35 and kg==0 and event.button==1: # 还要判断左键(1)
  42.                                 kg=1
  43.         if kg==0:       
  44.                 root.blit(bj0,(0,0))
  45.                 root.blit(but,(662,62))
  46.         elif kg==1 and 0<=num<200:
  47.                 root.blit(bj1,(0,0))
  48.         elif kg==1 and 200<=num<455: # 200帧往后,alpha由0-255渐变,200+255帧
  49.                 fh.set_alpha(alnum)
  50.                 root.blit(bj1,(0,0))
  51.                 root.blit(fh,(216,104))
  52.         elif kg==1 and num>=455:
  53.                 num=455
  54.                 fh.set_alpha(alnum)
  55.                 root.blit(bj1,(0,0))
  56.                 root.blit(fh,(216,104))

  57.         pygame.display.update()
  58.         clock.tick(60)
  59.         #print(num,alnum) # num 帧数    alnum alpha变化值
复制代码






dbc12f.py 代码如下:


  1. # 占卜术小游戏(鼠标事件)
  2. import pygame,sys
  3. WIDTH=800
  4. HEIGHT=600
  5. pygame.init()
  6. root=pygame.display.set_mode((WIDTH,HEIGHT),0,32)
  7. clock=pygame.time.Clock()
  8. bj0=pygame.image.load("./bj0.jpg")
  9. bj1=pygame.image.load("./bj1.jpg")
  10. but0=pygame.image.load("./but0.png").convert_alpha()
  11. but1=pygame.image.load("./but1.png").convert_alpha()
  12. font=pygame.font.Font("ziti.ttf",15)
  13. font_color=(192,192,192)
  14. but=but0
  15. # fh=pygame.image.load("./fh6.png").convert_alpha()
  16. kg=0 # 开关
  17. fhs = []
  18. index = 0
  19. num=0
  20. alnum=0
  21. for index in range(9):
  22.         path="./fh"+str(index)+".png"
  23.         fh = pygame.image.load(path).convert_alpha()
  24.         fh.set_alpha(num)
  25.         fhs.append(fh)
  26.         index+=1
  27. # print(len(fhs))
  28. # fh.set_alpha(num)
  29. # fhs_i=0
  30. # for fhs_i in range(len(fhs)):
  31. #         fhs[fhs_i].set_alpha(num)
  32. #         fhs_i+=1

  33. def inputNum():
  34.         while True:
  35.                 n = input("请输入一个两位数:\n")
  36.                 if len(n)==2 and  n.isdigit(): # 判断两位数长度,判断是不是数字
  37.                         return n
  38.                         break
  39.                 else:
  40.                         print("您的输入有误需要重新输入!:\n")

  41. inpNum=int(inputNum())
  42. #print(type(inpNum)) # str

  43. # iNum - (iNum//10 + iNum%10) 的结果,弄个变量result初始化为0
  44. result=0
  45. def rel_Num(iNum):
  46.         result=iNum-(iNum//10+iNum%10)
  47.         return result
  48. result=rel_Num(inpNum) # 从10到99算出来其实都是9的倍数
  49. relNum=int(result/9)
  50. path="./fh"+str(relNum)+".png"

  51. text="您输入的2位数是:" + str(inpNum) +" !  " + str(inpNum) + "-(" + str(inpNum//10) + "+" + str(inpNum%10) + ")=" + str(result) + " 都是9的倍数!因此您的幸运数字是 " + str(relNum) + ",对应的幸运图案在下面水晶球里!"
  52. text_surf=font.render(text,False,font_color)
  53. text_rect=text_surf.get_rect(center=(400,20))


  54. while True:
  55.         for event in pygame.event.get():
  56.                 if event.type==pygame.QUIT:
  57.                         pygame.quit()
  58.                         sys.exit()
  59.                 elif event.type==pygame.MOUSEMOTION: # 鼠标移动
  60.                         if 662<=event.pos[0]<=662+102 and 62<=event.pos[1]<=62+35 and kg==0: # 按钮宽、高: 102  35    按钮坐标: 662  62
  61.                                 but=but1
  62.                         elif kg==0:
  63.                                 but=but0
  64.                         elif 175<=event.pos[0]<=175+450 and 63<=event.pos[1]<=63+513 and kg==1: # 第二张水晶球的图片的时候
  65.                                 #print(event.buttons)
  66.                                 if event.buttons[0]==1: # buttons[]=(0,0,0) 分别代表左,中,右键,按下即为1,放开为0
  67.                                         num+=1
  68.                                         if 200<=num<455:
  69.                                                 alnum+=1
  70.                                 elif num<200:
  71.                                         alnum=0
  72.                                 # elif 200<=num<455: # 这两行好像多此一举
  73.                                 #         alnum=alnum
  74.                                 elif num>=455:
  75.                                         alnum=255

  76.                 elif event.type==pygame.MOUSEBUTTONUP: # 鼠标放开
  77.                         if 662<=event.pos[0]<=662+102 and 62<=event.pos[1]<=62+35 and kg==0 and event.button==1: # 还要判断左键(1)
  78.                                 kg=1
  79.         if kg==0:       
  80.                 root.blit(bj0,(0,0))
  81.                 root.blit(but,(662,62))
  82.         elif kg==1 and 0<=num<200:
  83.                 root.blit(bj1,(0,0))
  84.                 root.blit(text_surf,text_rect)
  85.         elif kg==1 and 200<=num<455: # 200帧往后,alpha由0-255渐变,200+255帧
  86.                 fhs[relNum].set_alpha(num)
  87.                 root.blit(bj1,(0,0))
  88.                 root.blit(text_surf,text_rect)
  89.                 root.blit(fhs[relNum],(216,104))
  90.         elif kg==1 and num>=455:
  91.                 num=455
  92.                 fhs[relNum].set_alpha(num)
  93.                 root.blit(bj1,(0,0))
  94.                 root.blit(text_surf,text_rect)
  95.                 root.blit(fhs[relNum],(216,104))

  96.         pygame.display.update()
  97.         clock.tick(60)
  98.         print(relNum,num,alnum) # num 帧数    alnum alpha变化值
复制代码


评分

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

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2023-7-19 22:52:22 | 显示全部楼层
可惜我对**盘深恶痛绝
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-20 08:52:51 | 显示全部楼层
本帖最后由 fffccc8080 于 2023-7-20 11:28 编辑

dbc12f.py 代码里面,最后还是自己解决了。




[b]大家还是回复下吧,处理过的内容,已经修复了透明问题。好了下面是Final最终版。


不放百度盘了,最终版,放在了蓝奏云。重新发一下,上一个删了,因为打包时的问题,我这个不能加 -w 参数,打包时加了-w控制台出不来就报错了。



最后再一次修复了个显示幸运数字的小细节:   zong123.lanzouw.com/ihZox12zltva







  1. # 占卜术小游戏(鼠标事件)Final版
  2. import pygame,sys
  3. WIDTH=800
  4. HEIGHT=600
  5. pygame.init()
  6. root=pygame.display.set_mode((WIDTH,HEIGHT),0,32)
  7. pygame.display.set_caption('神奇的占卜')
  8. logo=pygame.image.load("./logo.png")
  9. pygame.display.set_icon(logo)
  10. clock=pygame.time.Clock()
  11. bj0=pygame.image.load("./bj0.jpg")
  12. bj1=pygame.image.load("./bj1.jpg")
  13. but0=pygame.image.load("./but0.png").convert_alpha()
  14. but1=pygame.image.load("./but1.png").convert_alpha()
  15. font=pygame.font.Font("ziti.ttf",15)
  16. font_color=(192,192,192)
  17. but=but0

  18. kg=0 # 开关
  19. fhs = []
  20. index = 0
  21. num=0
  22. alnum=0
  23. for index in range(9):
  24.         path="./fh"+str(index)+".png"
  25.         fh = pygame.image.load(path).convert_alpha()
  26.         fhs.append(fh)
  27.         fhs[index].set_alpha(alnum)
  28.         index+=1

  29. def inputNum():
  30.         while True:
  31.                 n = input("请输入一个两位数:\n")
  32.                 if len(n)==2 and  n.isdigit(): # 判断两位数长度,判断是不是数字
  33.                         return n
  34.                         break
  35.                 else:
  36.                         print("您的输入有误需要重新输入!:\n")

  37. inpNum=int(inputNum())

  38. # iNum - (iNum//10 + iNum%10) 的结果,弄个变量result初始化为0
  39. result=0
  40. def rel_Num(iNum):
  41.         result=iNum-(iNum//10+iNum%10)
  42.         return result
  43. result=rel_Num(inpNum) # 从10到99算出来其实都是9的倍数
  44. relNum=int(result/9)
  45. newrelNum=relNum-1 # relNum(1-9) 和 fhs列表的下标0-8对应起来需要减 1

  46. text="您输入的2位数是:" + str(inpNum) +" !  " + str(inpNum) + "-(" + str(inpNum//10) + "+" + str(inpNum%10) + ")=" + str(result) + " 都是9的倍数!因此您的幸运数字是 " + str(relNum) + ",对应的幸运图案在下面水晶球里!"
  47. text_surf=font.render(text,False,font_color)
  48. text_rect=text_surf.get_rect(center=(400,20))


  49. while True:
  50.         for event in pygame.event.get():
  51.                 if event.type==pygame.QUIT:
  52.                         pygame.quit()
  53.                         sys.exit()
  54.                 elif event.type==pygame.MOUSEMOTION: # 鼠标移动
  55.                         if 662<=event.pos[0]<=662+102 and 62<=event.pos[1]<=62+35 and kg==0: # 按钮宽、高: 102  35    按钮坐标: 662  62
  56.                                 but=but1
  57.                         elif kg==0:
  58.                                 but=but0
  59.                         elif 175<=event.pos[0]<=175+450 and 63<=event.pos[1]<=63+513 and kg==1: # 第二张水晶球的图片的时候
  60.                                 #print(event.buttons)
  61.                                 if event.buttons[0]==1: # buttons[]=(0,0,0) 分别代表左,中,右键,按下即为1,放开为0
  62.                                         num+=1
  63.                                         if 200<=num<455:
  64.                                                 alnum+=1
  65.                                 elif num<200:
  66.                                         alnum=0
  67.                                 elif num>=455:
  68.                                         alnum=255

  69.                 elif event.type==pygame.MOUSEBUTTONUP: # 鼠标放开
  70.                         if 662<=event.pos[0]<=662+102 and 62<=event.pos[1]<=62+35 and kg==0 and event.button==1: # 还要判断左键(1)
  71.                                 kg=1
  72.         if kg==0:       
  73.                 root.blit(bj0,(0,0))
  74.                 root.blit(but,(662,62))
  75.         elif kg==1 and 0<=num<200:
  76.                 root.blit(bj1,(0,0))
  77.                 root.blit(text_surf,text_rect)
  78.         elif kg==1 and 200<=num<455: # 200帧往后,alpha由0-255渐变,200+255帧
  79.                 fhs[newrelNum].set_alpha(alnum)
  80.                 root.blit(bj1,(0,0))
  81.                 root.blit(text_surf,text_rect)
  82.                 root.blit(fhs[newrelNum],(216,104)) # relNum(1-9) 和 fhs列表的下标0-8对应起来需要减 1
  83.         elif kg==1 and num>=455:
  84.                 num=455
  85.                 fhs[newrelNum].set_alpha(alnum)
  86.                 root.blit(bj1,(0,0))
  87.                 root.blit(text_surf,text_rect)
  88.                 root.blit(fhs[newrelNum],(216,104))


  89.         pygame.display.update()
  90.         clock.tick(60)
  91.         # print(relNum,num,alnum) # num 帧数    alnum alpha变化值
复制代码

评分

参与人数 1贡献 +1 收起 理由
python爱好者. + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-23 14:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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