您当前的位置:首页 > 计算机 > 编程开发 > Python

Python tkinter版猜数游戏

时间:09-09来源:作者:点击数:

程序启动后,首先需要启动一次游戏并设置数值范围和猜测次数,然后可以猜数并输入,程序会根据实际情况进行大小提示,退出程序时提示战绩,例如共玩几次和成功几次。

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()

启动程序:

设置数值范围:

设置数值范围:

设置允许猜几次:

猜错了:

猜对了:

猜错的情况:

退出程序时显示战绩:

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门