Автор работы: Пользователь скрыл имя, 17 Февраля 2011 в 16:34, курсовая работа
Программный продукт «Логическая игра «Морской бой»», используемый пользователем персонального компьютера.
Разработчиком программы является студент Томского Политехнического Университета группы 8880 специальности «Информационные системы и технологии в бизнесе» Погребной Вадим Юрьевич.
Программный продукт создается на основании выданного задания от преподавателя кафедры АИКС Луневой Е.Е.
Первым этапом разработки программного продукта будет составление функциональной спецификации, в которой будет описана программа с точки зрения пользователя, её основные функции. Вторым этапом будет разработка основных модулей программы и их функциональных возможностей, кодирование программы, отладка и тестирование программы.
Рис.
3. Главное окно приложения
«Морской бой», режим
игры с человеком
Форма в режиме игры с человеком изображена на рисунке 3. В данном случае есть возможность изменять имя обоих игроков, также появляется изображение кораблей второго игрока. При нажатии надписи «ГОТОВ» игрок подтверждает свою готовность.
1.1.5 Форма данных о программе
Содержит данные о создателе, версию и название программы.
Форма имеет вид, изображенный на рисунке 4.
Рис.
4. Данные о программе
1.1.6 Форма результатов игр
Содержит результаты прошлых игр, где указываются имена лучшей десятки игроков и количество выстрелов, которые им понадобились до выигрыша.
Форма имеет вид, изображенный на рисунке 5.
Рис.
5. Результаты игр
Форма
находится всегда поверх основной формы,
поэтому обращение к главному
окну невозможно при активном окне
результатов.
Для запуска необходимо открыть файл программы с расширением .exe. При запуске программы появится окно с двумя игровыми полями, первоначальный режим игры - “Игра против компьютера”. Для того, чтобы переключиться на режим “Игра против человека”, необходимо зайти в главное меню программы и выбрать соответствующий пункт. В том же меню находятся все основные функции игры:
Меню будет доступно в любой момент времени приложения, за исключением секунд, когда вы будете производить выстрел, но об этом далее.
Также на форме приложения сразу можно заметить поля для ввода имен игроков, в режиме игры с компьютером можно изменять только первое поле ввода, при игре с человеком изменяются оба поля. В той же области окна находятся поля, предназначенные для ведения статистики боя, они будут изменяться в течение боя. Заметим, что изменение имен станет невозможным при переключении в режим боя. Мерцающая надпись указывает на то, игра находится в режиме расстановки кораблей, сама надпись является ссылкой на пункт меню – начать бой. Если игра находится в режиме игры с человеком, то метка начнет мерцать только после готовности обоих игроков начать бой. Для подтверждения готовности необходимо кликнуть на соответствующую надпись. Но для начала нужно будет расставить корабли, сначала расставляет первый игрок (второй должен будет отвернуться), затем он нажимает на «Готово» и аналогичным образом второй игрок проводит те же операции. Только после этого можно будет начать бой, на что укажет мерцающий текст. При игре с компьютером все намного проще, нужно просто расставить корабли и можно приступить к бою.
Важной частью программы является расстановка кораблей. Для ее реализации нужно просто зажать левую кнопку мыши на корабле и перетащить в задуманное положение. Для поворота корабля на 90 градусов нужно нажать на нем правой кнопкой мыши. При наведении курсора на каждый объект возможность его перетаскивания показывается графически в виде специального курсора. Если корабли будут соприкасаться между собой, то начать бой будет невозможным, система вам не позволит этого сделать, поэтому расставляйте корабли правильно. Также хотелось бы отметить, что расставлять корабли необходимо внимательно и с умом, так как от этого зависит весь ход боя. Компьютер расставляет корабли автоматически, если вы кликнули пункт начать бой или «FIGHT» на самом окне, что намного удобнее.
Изначальный вид окон вы можете посмотреть на рисунках 2 и 3. Окна результатов и данных о программе показаны на рисунках 4 и 5. Все функции приложения до начала боя изображены на следующем рисунке (рис.6).
Рис.
6. Функции приложения
до начала боя
После того, как вы перейдете в режим боя, изображение кораблей исчезнет, их положение запомнит система. Теперь вы можете вести бой нажатием левой кнопки мыши по выбранной клетке поля боя. Выстрелы проводятся по очереди до момента, пока не будут убиты корабли одного из противников. При попадании по кораблю факт попадания будет показан крестом и характерным звуком, при убийстве корабля также прозвучит звук и в тоже время все поля вокруг корабля, по которым еще не проводились выстрелы, будут отмечены специальным кругом. Этот же круг будет изображен и в случае промаха одного из игроков, в этом случае ход перейдет другому игроку. Чтобы понять, кто сейчас должен стрелять, нужно посмотреть на поле, в котором написано имя игрока, оно должно гореть красным цветом. Компьютер производит выстрелы сразу же после того, как вы промахнулись, его выстрелы производятся с некоторой паузой для того, чтобы вы успели оценить свои потери и насладиться звуками взрывов кораблей. Для визуального ознакомления посмотрите на рисунок 7. Также стоит отметить, что во время выстрелов, как игроков, так и компьютера, окно приложения будет находиться поверх всех окон, а меню программы будет недоступно. Это неудобство необходимо для правильной работы приложения. Чтобы не нарушать ход игры и не способствовать возникновению проблем с графическим изображением, старайтесь не перекрывать приложение другими окнами во время выстрелов.
Рис. 7. Режим боя
Цель игры – убить все корабли противника быстрее, чем это сделает сам противник. Также есть возможность соревноваться с результатами прошлых игроков, их можно увидеть, по-прежнему кликнув на пункт результаты в меню программы.
Поэтому
главный результат будет
Рис.
8. Победа одного из игроков
Заметим, что в этом случае корабли невозможно перетащить, они показаны только для визуализации. Надпись начинает вновь мерцать, но в данном случае она ссылается на функцию меню «Новая игра».
Программа состоит из четырех модулей:
Содержит следующие переменные:
bool FFlashEnabled; //Включение мерцания
int FFlashRate; //Скорость мерцания
TTimer *Timer; //Таймер
А также следующие функции:
void SetFlashEnabled (bool AFlashEnabled);
Включение мерцания, параметр регулирует его включение
void SetFlashRate (int AFlashRate);
Установление скорости; параметр содержит число, соответствующее скорости мерцания
void OnTimer (TObject *Sender);
Событие
таймера.
Содержит функцию:
void OKClick(TObject *Sender);
Предназначена
для исключения из области видимости
формы данного модуля.
Содержит следующие функции:
void __fastcall OKClick(TObject *Sender);
Предназначена для исключения из области видимости формы данного модуля.
void LoadRes ();
Функция
загружает данные из файла «SeaButResults.txt»
и размещает их на форме.
Содержит следующие переменные (все переменные в разделе private):
TDrawGrid **Ships1; //Корабли на 1-ом поле
TDrawGrid **Ships2; //Корабли на 2-ом поле
int **field1;
int **field2; //Массив 2-го поля
int linex; //Координата x графической линии
int liney; //Координата y графической линии
Shoot Cpu; //Переменная для хранения информации стрельбы компьютера, является переменной типа Shoot, определенного следующей структурой:
struct Shoot //Структура для хранения данных выстрелов компьютера
{
int Choice; //Выбор
bool Target; //Попадание
bool TarDir; //Правильно ли выбрана горизонталь
bool TarDirect; //Правильно ли выбрано направление
bool TarDestr; //Корабль убит
int Direction; //Направление
int RowNum[100]; //Неопознанные точки поля
int RowDir[4]; //Неопознанные направления
};
int Choice; //Выбор при попадании компьютера
int Ships1Destr[10]; //Подбитые корабли 1-го поля
int Ships2Destr[10]; //Подбитые корабли 2-го поля
int Count1Destr; //Кол-во подбитых кораблей 1-го поля
int Count2Destr; //Кол-во подбитых кораблей 2-го поля
Graphics::TBitmap *Bitmap1; //Для хранения изображения канвы
Graphics::TBitmap *Bitmap2;
TFlashingLabel *FIGHT;
//Динамическая мерцающая метка