【问题标题】:Repeat function only 3 times then change Python仅重复函数 3 次然后更改 Python
【发布时间】: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()

【问题讨论】:

  • 我觉得这个问题太具体了。您应该提出一个更一般的问题和一个更简单的代码示例。试着从你的具体项目中抽象出来,而不是问(你自己)一般意义上你想要实现什么。此外,您提供的代码使用了未定义的函数和变量,我认为这是不可读的。
  • 我没有添加其他功能,因为它们与问题无关。你是对的,这是一个具体的问题,但我自己无法解决,相信我,我已经尝试过了。这就是它在这里的原因。无论如何,谢谢。
  • 从某种意义上说,这里提供的代码都与这里无关,因为它在当前状态下是不可读的。如果您希望人们阅读它,您应该提供一个更简单的版本。例如,您正在做一个石头剪刀布游戏这一事实也无关紧要,您可以删除与游戏逻辑相关的所有内容。

标签: python function tkinter


【解决方案1】:

试试这个 -

turns = []

def ThreeRun():

global turns
turns.append(0)

if len(turns) == 3:
   return 'Game Over'

每次调用这个函数都会检查是否经过了3轮,如果没有就继续。

只需按照你的游戏方式修改它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 2016-10-03
    • 2014-09-25
    相关资源
    最近更新 更多