Игра "Шахматы"

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 21.01.2013
Размер файла 23,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Игра "Шахматы"

1.Системный анализ

1.1 Составление словаря предметной области

игра шахматы программный перемещение

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

В результате выполнения указанной процедуры, получим следующий словарь предметной области:

Доска (TDoska)

Атрибуты:

Координата X

Координата Y

Игровые фигуры(TPlayFigure)

Курсор(TKursor)

Цвет клетки(Color)

Цвет доски(BaseColor)

?Действия:

Нарисовать поверхность (Show())

Моделировать игру (Play())

Курсор (TKursor)

Атрибуты:

Координата X(PointX)

Координата Y(PointY)

Цвет (Color)

Действия:

Двигаться (MoveKursor())

?Игровые фигуры(TPlayFigure)

Атрибуты:

Координата X(PointX)

Координата Y(PointY)

Цвет (Color)

Действия:

Выполнить ход (MovFigure())

Выполнить съедение (DelFigure())

Графическая фигура (TFigure)

Атрибут

Координата X (PointX)

Координата Y (PointY)

Цвет (Color)

Действия

Появиться (Show())

Скрыться (Hide())

Пешка

Атрибуты:

Координата X (PointX)

Координата Y (PointY)

Цвет (Color)

Действия:

Выполнить ход (Moved())

Выполнить съедение (Delete())

Ладья

Атрибуты:

Координата X (PointX)

Координата Y (PointY)

Цвет (Color)

Действия:

Выполнить ход (Moved())

Выполнить съедение (Delete())

Конь

Атрибуты:

Координата X (PointX)

Координата Y (PointY)

Цвет (Color)

Действия:

Выполнить ход (Moved())

Выполнить съедение (Delete())

Слон

Атрибуты:

Координата X (PointX)

Координата Y (PointY)

Цвет (Color)

Действия:

Выполнить ход (Moved())

Выполнить съедение (Delete())

Ферзь

Атрибуты:

Координата X (PointX)

Координата Y (PointY)

Цвет (Color)

Действия:

Выполнить ход (Moved())

Выполнить съедение (Delete())

Король

Атрибуты:

Координата X (PointX)

Координата Y (PointY)

Цвет (Color)

Действия:

Выполнить ход (Moved())

Выполнить съедение (Delete())

Моделируемая действительность (TReality)

Атрибуты:

Доска (TDoska)

Действия:

Начать игру (Run())

К полученному словарю предметной области следует сделать следующие замечания.

Управление фигурами осуществляется курсором. Перемещение курсора выполняется при помощи клавиш курсора. Чтобы выполнить ход, курсором помечается нужная фигура и клетка, в которую фигура перемещается. При попытке выхода курсора за пределы экрана подается звуковой сигнал. Неверный выбор курсором внеочередной фигуры или пустой клетки без выбора фигуры также вызывает сообщение об ошибке. В связи с этим возникает необходимость ввода класса Звуковой сигнал (TSound).

Курсор вызывает действия Выполнить ход (MovFigure()) и Выполнить сьедение (DelFigure()) для соответствующей Игровой фигуры. Фигуры перемещаются в соответствии с правилами игры в шахматы. Проверка правильности хода осуществляется методами Moved() и Delete(), определенными отдельно для каждого вида фигур. Класс Игровые фигуры (TPlayFigure) является базовым абстрактным классом для классов Пешка, Ладья, Конь, Слон, Ферзь, Король.
Проверка очередности ходов осуществляется в методе Play() класса TDoska. Текущий ход отображается текстовым сообщением.
В связи с общими для всех отображаемых на доске фигур атрибутами PointX, PointY, Color вводим класс ТFigure, обладающий также методами Show() и Hide() для отображения фигуры на экране.

Строго говоря, игровая поверхность (поверхность и фон) не является замкнутой системой, она входит в состав более широкого понятия - моделируемая действительность. Об этом объекте известно лишь то, что он генерирует внешние события и воздействует на игровую поверхность в процессе игры(Run).

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

const int cKletSize=45; - размер клетки

const int cStrPointX=150; - координата х левого верхнего угла доски

const int cStrPointY=32; - координата y левого верхнего угла доски

const int cKursorClr=LIGHTRED; - цвет курсора

const int cKletClr=LIGHTGRAY; - цвет клетки

const int cDoskClr=WHITE; - цвет доски

const int cWhite=LIGHTCYAN; - цвет белых шашек

const int cBlack=GREEN; - цвет черных шашек

Необходимость графического отображения влечет расширение словаря предметной области. Для осуществлания корректного отображения фигуры на экране введем класс TDynamikFigure являющегося подклассом класса TFigure и базовым классом для TPlayFigure.

1.2 Техническое задание

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

1.2.1 Функции системы

- управление игрой осуществляется при помощи команд, подаваемых с клавиатуры: перемещение курсора (клавиши курсора), пометить фигуру и клетку, на которую она должна переместиться при ходе и съедении (клавиша «Enter»), прерывание игры и снятие пометки с фигуры (клавиша «Esc»), выбор дальнейших действий при прерывании: выход (клавиша «E»), начальная расстановка фигур (клавиша «R»), продолжение игры (клавиша «C»);

- отображение на экране дисплея сообщений, доски и перемещения по ней курсора и фигур;

вывод соощений об ошибках в случае:

- неверного (вопреки правилам игры) хода фигуры при съедении и перемещении;

- несвоевременного хода;

- попытки съесть фигурой фигуру своего цвета;

- попытки пометить пустую клетку, в которую выбранная фигура не может пойти по правилам игры;

- попытки выйти за пределы шахматной доски.

1.2.2 Эксплуатационные требования

технические требования - ПЭВМ IBM PC;

операционная система - MSDOS;

игра управляется одним пользователем.

1.2.3 Ограничения на процесс разработки

срок выполнения игры - до 28.05.99.

2. Проектирование

2.1 Идентефикация классов и объектов

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

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

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

2.2 Идентификация содержания классов и связей между классами и объектами

На этом шаге рассмотрим все классы, полученные в процессе выполнения анализа и синтеза.

Класс TSound. Класс содержит функцию Beep(), которая включает звуковой сигнал определенной длительности и тональности, если возникла ошибка, поэтому этот класс наследуется классом TKursor и классом TDoska.

Класс TFigure. Графические объекты в целом характеризуются своим положением на экране и основным цветом, поэтому атрибутами класса TFigure являются координаты геометрического местоположения (PointX и PointY) и цвет фигуры(Color). Графический объект при создании должен сразу располагаться в каком-то месте, поэтому для него требуется соответствующий конструктор. Необходимо отображать фигуру на экране. Для этого требуется функция Show().

Класс TDynamFigure. Класс является наследником класса TFigure и также является абстрактным (виртуальная функция Show()).Это класс фигур, которые могут перемещаться по экрану. Класс содержит в себе фунцию Hide(), предназначенную для скрытия объектов. Она выводит фигуру цветом фона. Цвет фона определяется функцией In() по координатам объекта и запоминается в атрибуте FonColor.

Класс TPlayFigure. Класс игровых фигур. Он наследует класс TDynamFigure, т.к. игровые фигуры способны перемещаться по экрану. При выборе фигуры необходимо ее выделить. Здесь определяется функция Invers(), инвертирующая цвет фигуры при ее выборе. Функция GetClr() используется для возврата цвета данной фигуры Color. Перемещение данной фигуры в точку с индексами (IndexX, IndexY) осуществляет функция MovFigure(), а съедение фигуры в клетке (IndexX, IndexY) - функция DelFigure().Чтобы определить, может ли выбранная фигура пойти на клетку с индесами IndexX, IndexY или съесть фигуру с этими же индексами, в этом классе объявляются виртуальные функции Moved() и Delete().Эти функции объявлены виртуальными, для того, чтобы они могли определяться для каждой фигуры отдельно.

Классы TPeshka, TLadia, TKonia, TSlonia, TFerzia, TKing содержат функцию Show().Она предназначена для отображения объектов этих классов на шахматной доске. Каждый объект переопределяет функцию Show() по своему. Эти классы содержат также функции Moved() и Delete(), которые двигают и удаляют (соответственно) фигуры, но для каждого вида фигур эти функции переопределяются отдельно и по разному, в зависимости от правил ходов и съедений в игре шахматы.

Классы TPeshka, TKonia, TKing наследуют класс TPlayFigure.

Классы TLadia и TSlonia виртуально наследуют класс TРlayFigure т.к. эти классы являются базовыми для класса TFerzia, который осуществляет множественное наследование этих классов.

Класс TKursor. Наследует класс TРlayFigure т.к. курсор перемещается по доске. Для получения кода нажатой клавиши в курсоре введена функция GetDirection() которая получает расширеный код нажатой клавиши. Обработка этого кода осуществляется в функции MoveKursor(). В соответствии с этим кодом функция MoveKursor() осуществляет перемещение курсора по экрану, выбор фигуры и вызывает для выбранной фигуры соответствующий метод Moved() или Delete().Функция MoveKursor() возвращает в функцию TDoska: Play() -1 в случае если было нажато esc или 0 для выполнения перехода хода.

Класс TDoska. Наследует класс TFigure т.к. доска не перемещается в процессе игры по экрану. Класс доска содержит в себе курсор и массив указателей на класс TРlayFigure, в процессе выполнения программы осуществляется позднее связывание этих указателей с конкретной фигурой (TPeshka, TLadia, TKonia, TSlonia, TFerzia, TKing). Введена функция Initiate() для выполнения первоначальной расстановки фигур на доске. Текущее состояние доски отображается на экране с помощью функции Show(). Для непосредственного осуществления игры (распределение ходов, инициация работы курсора, осуществление диалога с пользователем) существует функция Play().

Класс TReality. Объект класса содержит в себе саму поверхность theFone. Кроме того, в качестве атрибуты он должен содержать таймер theTimer.

2.3 Реализация классов и объектов

Все разработанные классы и выявленные объекты должны быть включены в проект. Уточненные диаграммы классов и объектов показаны на рис. 3,4. Для диаграммы объектов составлена диаграмма взаимодействия, иллюстрирующая порядок взаимодействия (рис. 5).

Все классы относятся к изучаемой области и будут входить в модуль Chess. Кроме того, для графического изображения простейших фигур необходимо использовать модуль Graphics. Головная программа main в данном случае является единственной и содержит инициализацию, выполнение и уничтожение единственного объекта класса TReality. Вся программная система реализуется одним процессом, поэтому нет необходимости составлять диаграмму процессов.

3. Программирование

Программирование выполнено на языке C++, что соответствует общим требованиям к курсовой работе. Основу для программирования составляют диаграммы и спецификации этапа проектирования. Необходимые детали разъясняются комментариями в тексте программы.

4. Тестирование

Тестирование выполним над методом Moved() класса TKonia. Допустим что используемый модуль Moved() класса TKonia абсолютно надежен.

4.1 Спецификация тестируемого метода

Имя: Moved()

Назначение: Выяснить, возможен ли ход коня из данного положения в положение с координатами IndexX IndexY

Аргументы: int IndexX, int IndexY (индексы нового положения).

Квалификация: доступа;

Расширение: добавление;

Действия: функция возвращает 1, если ход возможен, и 0 в обратном случае.

4.2 Тесты

Тесты допустимых входных границ и функциональных границ сведем в таблицу

N

Входные данные

Выходные данные

1

This->PointX: 380

(Индекс X: 5)

This->PointY: 292

(Индекс Y: 5)

This->COLOR: 7

IndexX:7

IndexY:4

Возвращается 1

ожидается 1

2

This->PointX: 380

(Индекс X: 5)

This->PointY: 292

(Индекс Y: 5)

This->COLOR: 7

IndexX: 6

IndexY: 3

Возвращается 1

ожидается 1

3

This->PointX: 380

(Индекс X: 5)

This->PointY: 292

(Индекс Y: 5)

This->СOLOR: 7

IndexX: 4

IndexY: 3

Возвращается 1.

ожидается 1

4

This->PointX: 380

(Индекс X: 5)

This->PointY: 292

(Индекс Y: 5)

This->COLOR: 7

IndexX: 3

IndexY: 4

Возвращается 1.

ожидается 1

5

This->PointX: 380

(Индекс X: 5)

This->PointY: 292

(Индекс Y: 5)

This->COLOR: 7

IndexX: 3

IndexY: 6

Возвращается 1.

ожидается 1

6

This->PointX: 380

(Индекс X: 5)

This->PointY: 292

(Индекс Y: 5)

This->COLOR: 7

IndexX: 4

IndexY: 7

Возвращается 1.

ожидается 1

7

This->PointX: 380

(Индекс X: 5)

This->PointY: 292

(Индекс Y: 5)

This->COLOR: 7

IndexX: 6

IndexY: 7

Возвращается 1

ожидается 1

8

This->PointX: 380

(Индекс X: 5)

This->PointY: 292

(Индекс Y: 5)

This->COLOR: 7

IndexX: 7

IndexY:6

Возвращается 1.

ожидается 1

9

This->PointX: 380

(Индекс X: 5)

This->PointY: 292

(Индекс Y: 5)

This->COLOR: 7

IndexX: 7

IndexY: 1

Возвращается 0

ожидается 0

10

This->PointX: 380

(Индекс X: 5)

This->PointY: 292

(Индекс Y: 5)

This->COLOR: 7

IndexX: 5

IndexY: 6

Возвращается 0.

ожидается 0

Заключение

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

Список литературы

Технология программирования: Метод. Указания к курс. работе./ Владим. гос. университет; Сост.: И.Р. Дубов, В.А. Барков, А.Г. Долинин. Владимир, 1999. 48 с.

Липаев В.В. Проектирование программных средств. М.: Высш.шк., 1990. - 303 с.

Березин Б.И., Березин С.Б. Начальный курс С и С++. - М.: ДИАЛОГ-МИФИ, 1999. -288 с.

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа [1,0 M], добавлен 21.06.2013

  • Анализ правил выбора хода на шахматной доске К. Шеннона. Характеристика программного модуля искусственного интеллекта для игры в шахматы. Контроль времени, поиск лучшего хода в шахматных алгоритмах. Разработка программы для игры с компьютерным оппонентом.

    дипломная работа [3,7 M], добавлен 07.07.2012

  • Стандартные процедуры и функции программы. Функция подсчёта шаров в одной линии. Воспроизведение анимации. Подсчёт проведённого в игре времени. Начисление очков. Реализация главного окна игры и перемещения шариков. Принципы составления фигур в линию.

    курсовая работа [555,7 K], добавлен 14.09.2013

  • Построение системы классов для описания плоских геометрических фигур: круг, квадрат, прямоугольник. Методы для создания объектов, перемещения на плоскости, изменения размеров и вращения на заданный угол. Реализованные алгоритмы, тестирование программы.

    курсовая работа [129,3 K], добавлен 04.05.2014

  • Общая характеристика сетевой игры с несколькими клиентами в программной среде MS Visual Studio 2010 на языке программирования C++ с использованием функций работы с сокетами. Реализация системного сервиса, разработки интерфейса, алгоритм его тестирования.

    курсовая работа [495,3 K], добавлен 06.01.2013

  • История создания игры "Тетрис", смысл и правила данной головоломки. Разработка поля игры и фигур тетрамино. Процедуры и функции, используемые для реализации движения фигур, их поворота и складывания в ряды, удаления и подсчета количества целых рядов.

    курсовая работа [87,0 K], добавлен 02.02.2013

  • Проектирование игры "Морской бой" путем составления диаграмм UML, IDEF0, DFD, моделирующих требования к программе. Разработка программы с использованием языка C# и фреймворка.NETFramework 3.5. Тестирование белого ящика и альфа-тестирование продукта.

    курсовая работа [3,9 M], добавлен 24.10.2013

  • Создание компьютерной игры посредством среды программирования Delphi. Инструменты разработки, компоненты и методы для разработки программы. Логическая и физическая структуры, основные функции и элементы управления программы, ее тестирование и отладка.

    курсовая работа [27,9 K], добавлен 26.07.2014

  • Расположение клавиш на клавиатуре. "Горячие клавиши" общего назначения. Использование цифровой клавиатуры для быстрого ввода чисел. Организация клавиш набора, функциональных, перемещения и управления. Характеристика основных символов клавиатуры.

    презентация [670,4 K], добавлен 10.08.2015

  • Разработка аналога игры "Крестики-нолики", где игроки выбирают размер поля. Правила игры. Интерфейс программы. Главная функция main. Класс XO. Метод вывода поля и хода игроков. Методы поиска крестиков, ноликов. Методы проверки выигрышных ситуаций игроков.

    курсовая работа [281,5 K], добавлен 30.01.2018

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

    курсовая работа [86,7 K], добавлен 27.05.2012

  • Создание помещения галереи, установка параметров графических объектов и вывод на экран комнат фотогалереи, а также осуществление просмотра галереи в автоматическом режиме. Разработка алгоритма перемещения по фотогалерее. Структура модуля Gallery.pas.

    курсовая работа [466,9 K], добавлен 07.06.2012

  • Значение компьютерного моделирования, прогнозирования событий, связанных с объектом моделирования. Совокупность взаимосвязанных элементов, важных для целей моделирования. Особенности моделирования, знакомство со средой программирования Турбо Паскаль.

    курсовая работа [232,6 K], добавлен 17.05.2011

  • Проектирование приложения "Тетрис", осуществляющего вывод различных фигур на экран случайным образом и их падение. Описание логической структуры программы, ее тестирование. Требования к аппаратной и программной средам. Функции для работы с приложением.

    курсовая работа [343,7 K], добавлен 20.01.2015

  • Изучение теоретических основ работы в Word, процесса создания и редактирования таблиц, преобразования текста в таблицу, объединения и разделения ячеек. Характеристика ввода формул с клавиатуры в программе Excel, особенностей их перемещения и копирования.

    курсовая работа [3,1 M], добавлен 02.05.2012

  • История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

    курсовая работа [168,1 K], добавлен 27.09.2013

  • Создание программы "компьютерная игра "баскетбол", с упрощенным изображением баскетбольного щита и игрока, с возможностью изменять положение игрока, направление броска и его силу. Построение алгоритма, описание процедур и функций, таблица идентификаторов.

    дипломная работа [72,7 K], добавлен 29.11.2011

  • Требования к функциональным характеристикам проектируемого интернет-магазина. Требования к составу и параметрам технических средств и программной документации. Стадии и этапы разработки интернет-магазина, проверка и контроль правильности ее работы.

    курсовая работа [598,2 K], добавлен 17.05.2011

  • Особенности визуальной среды программирования Microsoft Visual Studio 2015 Enterprise. Средства объектно-ориентированного программирования. Этапы проектирования программного комплекса. Отладка и тестирование программы игры "Виселица".

    курсовая работа [2,4 M], добавлен 31.01.2016

  • Разработка класса "Калькулятор" выполняющего ввод данных, проверку правильности введенных данных, выдачу соответствующих сообщений в случае возникновения ошибок. Листинг и скриншоты выполнения программы, порядок ее запуска. Руководство пользователя.

    курсовая работа [394,2 K], добавлен 18.05.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.