Автор работы: Пользователь скрыл имя, 13 Июня 2014 в 14:32, курсовая работа
В данной работе описывается игра «Реверси», написанная в соответствии с постановкой задачи на курсовой проект по предмету «Теория создания программного продукта».
Всегда с момента появления первых ПЭВМ существовал интерес пользователей к каким-либо компьютерным играм. Существуют как сложные компьютерные игры, так и относительно простые. Реверси - относительно несложная логическая игра. Основанием для разработки явилось выполнение курсовой работы.
Введение……………………………………………………………………………5
Техническое задание………………………………………………………………5
История игры………………………………………………………………………5
Сюжет игры………………………………………………………………………..5
Описание программы……………………………………………………………..6
Алгоритм…………………………………………………………………………...7
Руководство пользователя………………………………………………………...8
Описание компонент программы…………………………………………………9
Заключение………………………………………………………………….…….10
Список используемой литературы……………………………………………...11
|
МИНОБРНАУКИ РОССИИ | |||
Федеральное государственное бюджетное образовательное учреждениевысшего профессионального образования"Московский государственный
технический университет
| |||
______________________________ (наименование факультета) | |||
______________________________ (наименование кафедры) |
КУРСОВОЙ ПРОЕКТ (РАБОТА) | |
по дисциплине | |
«_____________________________ (наименование дисциплины) | |
Тема курсового проекта (работы)
«_____________________________ | |
Студент группы ____________________ (учебная группа) |
Фамилия И.О |
Руководитель курсового проекта (работы) должность, звание, ученая степень |
Фамилия И.О |
Рецензент (при наличии) должность, звание, ученая степень |
Фамилия И.О |
Работа представлена к защите |
«__»_______201___ г. |
(подпись студента) |
«Допущен к защите» |
«__»_______201___ г. |
(подпись руководителя) |
Москва 2014
МИНОБРНАУКИ РОССИИ | ||||||||
Федеральное государственное бюджетное образовательное учреждениевысшего профессионального образования"Московский государственный
технический университет
| ||||||||
______________________________ (наименование факультета) | ||||||||
______________________________ (наименование кафедры) | ||||||||
Утверждаю | ||||||||
Заведующий кафедрой______________И.О. Фамилия | ||||||||
«____» __________201___ г. | ||||||||
ЗАДАНИЕ | ||||||||
на выполнение курсового проекта (работы) | ||||||||
по дисциплине «_____________________________ | ||||||||
Студент ______________________________ | ||||||||
| ||||||||
| ||||||||
| ||||||||
| ||||||||
Задание на курсовой проект, (работу) выдал |
«___»______201__г. |
Подпись руководителя проекта |
Ф.И.О. руководителя проекта | |||||
Задание на курсовой проект, (работу) получил |
«___»______201__г. |
Подпись студента – исполнителя проекта |
Ф.И.О. студента - исполнителя проекта |
МИНОБРНАУКИ РОССИИ | |||
Федеральное государственное бюджетное образовательное учреждениевысшего профессионального образования"Московский государственный
технический университет
| |||
______________________________ (наименование факультета) | |||
______________________________ (наименование кафедры) |
Протокол заседания комиссии по защите курсового проекта
от ________________201__г. №__________
Состав комиссии:_____________________
______________________________
(должность, ученая степень, ученое звание)
Утверждена распоряжением заведующего
кафедрой ______________________________
(наименование кафедры)
от «___» ________ 201_ г. №________.
Слушали защиту курсового
проекта (работы) ____________(тема)____________
______________________________
по дисциплине ______________________________
студента группы________________________
(группа) (Ф.И.О.)
Во время защиты курсового проекта (работы) были заданы следующие вопросы:
1 ______________________________
2. ______________________________
3. ______________________________
Итоговая (комплексная) оценка выполнения и защиты курсового проекта (работы) _____________________
Члены комиссии ______________________________
______________________________
(подпись)
Содержание:
Введение…………………………………………………………
Техническое задание……………………………………………………………
История игры……………………………………………………………………
Сюжет игры……………………………………………………………………
Описание программы………………………………………………………
Алгоритм…………………………………………………………
Руководство пользователя………………………………………………
Описание компонент программы…………………………………………………9
Заключение……………………………………………………
Список используемой литературы……………………………………………...
Приложение…...…………………………………………
Введение
В данной работе описывается
игра «Реверси», написанная в
соответствии с постановкой
Всегда с момента появления первых ПЭВМ существовал интерес пользователей к каким-либо компьютерным играм. Существуют как сложные компьютерные игры, так и относительно простые. Реверси - относительно несложная логическая игра. Основанием для разработки явилось выполнение курсовой работы.
Техническое задание
Целью работы является
закрепление знаний по
История игры
Игра была изобретена в Великобритании в 1180 году и пользовалась большой популярностью, но впоследствии была забыта. Возродили её в Японии, где она в 1971 году под названием “отелло” вновь стала популярна. С 1977 года регулярно проводятся чемпионаты мира по игре в реверси.
Сюжет игры
В игре используется квадратная доска размером 10*10 клеток (все клетки могут быть одного цвета) и 100 фишек, схожих по форме и размерам с фишками для игры в нарды или шашки. Фишки с двух сторон окрашены в контрастные цвета, например черный и белый. Фишки делятся поровну между двумя игроками. Один из из игроков играет белыми, другой — чёрными. Игра начинается с того, что на центр доски ставят 2 черные и 2 белые фишки.
Игра проводится на одном компьютере и управляется только левой кнопкой устройства (мыши). Клавиатура в игре не используется.
Для компьютера эта игра является достаточно простой и хорошие программы без особого труда обыгрывают даже чемпионов среди людей. Данное качество достигается на данном этапе развития техники алгоритмом альфа-бета отсечения, с использованием большой базы данных уже прошедших партий. В игре существует порядка 10^28 позиций, и около 10^58 возможных партий.
Алгоритм альфа-бета отсечения
Альфа-бета отсечение (англ. Alpha-beta pruning) — это алгоритм поиска, стремящийся сократить количество узлов, оцениваемых в дереве поиска алгоритмом минимакс. Этот алгоритм предназначен для антагонистических игр и используется для машинной игры (в шахматах и других). В основе алгоритма лежит идея, что оценивание ветви дерева поиска может быть досрочно прекращено (без вычисления всех значений оценивающей функции), если было найдено, что для этой ветви значение оценивающей функции в любом случае хуже, чем вычисленное для предыдущей ветви. Альфа-бета отсечение является оптимизацией, так как результаты работы оптимизируемого алгоритма не изменяются.
Преимущество альфа-бета отсечения фактически заключается в том, что некоторые из ветвей подуровней дерева поиска могут быть исключены после того, как хотя бы одна из ветвей уровня рассмотрена полностью. Так как отсечения происходят на каждом уровне вложенности (кроме последнего), эффект может быть весьма значительным. На эффективность метода существенно влияет предварительная сортировка вариантов (без перебора или с перебором на меньшую глубину) — при сортировке чем больше в начале рассмотрено «хороших» вариантов, тем больше «плохих» ветвей может быть отсечено без исчерпывающего анализа. минимаксный поиск осуществляется в глубину, поэтому в любой момент времени достаточно рассматривать узлы вдоль единственного пути в дереве. Алгоритм альфа-бета-отсечения получил свое название по следующим двум параметрам, которые представляют пределы в зарезервированных значениях, присутствующих во всех узлах вдоль этого пути: а = значение наилучшего варианта (т.е. варианта с самым высоким значением), который был до сих пор найден в любой точке выбора вдоль пути для игрока МАХ; Р = значение наилучшего варианта (т.е. варианта с самым низким значением), который был до сих пор найден в любой точке выбора вдоль пути для игрока MIN. Алгоритм альфа-бета-поиска в процессе своей работы обновляет значения а и Р, а также отсекает оставшиеся ветви в узле (т.е. прекращает рекурсивные вызовы), как только становится известно, что значение текущего узла хуже по сравнению с текущим значением а или Р для игрока МАХ или MIN соответственно.
Для работы с программой необходимо активизировать её. Для этого нужно активировать программу. Откроется рабочее окно приложения.
Оно состоит из элементов:
Затем нажимая левой клавишей мыши на игровом поле делаем ходы, ставя свои фишки, руководствуясь стандартными правилами игры. Игра продолжается до тех пор, пока всё поле не будет заставлено фишками игрока и противника. Затем программа предлагает начать новую игру.
Классы
При запуске программы активируется класс QApplication, который руководит управляющей логикой и основными настройками.
QApplication содержит основной цикл событий, в котором все события от оконной системы и других источников обрабатываются и координируются. Он также обрабатывает инициализацию и завершение приложения и обеспечивает управление сессиями. Кроме того, QApplication обрабатывает большинство общесистемных и общепрограммных настроек.
После Qapplication активируется класс QMainWindow, который открывает на экране главное окно приложения.
Класс QWidget является базовым для всех объектов пользовательского интерфейса.
Виджет - это элементарный объект пользовательского интерфейса: он получает события мыши, клавиатуры и другие события от оконной системы и рисует свое изображение на экране. Каждый виджет имеет прямоугольную форму.
Класс Field отвечает за размер и состояние игрового поля, обработку сигнала нажатия клетки, сброс поля в начальное состояние при перезапуске игры.
Qmenubar Унаследован от QWidget. Строка меню состоит из списка горизонтального меню.
Класс QAction предоставляет абстрактное действие пользовательского интерфейса, которое может быть вставлено в виджеты.
Класс Dot отвечает за установку и возвращение состояния клетки, возвращение индекса строки и столбца клетки, прорисовку и координаты клетки.
В приложениях множество общих команд может быть вызвано через меню, панели инструментов и сочетания клавиш. Поскольку пользователь ожидает, что каждая команда будет выполняться одним и тем же способом, независимо от используемого пользовательского интерфейса, то полезно представить каждую команду как действие.
Класс QPainter выполняет низкоуровневое рисование на виджетах и других устройствах рисования.
QPainter предоставляет оптимизированные функции, чтобы сделать большую часть программы для рисования в GUI приложениях. Он может сделать все, от простых линий до сложных форм. Она также может вырисовывать выровненный текст и растровые изображения. Как правило, он рисует в “естественной” системе координат.
Информация о работе Описание программного продукта - игра «Реверси»