【发布时间】:2021-05-30 03:14:47
【问题描述】:
好吧,我用 Tkinter 为学校制作了这款 Rock, Paper, Scissors 游戏,它运行正常,但我想添加一个游戏只运行 3 次的可能性。你知道,当你和朋友在一起时,你只能在三个人中打得最好。添加所以我创建了一个名为 ThreeRun 的函数,它运行主窗口,它应该在变量 RepCall==3 之后给出最终结果。该变量是全局变量,并且连接到每次玩家播放时都会激活的 Pretender 函数(使用名为 go 的按钮)。
嗯,那肯定没有按计划进行,现在我已经没有想法了。 这是代码。我承认这是一个悲惨的混乱,但这是我能做的。顺便说一句,这只是程序的重要部分。
def ThreeRun():
global labord,labtoi,radlst,kill,ans,go,tl,var
global ptoi, pord, RepCall
UltimWindow()
if RepCall==3:
if ptoi==pord:
showinfo(title="Conclusion",message=m1)
LeHide(erlst2)
MainDow()
elif ptoi>pord:
showinfo(title="Conclusion",message=m2)
LeHide(erlst2)
MainDow()
elif ptoi<pord:
showinfo(title="Conclusion",message=m3)
LeHide(erlst2)
MainDow()
pass
def UltimWindow():
global labord,labtoi,radlst,kill,ans,go,tl,var,imlst
erlst1=[imglab,normlab,mod1,mod2,Quit]
LeHide(erlst1)
root.geometry("690x465")
root.configure(bg='#eead0e')
var=IntVar()
piedra = PhotoImage(file = r"C:\Users\User\Documents\School\Prog\Projects\SpongeRock.png")
papel = PhotoImage(file = r"C:\Users\User\Documents\School\Prog\Projects\SpongePaper.png")
tijeras = PhotoImage(file = r"C:\Users\User\Documents\School\Prog\Projects\SpongeTijeras.png")
karen = PhotoImage(file = r"C:\Users\User\Documents\School\Prog\Projects\SpongeKaren.png")
calamar = PhotoImage(file = r"C:\Users\User\Documents\School\Prog\Projects\SpongeCalamar.png")
imlst=[(0),("Roche",piedra,1),("Papier",papel,2),("Ciseaux",tijeras,3)]
def ShowChoice():
labtoi.configure(image=imlst[var.get()][1])
pass
def Pretender():
global ptoi,pord,ans,RepCall,var,imlst
RepCall+=1
jou=var.get()
if jou==0:
errbox=showerror(title="Aucun choisi!",message="Choisis entre Roche, Papier ou Ciseaux!")
else:
ordi=randint(1,3)
labord.configure(image=imlst[ordi][1])
ans.configure(bg='#5b1ab0',fg="White",font=('Tw Cen MT',10),height=3,width=20)
if ordi == jou:
ans.configure(text=str(imlst[ordi][0])+" annule "+str(imlst[jou][0])+"\nPoints du
joueur:"+str(ptoi)+"\nPoints de l' Ordi:"+str(pord))
elif (ordi==1 and jou==3) or (ordi==2 and jou==1) or (ordi==3 and jou==2):
pord+=1
ans.configure(text=str(imlst[ordi][0])+" bat "+str(imlst[jou][0])+"\nPoints du
joueur:"+str(ptoi)+"\nPoints de l' Ordi:"+str(pord))
else:
ptoi+=1
ans.configure(text=str(imlst[jou][0])+" bat "+str(imlst[ordi][0])+"\nPoints du
joueur:"+str(ptoi)+"\nPoints de l' Ordi:"+str(pord))
pass
tl=Label(root, text = "Roche, Papier, Ciseaux!",bg='#3aaaaa',font=('Magneto',15))
tl.grid(row=0,column=1,padx=50,pady=(15))
labord= Label(root,text="Choix de l'Ordi", image = karen,bg='black',fg='white',font=('Tw Cen
MT',10),compound=TOP)
labord.karen=karen
labord.grid(row=2,column=2)
labtoi= Label(root,text="Choix du Joueur", image = calamar,bg='black',fg='white',font=('Tw Cen
MT',10),compound=TOP)
labtoi.calamar=calamar
labtoi.grid(row=2,column=0)
ans=Label(root,bg='#eead0e',height=3,width=20)
ans.grid(row=3,column=1)
for choix, img, val in imlst[1:]:
rad=tk.Radiobutton(root,
text=choix,image=img,
font=('Tw Cen MT',10),bg='black',
fg='white',compound=TOP,
indicatoron = 0,
variable=var,
command=ShowChoice,
value=val)
rad.grid(row=1,column=val-1,padx=10,pady=(15,30))
radlst.append(rad)
go=Button(root, text="VS",bg='firebrick',fg='White',font=('Impact',30),width=5,command=Pretender)
go.grid(row=2,column=1,pady=(15,30))
kill=Button(root, text="Quiter",bg='#3aaaaa',font=('Magneto',10),command=FinDestination)
kill.grid(row=4,column=1,padx=10,pady=15)
pass
run1=MainDow()
pass
runmain=GWindow()
【问题讨论】:
-
我觉得这个问题太具体了。您应该提出一个更一般的问题和一个更简单的代码示例。试着从你的具体项目中抽象出来,而不是问(你自己)一般意义上你想要实现什么。此外,您提供的代码使用了未定义的函数和变量,我认为这是不可读的。
-
我没有添加其他功能,因为它们与问题无关。你是对的,这是一个具体的问题,但我自己无法解决,相信我,我已经尝试过了。这就是它在这里的原因。无论如何,谢谢。
-
从某种意义上说,这里提供的代码都与这里无关,因为它在当前状态下是不可读的。如果您希望人们阅读它,您应该提供一个更简单的版本。例如,您正在做一个石头剪刀布游戏这一事实也无关紧要,您可以删除与游戏逻辑相关的所有内容。