好的,所以,我和Tkinter在学校做了这个石头,布,剪刀游戏,它运行正常,但我想增加一个可能性,游戏只运行三次。你知道,当你和一个朋友在一起时,你只玩了三局最好的。Add所以我创建了一个名为ThreeRun的函数,它运行主窗口,它应该在变量RepCall==3之后给出最终的结果。这个变量是全局的,并且连接到每次玩家玩游戏时激活的函数准备程序(使用名为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()
passrunmain=GWindow()
发布于 2021-06-02 18:43:55
试试这个-
turns = []
def ThreeRun():
global turns
turns.append(0)
if len(turns) == 3:
return 'Game Over'每次调用这个函数时,它都会检查是否已经过了3轮,如果没有,它将继续。
只需在游戏中以您的方式修改它即可
https://stackoverflow.com/questions/67757363
复制相似问题