ТЕМА: «КРЕСТИКИ-НОЛИКИ»
Задание
1. В Приложении (Урок 4) приведен код игры «Крестики нолики». Создайте диалоговое окно, где пользователь
сможет выбрать тип игры: один игрок / два игрока.
2. Создайте диалоговое окно simpledialog, в которое
пользователь сможет ввести свое имя. В информационном
окне необходимо вывести имя победителя.

16 Ноя 2019 в 19:48
308 +1
1
Ответы
1

import tkinter as tk
from tkinter import simpledialog
from tkinter import messagebox

class TicTacToe:
def init(self, master):
self.master = master
self.master.title("Крестики-нолики")

self.turn = 'X'
self.board = [' ' for _ in range(9)]
self.create_board()
def create_board(self):
self.buttons = []
for i in range(3):
for j in range(3):
button = tk.Button(self.master, text='', width=10, height=3,
command=lambda i=i, j=j: self.make_move(i, j))
button.grid(row=i, column=j)
self.buttons.append(button)
def make_move(self, i, j):
if self.board[3*i + j] == ' ':
self.board[3*i + j] = self.turn
self.buttons[3*i + j].config(text=self.turn)
if self.check_win():
winner = 'Игрок 1' if self.turn == 'X' else 'Игрок 2'
messagebox.showinfo("Победитель", f"Победил {winner}")
self.reset_board()
elif ' ' not in self.board:
messagebox.showinfo("Победитель", "Ничья")
self.reset_board()
else:
self.turn = 'O' if self.turn == 'X' else 'X'
def check_win(self):
lines = [[0, 1, 2], [3, 4, 5], [6, 7, 8],
[0, 3, 6], [1, 4, 7], [2, 5, 8],
[0, 4, 8], [2, 4, 6]]
for line in lines:
if self.board[line[0]] == self.board[line[1]] == self.board[line[2]] != ' ':
return True
return False
def reset_board(self):
self.board = [' ' for _ in range(9)]
for button in self.buttons:
button.config(text='')

def get_game_mode():
result = simpledialog.askstring("Выбор режима игры", "Выберите режим игры (1 игрок / 2 игрока):")
if result == '1':
root = tk.Tk()
game = TicTacToe(root)
root.mainloop()
elif result == '2':
messagebox.showinfo("Информация", "Режим игры для двух игроков еще не реализован")
else:
messagebox.showinfo("Ошибка", "Некорректный выбор режима игры")

if name == 'main':
root = tk.Tk()
get_game_mode()
root.mainloop()

19 Апр в 01:45
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 94 888 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир