Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # ?A?B猜數字遊戲
- # 可選擇一到九位數來進行猜數字,數字可重複
- from tkinter import Tk, Label, Entry, Spinbox, Button, messagebox, StringVar
- from random import randint
- answer = ""
- playerGuess = ""
- nOfDigits = 1
- '''
- 產生n位數的數字,例如 n = 3 會輸出 100 ~ 999 三位數的數值。
- '''
- def nDigitNumber(n):
- start = 10**(n-1)
- end = (10**n)-1
- return str( randint(start, end) )
- def newGame():
- print("newGame")
- global nOfDigits
- nOfDigits = int( digitsSpinBox.get() )
- global answer
- answer = nDigitNumber(nOfDigits)
- print( answer )
- def checkUserGuess():
- global playerGuess
- global answer
- global nOfDigits
- playerGuess = guessNum.get()
- if len(playerGuess) == nOfDigits:
- a = calA(playerGuess)
- b = calB(playerGuess)
- showResult(a, b)
- else:
- messagebox.showinfo("提醒", "位數要為" + str(nOfDigits) )
- def calA(guess):
- global answer
- a = 0
- for i in range( len(answer) ):
- if guess[i] == answer[i]:
- a = a + 1
- return a
- def calB(guess):
- global answer
- b = 0
- k = len(answer)
- for i in range(k):
- for j in range(k):
- if(i != j):
- if guess[i] == answer[j]:
- b = b + 1
- return b
- def showResult(a, b):
- if a == nOfDigits:
- result = "You Win"
- else:
- result = "結果:" + str(a) + "A" + str(b) + "B"
- resultLabel.config(text = result)
- mainWin = Tk()
- # 視窗標題
- mainWin.title("雲林SONG:猜數字")
- # 視窗大小
- mainWin.geometry("300x100")
- # 建立猜數字的GUI元件
- digitsLabel = Label( mainWin, text = "幾位數:" )
- guessLabel = Label( mainWin, text = "要猜的數字:" )
- resultLabel = Label( mainWin, text = "結果:" )
- var = StringVar(mainWin)
- var.set(str(randint(1, 9)))
- digitsSpinBox = Spinbox( mainWin, from_ = 1, to_ = 10, textvariable=var, command = newGame )
- guessNum = Entry( mainWin )
- guessBtn = Button( mainWin, text = "Guess", command = checkUserGuess )
- newGameBtn = Button( mainWin, text = "New Game", command = newGame )
- # 版面配置
- digitsLabel.grid(row=0, column=0)
- digitsSpinBox.grid(row=0, column=1)
- guessLabel.grid(row=1, column=0)
- resultLabel.grid(row=2, column=0)
- guessNum.grid(row=1, column=1)
- guessBtn.grid(row=1, column=2)
- newGameBtn.grid(row=2, column=2)
- newGame()
- mainWin.mainloop()
Add Comment
Please, Sign In to add comment