Академический Документы
Профессиональный Документы
Культура Документы
«Крестики-
нолики»
Н
а предыдущих занятиях были изучены возмож-
ности библиотеки Tkinter. Напишем игру «Кре-
стики-нолики», знакомую многим. Восполь-
зуемся возможностями библиотеки Tkinter и модулем
random.
«Крестики-нолики»
Messagebox
Информационное окно
В Tkinter используется MessageBox для вывода со-
общения в новом окне и имеет два параметра. Первый
параметр функции задает имя, которое отображается
в заголовке диалогового окна. Второй параметр – текст
сообщения. Данные функции возвращают строку, кото-
рая обычно игнорируется, поскольку не несет информа-
ции.
Приведенный ниже код позволяет показать окно с
сообщением Tkinter:
■■ в Python версии 3 и выше:
from tkinter import messagebox
messagebox.showinfo("Title", "Message")
■■ в Python версии 2.х:
import Tkinter
import tkMessageBox
tkMessageBox.showinfo("Title", "Message")
3
Урок № 4
Диалоговое окно
Позволяет задать пользователю однозначный во-
прос, на который ожидается ответ «да/нет». Возвращае-
мое значение является логическим типом и возвращает
True/False. Если пользователь выбирает кнопку «Отме-
на», возвращается None.
answer = messagebox.askokcancel("Question","Open
this file?")
4
«Крестики-нолики»
answer = messagebox.askyesnocancel("Question",
"Continue playing?")
5
Урок № 4
Simpledialog
Если необходимо предоставить возможность поль-
зователю ввести данные и считать значение строки,
можно использовать объект simpledialog. Пользова-
тель может ввести значение и нажать Оk. Если пользо-
ватель нажимает «Отмена», то возвращается None. Им-
портируем simpledialog.
from tkinter import simpledialog
Предложим пользователю ввести число. Для этого
воспользуемся функцией askinteger(), которая име-
ет такие параметры: имя окна, текст, минимальное и
максимальное допустимое значение. Считать можно
целые числа askinteger(), числа с плавающей точкой
askfloat(), строки ()askstr.
answer = simpledialog.askinteger("Input", "Input
number", parent = window, minvalue = 0,
maxvalue = 100)
if answer is not None:
print("Your number", answer)
else:
print("No number")
6
«Крестики-нолики»
Приложение
ActivePlayer = 1
p1 = []
p2 = []
window = Tk()
window.title("Game")
7
Урок № 4
8
«Крестики-нолики»
def ButtonClick(id):
global ActivePlayer
global p1
global p2
print("ID:{}".format(id))
if (ActivePlayer == 1):
SetLayout(id, "X")
p1.append(id)
ActivePlayer = 2
9
Урок № 4
print("P1:{}".format(p1))
ChooseWinner()
10
«Крестики-нолики»
def ChooseWinner():
Winner = -1
''' W I N N E R - 1 '''
if ((1 in p1) and (2 in p1) and (3 in p1)):
Winner = 1
if ((1 in p2) and (2 in p2) and (3 in p2)):
Winner = 2
11
Урок № 4
12
«Крестики-нолики»
if Winner == 1:
messagebox.showinfo("Winner", "Player 1 is
Winner")
elif Winner == 2:
messagebox.showinfo("Winner", "Player 2 is
Winner")
def AutoPlay():
global p1
global p2
EmplyCells = []
for i in range(9):
if ( (i+1 in p1) or (i+1 in p2)):
EmplyCells.append(i+1)
window.mainloop()
13
Урок № 4
«Крестики-нолики»