无法获取我的函数(Munt2和Munt1)来减去我的全局变量(aantal_munten)

问题描述 投票:-1回答:1

我的代码有问题(尝试使用Tkinter GUI进行NIM游戏)。无论如何,我不能让我的函数(Munt1,Munt2)减去我的全局(aantal_munten)。我不知道如何解决它。有人能指出我正确的方向吗?另外TKinter gui对我来说还是有点新鲜,所以如果你有任何提示或技巧,我们非常感谢!

import tkinter
import random

def toonStartscherm():
    keuzescherm.pack_forget()
    spelerscherm.pack_forget()
    startscherm.pack()

def toonKeuzescherm():
    keuzescherm.pack()
    startscherm.pack_forget()
    spelerscherm.pack_forget()

def spelOptie1():
    keuzescherm.pack_forget()
    startscherm.pack_forget()
    spelerscherm.pack()

def randomSpeler():
    beginnende_speler = random.choice(['1', '2'])
    speler = beginnende_speler
    if speler == '1':
        speler = '2'
    else:
        speler = '1'
    return str(speler)

def Munt1():
    eenMunt = 1
    aantal_munten -= eenMunt

def Munt2():
    tweeMunt = 2
    aantal_munten -= tweeMunt
nim_spel = tkinter.Tk()

global aantal_munten
aantal_munten = 7

startscherm = tkinter.Frame(master=nim_spel)
startscherm.pack()
start_welkom = tkinter.Label(startscherm, text= 'Welkom bij het NIM spel! \nHieronder volgende de spelregels.')
start_welkom.pack()
start_uitleg = tkinter.Label(startscherm, text= 'Het spel NIM start met 7 munten, elke speler mag één of twee munten pakken. \n De speler die de laatste munt pakt verliest!')
start_uitleg.pack() # zet uitleg automatisch in venster
doorgaan_knop = tkinter.Button(startscherm, text = 'Ik snap de regels!', fg = 'green', command = toonKeuzescherm) # maakt knop en laat stoppen
doorgaan_knop.pack(side = 'bottom')

keuzescherm = tkinter.Frame(master=nim_spel)
keuzescherm.pack()
keuze_opties = tkinter.Label(keuzescherm, text='Het NIM spel kan op twee manieren gespeeld worden. \n Optie 1: Tegen elkaar \n Optie 2: Tegen de computer')
keuze_opties.pack() # zet opties automatisch in venster
keuze_vraag = tkinter.Label(keuzescherm, text='Voor welke optie kies je?')
keuze_vraag.pack()
optie_1 = tkinter.Button(keuzescherm, text = 'Optie 1', fg = 'green', command = spelOptie1) # maakt knop en laat stoppen
optie_1.pack(side = 'left')
optie_2 = tkinter.Button(keuzescherm, text = 'Optie 2', fg = 'red', command = keuzescherm.quit) # maakt knop en laat stoppen
optie_2.pack(side = 'right')

spelerscherm = tkinter.Frame(master=nim_spel)
spelerscherm.pack()
beurt_speler = tkinter.Label(spelerscherm, text='Speler ' + (randomSpeler()) + ' is aan de beurt!')
beurt_speler.pack()
munten_over = tkinter.Label(spelerscherm, text='Er zijn nog ' + (str(aantal_munten)) + ' aantal munten over, hoeveel pak je er?')
munten_over.pack()
pak_1_munt = tkinter.Button(spelerscherm, text = '1 munt', fg = 'blue', command = Munt1)
pak_1_munt.pack(side = 'left')
pak_2_munt = tkinter.Button(spelerscherm, text = '2 munten', fg = 'blue', command = Munt2)
pak_2_munt.pack(side = 'right')

toonStartscherm()
nim_spel.mainloop()
python tkinter global
1个回答
1
投票
def Munt1():
    global aantal_munten
    eenMunt = 1
    aantal_munten -= eenMunt

def Munt2():
    global aantal_munten
    tweeMunt = 2
    aantal_munten -= tweeMunt

我刚刚添加了global aantal_munten线并检查了它,现在它运行得很好。

© www.soinside.com 2019 - 2024. All rights reserved.