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

 

有時間更改一下,感覺還不錯哈

 

傳送門

https://www.cnblogs.com/Wxtrkbc/p/5453349.html

 


import tkinter
import math
import tkinter.messagebox
import random
 
root =tkinter.Tk()
root.minsize(350,260)
root.title('猜數字游戲')
 
number=random.randint(1,20)
 
def say_hello():
    print('hello,world!')
 
def send_low():
    tkinter.messagebox.showinfo("messagebox","Your guess is too low.")
 
def check_num():
    guess=text_guess.get()
    guess=int(guess)
    if guess>number:
        tkinter.messagebox.showinfo("height","Your guess is too height.")
    if guess < number:
        tkinter.messagebox.showinfo("low","Your guess is too low.")
    if guess == number:
        tkinter.messagebox.showinfo("good","Good job!")
 
def btn_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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM