python猜数字小游戏tk_Python tkinter版猜数游戏

import random

import tkinter

import tkinter.messagebox

import tkinter.simpledialog

root = tkinter.Tk()

#窗口标题

root.title('猜数游戏--by董付国')

#窗口初始大小和位置

root.geometry('280x80+400+300')

#不允许改变窗口大小

root.resizable(False, False)

#用户猜的数

varNumber = tkinter.StringVar(root, value='0')

#允许猜的总次数

totalTimes = tkinter.IntVar(root, value=0)

#已猜次数

already = tkinter.IntVar(root, value=0)

#当前生成的随机数

currentNumber = tkinter.IntVar(root, value=0)

#玩家玩游戏的总次数

times = tkinter.IntVar(root, value=0)

#玩家猜对的总次数

right = tkinter.IntVar(root, value=0)

lb = tkinter.Label(root, text='请输入一个整数:')

lb.place(x=10, y=10, width=100, height=20)

#用户猜数并输入的文本框

entryNumber = tkinter.Entry(root, width=140, textvariable=varNumber)

entryNumber.place(x=110, y=10, width=140, height=20)

#只有开始游戏以后才允许输入

entryNumber['state'] = 'disabled'

#关闭程序时提示战绩

def closeWindow():

message = '本次共玩游戏 {0} 次,猜对 {1} 次!\n欢迎下次再玩!'.format(times.get(), right.get())

tkinter.messagebox.showinfo('战绩', message)

root.destroy()

root.protocol('WM_DELETE_WINDOW', closeWindow)

#按钮单击事件处理函数

def buttonClick():

if button['text']=='Start Game':

#每次游戏时允许用户自定义数值范围

#玩家必须输入正确的数

while True:

try:

start = tkinter.simpledialog.askinteger('允许的最小整数', '最小数', initialvalue=1)

break

except:

pass

while True:

try:

end = tkinter.simpledialog.askinteger('允许的最大整数', '最大数', initialvalue=10)

break

except:

pass

#在用户自定义的数值范围内生成随机数

currentNumber.set(random.randint(start, end))

#用户自定义一共允许猜几次

#玩家必须输入正确的整数

while True:

try:

t = tkinter.simpledialog.askinteger('最多允许猜几次?', '总次数', initialvalue=3)

totalTimes.set(t)

break

except:

pass

#已猜次数初始化为0

already.set(0)

button['text'] = '剩余次数:' + str(t)

#把文本框初始化为0

varNumber.set('0')

#允许用户开始输入整数

entryNumber['state'] = 'normal'

#玩游戏的次数加1

times.set(times.get() + 1)

else:

#一共允许猜几次

total = totalTimes.get()

#本次游戏的正确答案

current = currentNumber.get()

#玩家本次猜的数

try:

x = int(varNumber.get())

except:

tkinter.messagebox.showerror('抱歉', '必须输入整数')

return

if x == current:

tkinter.messagebox.showinfo('恭喜', '猜对啦')

button['text'] = 'Start Game'

#禁用文本框

entryNumber['state'] = 'disabled'

right.set(right.get() + 1)

else:

#已猜次数加1

already.set(already.get()+1)

if x > current:

tkinter.messagebox.showerror('抱歉', '猜的数太大了')

else:

tkinter.messagebox.showerror('抱歉', '猜的数太小了')

#可猜次数用完了

if already.get()==total:

tkinter.messagebox.showerror('抱歉', '游戏结束了,正确的数是:'+str(currentNumber.get()))

button['text'] = 'Start Game'

#禁用文本框

entryNumber['state'] = 'disabled'

else:

button['text'] = '剩余次数:' + str(total-already.get())

#在窗口上创建按钮,并设置事件处理函数

button = tkinter.Button(root, text='Start Game', command=buttonClick)

button.place(x=10, y=40, width=250, height=20)

#启动消息主循环

root.mainloop()

有时间更改一下,感觉还不错哈

importtkinterimportmathimporttkinter.messageboximportrandom

root=tkinter.Tk()

root.minsize(350,260)

root.title('猜数字游戏')

number=random.randint(1,20)defsay_hello():print('hello,world!')defsend_low():

tkinter.messagebox.showinfo("messagebox","Your guess is too low.")defcheck_num():

guess=text_guess.get()

guess=int(guess)if guess>number:

tkinter.messagebox.showinfo("height","Your guess is too height.")if guess

tkinter.messagebox.showinfo("low","Your guess is too low.")if guess ==number:

tkinter.messagebox.showinfo("good","Good job!")defbtn_confirm():

myName=text_name.get()

tkinter.messagebox.showinfo("name",'Well,'+myName+',I am thinking of a number between 1 and 20.')#name

label=tkinter.Label(root,text="Wellcome to our game!")

label.pack()

label_name=tkinter.Label(root,text="What's your name?")

label_name.place(x=10,y=60)

text_name=tkinter.Entry(root,width=20)

text_name.place(x=10,y=90)

btnOK=tkinter.Button(root,text="OK",command=btn_confirm)

btnOK.place(x=200,y=90,height=28)#input

label_guess=tkinter.Label(root,text='Take a guess:')

label_guess.place(x=10,y=150)

text_guess=tkinter.Entry(root,width=10)

text_guess.place(x=90,y=150)

btnCheck=tkinter.Button(root,text='Guess',command=check_num)

btnCheck.place(x=200,y=150,width=45,height=28)

root.mainloop()

计算2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值