Академический Документы
Профессиональный Документы
Культура Документы
Курсовая работа
Тема: Создание игрового приложения «Крестики-нолики»
Исполнитель: Кудайбергенов Р. Д.
Группа: ПКС-1-21
Руководитель: Мысалиева А.К.
Бишкек 2023
ОГЛАВЛЕНИЕ
ОГЛАВЛЕНИЕ 2
ВВЕДЕНИЕ 3
ПОСТАНОВКА ЗАДАЧИ 4
СТРУКТУРА ПРИЛОЖЕНИЯ 19
ЗАКЛЮЧЕНИЕ 22
ПРИЛОЖЕНИЕ 25
main.py код 25
2
ВВЕДЕНИЕ
3
ПОСТАНОВКА ЗАДАЧИ
4
6. Основной цикл игры: Разработайте основной цикл игры, который
последовательно будет вызывать функции для обработки ходов игроков и
компьютера, а также проверять состояние игры. Цикл должен продолжаться
до достижения победы или ничьей.
5
НАЗНАЧЕНИЕ И ОБЛАСТЬ ПРИМЕНЕНИЯ ПРОГРАММНОГО
ПРОДУКТА.
8
ВЫБОР И ОБОСНОВАНИЕ ВЫБОРА ИНСТРУМЕНТАЛЬНЫХ
СРЕДСТВ
2. Библиотека Tkinter:
1. Встроенная библиотека: Tkinter является частью стандартной библиотеки
Python, что означает, что она доступна по умолчанию без необходимости
установки дополнительных пакетов.
2. Кроссплатформенность: Tkinter поддерживается на различных
операционных системах (Windows, macOS, Linux), что обеспечивает
возможность запуска программного продукта на разных платформах.
3. Простота использования: Tkinter предоставляет простой и интуитивно
понятный интерфейс для создания графических пользовательских
интерфейсов (GUI).
4. Гибкость и настраиваемость: Tkinter предлагает широкий спектр
возможностей для настройки внешнего вида и поведения элементов
интерфейса.
9
С использованием языка программирования Python и библиотеки Tkinter был
создан класс TicTacToe, который реализует логику игры "Крестики-нолики".
Класс содержит методы для создания игрового поля, обработки ходов
игроков, проверки наличия победителя или ничьи, сброса состояния доски и
отображения сообщений о результате игры. Метод start() запускает основной
цикл игры, в котором пользователь может взаимодействовать с игровым
полем.
Таким образом, выбор языка программирования Python и библиотеки Tkinter
обусловлен их простотой использования, доступностью,
кроссплатформенностью и обширными возможностями для создания
графических пользовательских интерфейсов.
Python является одним из наиболее популярных языков программирования в
мире благодаря своей простоте и читабельности кода. Он обладает
обширным набором библиотек, которые предоставляют готовые
инструменты и функции для различных задач, что значительно упрощает
процесс разработки.
11
впечатления и добавить звуковые эффекты для увеличения атмосферности
игры.
12
б) Интеграция рекламы: Если ваша игра получает достаточно трафика и
пользователей, вы можете рассмотреть вариант интеграции рекламы.
Например, вы можете включить рекламные баннеры
в пользовательский интерфейс или предлагать видеоролики для получения
дополнительных игровых возможностей или бонусов.
13
реализации логики игры, создания интерактивного пользовательского
интерфейса и настройки внешнего вида элементов интерфейса.
14
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ СОЗДАНИЕ САЙТА
15
Метод check_winner() проверяет все возможные комбинации клеток на
игровом поле и возвращает True, если найден победитель, иначе возвращает
False.
Метод check_draw() проверяет, есть ли еще пустые клетки на игровом поле.
Если все клетки заполнены и нет победителя, то возвращается True, иначе
возвращается False.
Метод reset_board() сбрасывает состояние игрового поля и обновляет текст
всех кнопок.
16
Ничья check_draw()
17
Обработка победителя check_winner()
18
СТРУКТУРА ПРИЛОЖЕНИЯ
1. Импорт библиотек:
- Импортируется модуль `tkinter` под псевдонимом `tk` для создания
графического интерфейса.
- Импортируется функция `messagebox` из модуля `tkinter` для отображения
информационных сообщений.
2. Класс TicTacToe:
- Класс `TicTacToe` инициализирует игру и содержит всю логику игрового
процесса.
19
- Метод `__init__` устанавливает начальные значения, создает главное окно
приложения (`Tk`) и настраивает его заголовок.
- Создаются кнопки, представляющие клетки на игровом поле, и
добавляются в двумерный массив `buttons`.
- Метод `make_move` обрабатывает ход игрока, проверяет допустимость
хода, обновляет игровое поле и проверяет наличие победителя или ничью.
- Метод `check_winner` проверяет игровое поле на наличие выигрышной
комбинации клеток.
- Метод `check_draw` проверяет, возможна ли ничья на текущем состоянии
игрового поля.
- Метод `reset_board` сбрасывает состояние игрового поля и обновляет
текст всех кнопок.
- Метод `start` запускает основной цикл приложения, обрабатывая события
и позволяя игрокам взаимодействовать с игрой.
21
ЗАКЛЮЧЕНИЕ
22
Однако, в ходе работы было выявлено несколько возможных
усовершенствований программного продукта:
1. Реализация улучшенного алгоритма для хода компьютерного противника,
который будет обладать более высокой степенью интеллектуальности и
стратегического мышления.
2. Добавление возможности выбора уровня сложности игры, чтобы
пользователи могли выбрать соответствующий им уровень вызова.
3. Расширение интерфейса программы с использованием графических
элементов, чтобы сделать его более привлекательным и интуитивно
понятным для пользователей.
Таким образом, разработанный программный продукт предоставляет
возможность игры в "Крестики-нолики" и может быть использован в
различных сферах, от развлечений до образования и исследований.
Внесение усовершенствований в продукт позволит улучшить его
функциональность и привлекательность для пользователей.
В процессе выполнения работы были использованы различные источники
информации, включая книги, статьи и онлайн-ресурсы. Эти источники
помогли в изучении языка программирования Python, разработке алгоритмов
игры и понимании принципов искусственного интеллекта.
Курсовая работа по разработке приложения для игры "Крестики-нолики"
представляет собой значимый вклад в области программирования и
разработки игр, а также способствует развитию навыков алгоритмического
мышления и программирования у автора работы.
23
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
24
ПРИЛОЖЕНИЕ
main.py код:
import tkinter as tk
from tkinter import messagebox
class TicTacToe:
def __init__(self):
self.current_player = "X"
self.board = [[" " for _ in range(3)] for _ in range(3)]
self.root = tk.Tk()
self.root.title("Крестики-нолики")
self.buttons = []
for i in range(3):
row = []
for j in range(3):
button = tk.Button(self.root, text=" ", font=("Helvetica", 20),
width=6, height=3,
command=lambda i=i, j=j: self.make_move(i,
j))
button.grid(row=i, column=j)
row.append(button)
self.buttons.append(row)
def check_winner(self):
for i in range(3):
if self.board[i][0] == self.board[i][1] == self.board[i][2] != " ":
return True
if self.board[0][i] == self.board[1][i] == self.board[2][i] != " ":
return True
return False
def check_draw(self):
for row in self.board:
if " " in row:
return False
return True
def reset_board(self):
self.current_player = "X"
self.board = [[" " for _ in range(3)] for _ in range(3)]
for i in range(3):
for j in range(3):
self.buttons[i][j].config(text=" ")
def start(self):
self.root.mainloop()
game = TicTacToe()
game.start()
26