- •«Белгородский государственный национальный исследовательский университет»
- •Кафедра Прикладной информатики и информационных технологий
- •1 Курса группы 12002108
- •Белгород 2022 содержание
- •Введение
- •1 Общая постановка задачи
- •2 Разработка алгоритмов и структур данных
- •VidNum(poleVis, pole, dff)
- •VidNum()
- •3.1 Программирование задачи в консольном варианте
- •3.2 Программирование задачи с использованием экранных форм
- •4 Демонстрация разработанного программного приложения
- •4.1 Демонстрация задачи в консольном варианте
- •4.2 Демонстрация задачи с использованием экранных форм
- •Заключение
- •Список использованных источников
- •Приложение a
- •Приложение b
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.
Таким образом, в первом разделе содержится общая постановка задачи, определены основные правила судоку, ход игры, а также процесс взаимодействия с консолью.
