Python游戏不会运行

时间:2013-07-10 15:45:29

标签: python python-2.7 tkinter

我即将完成我在python中制作的数学游戏,但我得到错误代码“num 1& num2未定义,这是我的python课程的最后一部分,只是这阻碍了我完成它所以我非常感谢我所能提供的所有帮助.Number是在揭示函数中确定的int,并且在揭示函数中添加了一个尝试并基于给出消息,如果它是对或错。问题是除了主要功能之外,一切都是有效的。我已经删除了小部件,因为我认为这些小部件并不重要。

from Tkinter import *
import random
number = num1 * num2
num1= random.randint(1, 15)
global num1
num2 = random.randint(1, 15)
global num2
forsok = 0
class Application(Frame):

def quit(self):
    global root
    root.destroy()

def reset(self):
    self.name_ent.delete(0, END)
    self.gissa_ent.delete(0, END)
    self.display1_txt.delete(1.0,END)
    self.display2_txt.delete(1.0,END)
    self.display3_txt.delete(1.0,END)
    self.display4_txt.delete(1.0,END)


def reveal(self):
    global forsok
    name = self.name_ent.get()
    gissa = self.gissa_ent.get()
    if int(gissa) != int(number):
        result_msg = "Tyvärr det är fel!!"
        forsok += 1
    if int(gissa) == int(number):
        result_msg = "Du gissade rätt!!Grattis du vann!"
        forsok += 1
    welcome_msg = "Välkommen " + name 
    gissa_msg = " Du svarade på: " + gissa
    forsok_msg = "Du har svarat " + str(forsok) + "gånger."
    if forsok > 3:
        welcome_msg = "Game OVER!!."
        gissa_msg = "Du har gissat för många gånger mohahaha."
        result_msg = " "
        forsok_msg = " "
    # Display visar de olika meddelanadena
    self.display1_txt.delete(0.0, END)
    self.display1_txt.insert(0.0, welcome_msg)
    self.display2_txt.delete(0.0, END)
    self.display2_txt.insert(0.0, gissa_msg)
    self.display3_txt.delete(0.0, END)
    self.display3_txt.insert(0.0, result_msg)
    self.display4_txt.delete(0.0, END)
    self.display4_txt.insert(0.0, forsok_msg)


    # Main hanteraren rootar och bestämmer storleken på fönstret
root = Tk()
root.title("Gissa Multiplikationen")
root.geometry("700x450")
app = Application(root)
root.mainloop()
root = Tk()
quit_bttn(root)
Application(root)
root.mainloop()

错误消息如下

number = num1 * num2
NameError: global name 'num1' is not defined

2 个答案:

答案 0 :(得分:2)

嗯,错误说明了一切。您在第3行使用num1和num2,但它们仅在稍后定义。

答案 1 :(得分:1)

您的行顺序错误,您在告诉程序它们是什么之前尝试使用num1和num2。尝试:

from Tkinter import *
import random
global num1
num1= random.randint(1, 15)
global num2
num2 = random.randint(1, 15)
number = num1 * num2
forsok = 0
class Application(Frame):