-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
111 lines (95 loc) · 4.19 KB
/
app.py
File metadata and controls
111 lines (95 loc) · 4.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import tkinter as tk
from tkinter import font
from tkinter import messagebox
import GuessNumber
class Application:
def __init__(self):
self.root = tk.Tk()
self.root.geometry('360x200')
self.root.resizable(width=False, height=False)
self.root.title('Number Guessing')
self.guessNumber = GuessNumber.GuessNumber()
def start(self):
self.mymenu()
titleFont = font.Font(family='Helvetica', size=24)
infoFont = font.Font(family='Helvetica', size=18)
self.mlabel = tk.Label(fg='#f000cc',
bg='#88c0c0',
width=18,
font=titleFont)
self.titleText()
self.mlabel.pack(pady=10)
self.mentry = tk.Entry(master=self.root,
font=titleFont,
justify=tk.CENTER,
width=6)
self.mentry.bind('<Return>', self.guess)
self.mentry.pack()
self.mentry.focus_set()
self.infolabel = tk.Label(font=infoFont)
self.infolabel.pack()
self.root.mainloop()
def mymenu(self):
menubar = tk.Menu(self.root)
fileMenu = tk.Menu(menubar, tearoff=0)
fileMenu.add_command(label='New Game', command=self.wannaRestart)
fileMenu.add_command(label='About', command=self.about)
fileMenu.add_command(label='Close', command=self.quit)
menubar.add_cascade(label='Game', menu=fileMenu)
self.root.config(menu=menubar)
def titleText(self):
report = self.guessNumber.report()
text = '(%d - %d)' % (report['min'], report['max'])
if report['min'] == report['max']:
text = '(%d)' % report['min']
self.mlabel['text'] = 'ทายตัวเลข %s' % text
def setInfoText(self, text):
self.infolabel['text'] = text
def quit(self):
isquit = messagebox.askyesno(title='ปิดโปรแกรม',
message='ต้องการปิดโปรแกรมหรือไม่')
if isquit: self.root.destroy()
def guess(self, event=None):
report = self.guessNumber.report()
if report['finish']: return
try:
number = int(self.mentry.get())
if number < report['min'] or number > report['max']:
raise ValueError
except ValueError:
message='ทายตัวเลขเป็นจำนวนเต็ม\nตั้งแต่ %d ถึง %d นะ' % (report['min'], report['max'])
self.setInfoText(message)
else:
result = self.guessNumber.guess(number)
self.updateInfo()
if not result['finish']:
self.titleText()
else:
isrestart = messagebox.askyesno(title='Start New Game',
message='ต้องการเริ่มใหม่หรือไม่')
if isrestart:
self.restart()
self.mentry.delete(0, tk.END)
def wannaRestart(self):
isreset = messagebox.askyesno(title='เริ่มเกมใหม่',
message='ต้องการเริ่มเกมใหม่หรือไม่')
if isreset: self.restart()
def restart(self):
self.guessNumber.reset()
self.titleText()
self.setInfoText("")
self.mentry.delete(0, tk.END)
def updateInfo(self):
report = self.guessNumber.report()
text = ''
if not report['finish']:
text = 'คุณทายตัวเลขแล้ว %d ครั้ง\n' % report['count']
text += 'ยังไม่ถูกต้อง'
else:
text = 'คุณทายตัวเลขถูกต้องในครั้งที่ %d\n' % report['count']
self.setInfoText(text)
def about(self):
text = 'Version 1.0\n'
text += 'โดย Saac Sornchai\n'
text += '11 กรกฎาคม 2560'
self.setInfoText(text)