我已經創建了一個遊戲。它的工作完美,所以我想我會添加一個屏幕來改變'子彈'的顏色。我做了窗口我分配變量我globaled我需要的變量,但是我不斷收到一個錯誤說變量沒有被定義,但該變量下定義和來自同一個'商店'功能下的其他變量是定義。如果我擺脫了正常,並且只有FireGun和LaserGun FireGun沒有定義。很難解釋。所以看看我已經非常糟糕的代碼,看看你能否挑出任何錯誤。全局變量不通過,說它不被識別?
from tkinter import *
def MainMenu():
self = Tk()
self.btnShops = Button(text ="Shop")
self.btnShops.pack()
def startShops(event):
self.destroy()
Shop()
self.btnShops.bind('<Button>',startShops)
self.geometry("830x700")
self.title("Space Assault")
self.configure(bg="black")
def Shop():
self = Tk()
normal = 1
fire = 0
laser = 0
def FireGun(event):
global fire
global normal
global laser
fire = 1
normal = 0
laser = 0
def LaserGun(event):
global laser
global fire
global normal
laser = 1
fire = 0
normal = 0
self.btnfireGun = Button(text="Fire Gun")
self.btnfireGun.pack()
self.btnlaser = Button(text = "Laser Gun")
self.btnlaser.pack()
self.btnMainMenu = Button(text="Main Menu")
self.btnMainMenu.pack()
#Bind
self.btnfireGun.bind('<Button>',FireGun)
self.btnlaser.bind('<Button>', LaserGun)
self.btnMainMenu.bind('<Button>',StartMainMenu)
#Frame settings
self.geometry("830x700")
self.title("Space Assault Shop")
self.configure(bg="black")
def singleplayergame():
def Shoot(event):
global normal
global fire
global laser
self.shot = Canvas(bg="black",highlightthickness=0,width=10,height=10)
self.shot.place(x=shotXpos,y=shotYpos)
if normal == 1:
self.shot.create_oval(0,0,10,10,fill=random.choice(COLORS))
elif fire == 1:
self.shot.create_oval(0,0,10,10,fill='red')
elif laser == 1:
self.shot.create_oval(0,0,10,10,fill='blue')
MainMenu()
如果我點擊FireGun按鈕子彈工作正常,他們出來像紅色一樣正常。但是,如果我想它'正常'它甚至不會發射任何東西。希望這是有道理的。我認爲它與全球減速有關,但我真的堅持這一點。