大家来看下呢,占卜小游戏(已经解决在三楼)
本帖最后由 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 代码如下:
# 占卜术小游戏(鼠标事件)
import pygame,sys
WIDTH=800
HEIGHT=600
pygame.init()
root=pygame.display.set_mode((WIDTH,HEIGHT),0,32)
clock=pygame.time.Clock()
bj0=pygame.image.load("./bj0.jpg")
bj1=pygame.image.load("./bj1.jpg")
but0=pygame.image.load("./but0.png").convert_alpha()
but1=pygame.image.load("./but1.png").convert_alpha()
but=but0
fh=pygame.image.load("./fh6.png").convert_alpha()
num=0
alnum=0
fh.set_alpha(num)
kg=0 # 开关
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type==pygame.MOUSEMOTION: # 鼠标移动
if 662<=event.pos<=662+102 and 62<=event.pos<=62+35 and kg==0: # 按钮宽、高: 10235 按钮坐标: 66262
but=but1
elif kg==0:
but=but0
elif 175<=event.pos<=175+450 and 63<=event.pos<=63+513 and kg==1: # 第二张水晶球的图片的时候
#print(event.buttons)
if event.buttons==1: # buttons[]=(0,0,0) 分别代表左,中,右键,按下即为1,放开为0
num+=1
if 200<=num<455:
alnum+=1
elif num<200:
alnum=0
# elif 200<=num<455: # 这两行好像多此一举
# alnum=alnum
elif num>=455:
alnum=255
elif event.type==pygame.MOUSEBUTTONUP: # 鼠标放开
if 662<=event.pos<=662+102 and 62<=event.pos<=62+35 and kg==0 and event.button==1: # 还要判断左键(1)
kg=1
if kg==0:
root.blit(bj0,(0,0))
root.blit(but,(662,62))
elif kg==1 and 0<=num<200:
root.blit(bj1,(0,0))
elif kg==1 and 200<=num<455: # 200帧往后,alpha由0-255渐变,200+255帧
fh.set_alpha(alnum)
root.blit(bj1,(0,0))
root.blit(fh,(216,104))
elif kg==1 and num>=455:
num=455
fh.set_alpha(alnum)
root.blit(bj1,(0,0))
root.blit(fh,(216,104))
pygame.display.update()
clock.tick(60)
#print(num,alnum) # num 帧数 alnum alpha变化值
dbc12f.py 代码如下:
# 占卜术小游戏(鼠标事件)
import pygame,sys
WIDTH=800
HEIGHT=600
pygame.init()
root=pygame.display.set_mode((WIDTH,HEIGHT),0,32)
clock=pygame.time.Clock()
bj0=pygame.image.load("./bj0.jpg")
bj1=pygame.image.load("./bj1.jpg")
but0=pygame.image.load("./but0.png").convert_alpha()
but1=pygame.image.load("./but1.png").convert_alpha()
font=pygame.font.Font("ziti.ttf",15)
font_color=(192,192,192)
but=but0
# fh=pygame.image.load("./fh6.png").convert_alpha()
kg=0 # 开关
fhs = []
index = 0
num=0
alnum=0
for index in range(9):
path="./fh"+str(index)+".png"
fh = pygame.image.load(path).convert_alpha()
fh.set_alpha(num)
fhs.append(fh)
index+=1
# print(len(fhs))
# fh.set_alpha(num)
# fhs_i=0
# for fhs_i in range(len(fhs)):
# fhs.set_alpha(num)
# fhs_i+=1
def inputNum():
while True:
n = input("请输入一个两位数:\n")
if len(n)==2 andn.isdigit(): # 判断两位数长度,判断是不是数字
return n
break
else:
print("您的输入有误需要重新输入!:\n")
inpNum=int(inputNum())
#print(type(inpNum)) # str
# iNum - (iNum//10 + iNum%10) 的结果,弄个变量result初始化为0
result=0
def rel_Num(iNum):
result=iNum-(iNum//10+iNum%10)
return result
result=rel_Num(inpNum) # 从10到99算出来其实都是9的倍数
relNum=int(result/9)
path="./fh"+str(relNum)+".png"
text="您输入的2位数是:" + str(inpNum) +" ! " + str(inpNum) + "-(" + str(inpNum//10) + "+" + str(inpNum%10) + ")=" + str(result) + " 都是9的倍数!因此您的幸运数字是 " + str(relNum) + ",对应的幸运图案在下面水晶球里!"
text_surf=font.render(text,False,font_color)
text_rect=text_surf.get_rect(center=(400,20))
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type==pygame.MOUSEMOTION: # 鼠标移动
if 662<=event.pos<=662+102 and 62<=event.pos<=62+35 and kg==0: # 按钮宽、高: 10235 按钮坐标: 66262
but=but1
elif kg==0:
but=but0
elif 175<=event.pos<=175+450 and 63<=event.pos<=63+513 and kg==1: # 第二张水晶球的图片的时候
#print(event.buttons)
if event.buttons==1: # buttons[]=(0,0,0) 分别代表左,中,右键,按下即为1,放开为0
num+=1
if 200<=num<455:
alnum+=1
elif num<200:
alnum=0
# elif 200<=num<455: # 这两行好像多此一举
# alnum=alnum
elif num>=455:
alnum=255
elif event.type==pygame.MOUSEBUTTONUP: # 鼠标放开
if 662<=event.pos<=662+102 and 62<=event.pos<=62+35 and kg==0 and event.button==1: # 还要判断左键(1)
kg=1
if kg==0:
root.blit(bj0,(0,0))
root.blit(but,(662,62))
elif kg==1 and 0<=num<200:
root.blit(bj1,(0,0))
root.blit(text_surf,text_rect)
elif kg==1 and 200<=num<455: # 200帧往后,alpha由0-255渐变,200+255帧
fhs.set_alpha(num)
root.blit(bj1,(0,0))
root.blit(text_surf,text_rect)
root.blit(fhs,(216,104))
elif kg==1 and num>=455:
num=455
fhs.set_alpha(num)
root.blit(bj1,(0,0))
root.blit(text_surf,text_rect)
root.blit(fhs,(216,104))
pygame.display.update()
clock.tick(60)
print(relNum,num,alnum) # num 帧数 alnum alpha变化值
可惜我对**盘深恶痛绝{:10_277:} 本帖最后由 fffccc8080 于 2023-7-20 11:28 编辑
dbc12f.py 代码里面,最后还是自己解决了。
大家还是回复下吧,处理过的内容,已经修复了透明问题。好了下面是Final最终版。
不放百度盘了,最终版,放在了蓝奏云。重新发一下,上一个删了,因为打包时的问题,我这个不能加 -w 参数,打包时加了-w控制台出不来就报错了。
最后再一次修复了个显示幸运数字的小细节: zong123.lanzouw.com/ihZox12zltva
# 占卜术小游戏(鼠标事件)Final版
import pygame,sys
WIDTH=800
HEIGHT=600
pygame.init()
root=pygame.display.set_mode((WIDTH,HEIGHT),0,32)
pygame.display.set_caption('神奇的占卜')
logo=pygame.image.load("./logo.png")
pygame.display.set_icon(logo)
clock=pygame.time.Clock()
bj0=pygame.image.load("./bj0.jpg")
bj1=pygame.image.load("./bj1.jpg")
but0=pygame.image.load("./but0.png").convert_alpha()
but1=pygame.image.load("./but1.png").convert_alpha()
font=pygame.font.Font("ziti.ttf",15)
font_color=(192,192,192)
but=but0
kg=0 # 开关
fhs = []
index = 0
num=0
alnum=0
for index in range(9):
path="./fh"+str(index)+".png"
fh = pygame.image.load(path).convert_alpha()
fhs.append(fh)
fhs.set_alpha(alnum)
index+=1
def inputNum():
while True:
n = input("请输入一个两位数:\n")
if len(n)==2 andn.isdigit(): # 判断两位数长度,判断是不是数字
return n
break
else:
print("您的输入有误需要重新输入!:\n")
inpNum=int(inputNum())
# iNum - (iNum//10 + iNum%10) 的结果,弄个变量result初始化为0
result=0
def rel_Num(iNum):
result=iNum-(iNum//10+iNum%10)
return result
result=rel_Num(inpNum) # 从10到99算出来其实都是9的倍数
relNum=int(result/9)
newrelNum=relNum-1 # relNum(1-9) 和 fhs列表的下标0-8对应起来需要减 1
text="您输入的2位数是:" + str(inpNum) +" ! " + str(inpNum) + "-(" + str(inpNum//10) + "+" + str(inpNum%10) + ")=" + str(result) + " 都是9的倍数!因此您的幸运数字是 " + str(relNum) + ",对应的幸运图案在下面水晶球里!"
text_surf=font.render(text,False,font_color)
text_rect=text_surf.get_rect(center=(400,20))
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type==pygame.MOUSEMOTION: # 鼠标移动
if 662<=event.pos<=662+102 and 62<=event.pos<=62+35 and kg==0: # 按钮宽、高: 10235 按钮坐标: 66262
but=but1
elif kg==0:
but=but0
elif 175<=event.pos<=175+450 and 63<=event.pos<=63+513 and kg==1: # 第二张水晶球的图片的时候
#print(event.buttons)
if event.buttons==1: # buttons[]=(0,0,0) 分别代表左,中,右键,按下即为1,放开为0
num+=1
if 200<=num<455:
alnum+=1
elif num<200:
alnum=0
elif num>=455:
alnum=255
elif event.type==pygame.MOUSEBUTTONUP: # 鼠标放开
if 662<=event.pos<=662+102 and 62<=event.pos<=62+35 and kg==0 and event.button==1: # 还要判断左键(1)
kg=1
if kg==0:
root.blit(bj0,(0,0))
root.blit(but,(662,62))
elif kg==1 and 0<=num<200:
root.blit(bj1,(0,0))
root.blit(text_surf,text_rect)
elif kg==1 and 200<=num<455: # 200帧往后,alpha由0-255渐变,200+255帧
fhs.set_alpha(alnum)
root.blit(bj1,(0,0))
root.blit(text_surf,text_rect)
root.blit(fhs,(216,104)) # relNum(1-9) 和 fhs列表的下标0-8对应起来需要减 1
elif kg==1 and num>=455:
num=455
fhs.set_alpha(alnum)
root.blit(bj1,(0,0))
root.blit(text_surf,text_rect)
root.blit(fhs,(216,104))
pygame.display.update()
clock.tick(60)
# print(relNum,num,alnum) # num 帧数 alnum alpha变化值
页:
[1]