Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГоловковИ.Е._12002108_Курсовая_работа.docx
Скачиваний:
5
Добавлен:
26.06.2024
Размер:
2.5 Mб
Скачать

1 Общая постановка задачи

Сейчас очень сложно представить современную компьютерную игру без какой-либо диалоговой системы, которая существовала и в первых компьютерных играх. Диалоговые компьютерные игры представляют собой текстовые сообщения, в которых пользователю предлагается выбор из нескольких вариантов, и этот выбор определяет дальнейшее развитие игровой ситуации.

В Интернете существует множество программных реализаций судоку. Например, на сайте [12] можно сыграть в 5 уровней сложности судоку. Здесь игра содержит само поле, клетки которого можно заполнить, нажав на одну из цифр справа, секундомер, выбор уровня сложности, подсказку, вставляющую правильную цифру в выбранную пользователем клетку, а также другие кнопки. Пользовательский интерфейс представлен на рисунке 1.1.

Рисунок 1.1 – Графический интерфейс судоку сайта sudoku.com/ru

Классический вариант судоку использует квадрат 9 × 9 клеток (поле), разделённый на квадраты 3 × 3 (районы). Суть решения судоку – заполнение латинского квадрата. Латинский квадрат – это квадратная матрица N порядка, в которой каждая строка и каждый столбец содержат каждый элемент множества S, состоящего из N элементов. Каждый элемент множества S должен встречаться в каждой строке, каждом столбце и каждом районе ровно один раз[8].

В самом начале игры существуют уже заполненные клетки, называемые подсказками (или ключами). Они помогают игроку заполнить остальные клетки поля, чтобы прийти к единственно верному решению головоломки. Минимальное количество таких подсказок для решения – 17, но в зависимости от сложности их количество может изменяться, как и общее время решения[9].

Чтобы создать поле судоку, потребуется двумерный массив, состоящий из строк, содержащих в себе элементы с фиксированными индексами. Количество строк, столбцов и элементов заранее известны: 9 строк × 9 элементов (столбцов) в каждой = 81 элемент. Для автоматической генерации понадобится «базовое поле» – размещаем в первую строку цифры 1-9, в строках ниже смещаем на 3 позиции влево, т.е. 4-3 и 7-6. Далее переходя в следующий район по вертикали смещаем на 1 позицию влево предыдущий район[10].

Далее пользователю предлагается выбор уровня сложности – он повлияет на количество клеток-подсказок при старте игры: 27 – простой, или 36 – более сложный . Созданные подсказки должны соответствовать правилам, так как не отличаются от элементов, вписанным пользователем:

– элемент-подсказка принадлежит множеству S = {1,2,3,4,5,6,7,8,9};

– элемент-подсказка встречается один раз в строке;

– элемент-подсказка встречается один раз в столбце;

– элемент-подсказка встречается один раз в районе.

Так как сложные судоку могут решаться несколько десятков минут, после начала игры стартует секундомер, останавливающийся после заполнения пользователем всего поля и отражающий время заполнения всего поля.

Далее пользователь выбирает клетку, в которую он хочет поместить цифру из множества S, а затем саму цифру. При неправильном выборе клетки будет выводиться сообщение некорректном вводе. Если же текущая клетка пустая, но выбранная пользователем цифра не соответствует единственно верной, то будет выведено сообщение о том, что пользователь совершил ошибку и их счётчик увеличится на единицу. При заполнении всего поля игра считается успешно завершённой.

После завершения время игры, имя пользователя, его количество ошибок и выбранный уровень сложности записываются в файл данных, из которого эти данные можно вывести в консоль.

Простой пользователь не может просмотреть исходный код этих программ, поэтому возникает потребность создать программную реализацию обработки массивов «с нуля». Для демонстрации алгоритмов обработки в графическом режиме была выбрана игра-головоломка судоку.

Программный продукт написан на языке программирования С++ и реализован в программе Microsoft Visual Studio 2019/2022.

Таким образом, в первом разделе содержится общая постановка задачи, определены основные правила судоку, ход игры, а также процесс взаимодействия с консолью.