Python 猜谜游戏-Tkinter模块
我用Python创建了一个代码来演示一个1到100之间的数字猜测游戏。我想用Tkinter模块在图形界面中实现这个游戏。我有一个想法,我用tkinter创建了一个代码,但之后我崩溃了。我的问题是,如何将创建的两个代码“合并”为一个,以创建这个图形界面 特金特部分Python 猜谜游戏-Tkinter模块,python,tkinter,Python,Tkinter,我用Python创建了一个代码来演示一个1到100之间的数字猜测游戏。我想用Tkinter模块在图形界面中实现这个游戏。我有一个想法,我用tkinter创建了一个代码,但之后我崩溃了。我的问题是,如何将创建的两个代码“合并”为一个,以创建这个图形界面 特金特部分 from tkinter import * import random i = Tk() i.title('Guess Game') i.geometry("400x200") texto = Label(i, text = "W
from tkinter import *
import random
i = Tk()
i.title('Guess Game')
i.geometry("400x200")
texto = Label(i, text = "Welcome to the Guess Game")
texto.pack()
texto = Label(i, text = "You have 10 chances to hit the number I'm thinking")
texto.pack()
texto = Label(i, text = "This is a value between 1 and 100. So, come on!")
texto.pack()
form = Entry(i, width=3)
form.pack()
b = Button(i, text ="Execute", fg= "green")
b.pack()
i.mainloop()
第二部分
import random
n = random.randrange(1, 101)
nrepete = []
estado1 = 7 # início
estado2 = 7
def SetStatus(tentativa):
global estado2
if abs(n - palpite) == 1:
estado2 = 6 # Very Fucking Hot
if abs(n - palpite) == 2 or abs(n - palpite) == 3:
estado2 = 5 # Very Hot
if abs(n - palpite) >= 4 and abs(n - palpite) <= 6:
estado2 = 4 # Hot
if abs(n - palpite) >= 7 and abs(n - palpite) <= 9:
estado2 = 3 # Warm
if abs(n - palpite) >= 10 and abs(n - palpite) <= 15:
estado2 = 2 # Cold
if abs(n - palpite) >= 16 and abs(n - palpite) <= 25:
estado2 = 1 # Very Cold
if abs(n - palpite) >= 26:
estado2 = 0 # Freezing
def FornecerPista():
if estado1 == 7:
if estado2 == 0:
print('Freezing!')
if estado2 == 1:
print('Very cold!')
if estado2 == 2:
print('Cold!')
if estado2 == 3:
print('Warm!')
if estado2 == 4:
print('Hot!')
if estado2 == 5:
print('Very hot!')
if estado2 == 6:
print('Very fucking hot!')
if estado1 - estado2 == 0:
if estado2 == 0:
print('Seu palpite continua congelando!')
if estado2 == 1:
print('Seu palpite continua muito frio!')
if estado2 == 2:
print('Seu palpite continua frio!')
if estado2 == 3:
print('Seu palpite continua morno!')
if estado2 == 4:
print('Seu palpite continua quente!')
if estado2 == 5:
print('Seu palpite continua muito quente!')
if estado2 == 6:
print('Seu palpite continua fervendo!')
if estado1 - estado2 > 0:
if estado2 == 0:
print('Ops, seu palpite deu uma esfriada e agora está congelando!')
if estado2 == 1:
print('Ops, seu palpite deu uma esfriada e agora está muito frio!')
if estado2 == 2:
print('Ops, seu palpite deu uma esfriada e agora está frio!')
if estado2 == 3:
print('Ops, seu palpite deu uma esfriada e agora está morno!')
if estado2 == 4:
print('Ops, seu palpite deu uma esfriada e agora está quente!')
if estado2 == 5:
print('Ops, seu palpite deu uma esfriada e agora está muito quente!')
if estado1 - estado2 < 0:
if estado2 == 1:
print('Ops, seu palpite deu uma esquentada e agora está muito frio!')
if estado2 == 2:
print('Ops, seu palpite deu uma esquentada e agora está frio!')
if estado2 == 3:
print('Ops, seu palpite deu uma esquentada e agora está morno!')
if estado2 == 4:
print('Ops, seu palpite deu uma esquentada e agora está quente!')
if estado2 == 5:
print('Ops, seu palpite deu uma esquentada e agora está muito quente!')
if estado2 == 6:
print('Ops, seu palpite deu uma esquentada e agora está fervendo!')
for tentativa in range(1, 11):
while True:
try:
palpite = input('Tentativa' + str(tentativa) + ':')
palpite = int(palpite)
nrepete.append(palpite)
if (palpite < 1) or (palpite > 100):
raise ValueError
if nrepete.count(palpite) >= 2:
raise NameError
else:
break
except NameError:
print('Esse valor já foi testado! Tente de novo.')
except ValueError:
print('Invalid value! Try again.')
if palpite == n:
print('\nCongratulations !')
print('\nYou hit the number', n, 'after', tentativa, 'tentativa(s)!')
break
if tentativa == 1:
SetStatus(tentativa)
if tentativa > 1:
estado1 = estado2
SetStatus(tentativa)
FornecerPista()
if tentativa == 10 and palpite != n:
print('\nLamento, mas após', tentativa, 'tentativas')
print('Você não conseguiu acertar o número', n, 'que eu estava pensando!')
随机导入
n=random.randrange(1101)
nRepet=[]
estado1=7#início
estado2=7
def设置状态(Tentiva):
全球estado2
如果abs(n-触诊)=1:
estado2=6#非常他妈的热
如果abs(n-触须)=2或abs(n-触须)=3:
estado2=5#非常热
如果abs(n-触须)>=4,abs(n-触须)=7,abs(n-触须)=10,abs(n-触须)=16,abs(n-触须)=26:
estado2=0#冻结
def FornecerPista():
如果estado1==7:
如果estado2==0:
打印('冻结!')
如果estado2==1:
打印(“非常冷!”)
如果estado2==2:
打印('Cold!')
如果estado2==3:
打印('Warm!')
如果estado2==4:
打印('Hot!')
如果estado2==5:
打印(“非常热!”)
如果estado2==6:
打印(“非常他妈的热!”)
如果estado1-estado2==0:
如果estado2==0:
打印('Seu perptite continua congelando!')
如果estado2==1:
打印('Seu-palpite continua muito-frio!')
如果estado2==2:
打印('Seu perptite continua frio!')
如果estado2==3:
打印('Seu perptite continua morno!')
如果estado2==4:
打印('Seu perptite continua quente!')
如果estado2==5:
打印('Seu perptite continua muito quente!')
如果estado2==6:
打印('Seu perptite continua fervendo!')
如果estado1-estado2>0:
如果estado2==0:
印刷品('Ops,seu palpite deu uma esfrieada e agora estácongelando!')
如果estado2==1:
印刷品('Ops,seu palpite deu uma esfrieada e agora estámuito frio!')
如果estado2==2:
印刷品('Ops,seu palpite deu uma esfrieada e agora estáfrio!')
如果estado2==3:
印刷品('Ops,seu palpite deu uma esfrieada e agora estámorno!')
如果estado2==4:
印刷品('Ops,seu palpite deu uma esfrieada e agora estáquente!')
如果estado2==5:
印刷品('Ops,seu palpite deu uma esfrieada e agora estámuito quente!')
如果estado1-estado2<0:
如果estado2==1:
印刷品('Ops,seu palpite deu uma esquentada e agora estámuito frio!')
如果estado2==2:
印刷品('Ops,seu Perptite deu uma esquentada e agora estáfrio!')
如果estado2==3:
印刷品('Ops,seu PAPPITE deu uma esquentada e agora estámorno!')
如果estado2==4:
印刷品('Ops,seu PAPPITE deu uma esquentada e agora ESTAQUENTE!')
如果estado2==5:
印刷品('Ops,seu palpite deu uma esquentada e agora estámuito quente!')
如果estado2==6:
印刷品('Ops,seu PAPPITE deu uma esquentada e agora estáfervendo!')
对于范围(1,11)内的Tentiva:
尽管如此:
尝试:
触诊=输入('tentiva'+str(tentiva)+':')
触诊=int(触诊)
追加(触诊)
如果(触诊<1)或(触诊>100):
升值误差
如果呼吸次数(触诊)>=2:
引发名称错误
其他:
打破
除名称错误外:
打印(“Esse valor jáfoi testado!Tent de novo.”)
除值错误外:
打印('无效值!请重试')
如果触诊==n:
打印('\n图表!')
打印(“\n您点击了数字”,n,“在”,tentativa,“tentativa(s)!”)
打破
如果Tentavia==1:
SetStatus(Tentiva)
如果tentiva>1:
estado1=estado2
SetStatus(Tentiva)
FornecerPista()
如果触须=10,触须=n:
打印('\nLamento,mas após',tentiva',tentivas')
印刷品('Vocènão conseguiu acertar o número',n'que eu estava pensando!')
我已经编写了一些代码,可以满足您的需要。我还对代码进行了一些其他的更改,这些更改不是使我的解决方案工作所必需的,但是您应该强烈地考虑实现它们,因为它们是更好的实践。我合并代码的方法是执行以下操作:
- 向“执行”按钮添加操作侦听器(谷歌操作侦听器了解更多信息)
- 使用MessageBox显示输出而不是打印
- 将“动作代码”(分析猜测等的代码)放入一个每当点击execute按钮时执行的函数中
如果x==3,则打印(“blablabla”)
使用elif语句,因为评估您知道将失败的条件没有意义(例如,如果执行了x==3
,则无需检查x==4
是否会执行-我们知道不会执行)。我鼓励您更深入地研究if/elif/else条件,以便我的评论更有意义
首先,这是一个解决方案:在你的电脑上运行它,看看你是否喜欢它
from tkinter import *
import random
from tkinter import messagebox
n = random.randrange(1, 101)
nrepete = []
estado1 = 7 # início
estado2 = 7
tentativa = 0
def execute():
global tentativa, estado2, estado1
if tentativa < 10: # only play if you still have turns
palpite = form.get()
try:
palpite = int(palpite)
nrepete.append(palpite)
if (palpite < 1) or (palpite > 100):
raise ValueError
if nrepete.count(palpite) >= 2:
raise NameError
tentativa += 1
if palpite == n:
message = "Congratulations! You hit the number {} after {} tentativa(s)!".format(n, tentativa)
messagebox.showinfo("You win!", message)
else:
SetStatus(tentativa, palpite)
if tentativa > 1:
estado1 = estado2
message = FornecerPista()
messagebox.showinfo("Status", message)
if tentativa == 10 and palpite != n:
message = "Lamento, mas após {} tentativas. Você não conseguiu acertar o número {} que eu estava pensando!".format(
tentativa, n)
messagebox.showinfo("Game over", message)
except NameError:
messagebox.showerror("Error", 'Esse valor já foi testado! Tente de novo.')
except ValueError:
messagebox.showerror("Error", 'Invalid value! Try again.')
else:
messagebox.showinfo("Game over", "You've already lost. The answer was {}".format(n))
def SetStatus(tentativa, palpite):
global estado2
x = abs(n - palpite)
if x == 1:
estado2 = 6 # Very Fucking Hot
elif x == 2 or x == 3:
estado2 = 5 # Very Hot
elif 4 <= x <= 6:
estado2 = 4 # Hot
elif 7 <= x <= 9:
estado2 = 3 # Warm
elif 10 <= x <= 15:
estado2 = 2 # Cold
elif 16 <= x <= 25:
estado2 = 1 # Very Cold
elif x >= 26:
estado2 = 0 # Freezing
def FornecerPista():
message = ""
if estado1 == 7:
messages = ["Freezing!", "Very cold!", "Cold!", "Warm!", "Hot!", "Very hot!", "Very fucking hot!"]
message = messages[estado2] + "\n"
elif estado1 == estado2:
messages = ['congelando', 'muito frio', "frio", "morno", "quente", "muito quente", "fervendo"]
message += "Seu palpite continua {}!".format(messages[estado2])
elif estado1 > estado2:
messages = ['congelando', 'muito frio', "frio", "morno", "quente", "muito quente"]
message += "Ops, seu palpite deu uma esfriada e agora está {}!".format(messages[estado2])
else:
messages = ['muito frio', "frio", "morno", "quente", "muito quente", "fervendo"]
message += "Ops, seu palpite deu uma esquentada e agora está".format(messages[estado2 - 1])
return message
i = Tk()
i.title('Guess Game')
i.geometry("400x200")
texto = Label(i, text="Welcome to the Guess Game")
texto.pack()
texto = Label(i, text="You have 10 chances to hit the number I'm thinking")
texto.pack()
texto = Label(i, text="This is a value between 1 and 100. So, come on!")
texto.pack()
form = Entry(i, width=3)
form.pack()
b = Button(i, text="Execute", fg="green", command=execute)
b.pack()
i.mainloop()
从tkinter导入*
随机输入
从tkinter导入消息框
n=random.randrange(1101)
nRepet=[]
estado1=7#início
estado2=7
tentiva=0
def execute():
全球Tentiva、estado2、estado1
如果Tentavia<10:#只有在你还有轮次时才玩
帕尔皮特=form.get()
尝试:
触诊=int(触诊)
追加(触诊)
如果(触诊<1)或(触诊>100):
升值误差
如果呼吸次数(触诊)>=2: