Логическая игра «Морской бой»

Автор работы: Пользователь скрыл имя, 17 Февраля 2011 в 16:34, курсовая работа

Описание работы

Программный продукт «Логическая игра «Морской бой»», используемый пользователем персонального компьютера.
Разработчиком программы является студент Томского Политехнического Университета группы 8880 специальности «Информационные системы и технологии в бизнесе» Погребной Вадим Юрьевич.
Программный продукт создается на основании выданного задания от преподавателя кафедры АИКС Луневой Е.Е.
Первым этапом разработки программного продукта будет составление функциональной спецификации, в которой будет описана программа с точки зрения пользователя, её основные функции. Вторым этапом будет разработка основных модулей программы и их функциональных возможностей, кодирование программы, отладка и тестирование программы.

Файлы: 1 файл

Пояснительная записка.doc

— 552.50 Кб (Скачать файл)

         

     Рис. 3. Главное окно приложения «Морской бой», режим игры с человеком 

         Форма в режиме игры с человеком изображена на рисунке 3. В данном случае есть возможность  изменять имя обоих игроков, также появляется изображение кораблей второго игрока. При нажатии надписи «ГОТОВ» игрок подтверждает свою готовность.

         1.1.5 Форма данных о программе

         Содержит  данные о создателе, версию и название программы.

   Форма имеет вид, изображенный на рисунке 4.

   

     Рис. 4. Данные о программе  

         1.1.6 Форма результатов игр

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

   Форма имеет вид, изображенный на рисунке 5.

   

     Рис. 5. Результаты игр 

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

    1. Диаграмма вариантов использования

     

    1. Диаграмма классов

    1. Диаграмма состояния

         

 

    1. Диаграмма последовательности

      

    1. Диаграмма компонентов

  
 
 
 
 
 
 
 
 
 
 
 

        1. Руководство пользователя

         Для запуска необходимо открыть файл программы с расширением .exe. При запуске программы появится окно с двумя игровыми полями, первоначальный режим игры - “Игра против компьютера”. Для того, чтобы переключиться на режим “Игра против человека”, необходимо зайти в главное меню программы и выбрать соответствующий пункт. В том же меню находятся все основные функции игры:

    1. Новая игра – функция необходима для аннулирования текущей игры и начало новой. Функция реализует начальную установку кораблей в том же режиме, в котором проходила игра. Этот пункт меню будет активен в любой момент времени.
    2. Выбор противника – человек или компьютер. Пункт недоступен в режиме боя.
    3. Начать бой – функция сработает, если корабли расставлены правильно. При вызове данной функции происходит переход в режим боя, положение кораблей сохраняется в памяти. Если выбран режим боя с компьютером, то система автоматически в произвольном порядке расставляет корабли. Об этой функции будет сказано дальше.
    4. Результаты – происходит загрузка результатов прошлых игр из файла и игроку показываются результаты в специальном окне (рис. 5). Пункт доступен в любой момент времени.
    5. Выход – функция завершения работы приложения.
    6. Помощь – предоставляются данные о программе и о создателе приложения.

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

         Также на форме приложения сразу можно заметить поля для ввода имен игроков, в режиме игры с компьютером можно изменять только первое поле ввода, при игре с человеком изменяются оба поля. В той же области окна находятся поля, предназначенные для ведения статистики боя, они будут изменяться в течение боя. Заметим, что изменение имен станет невозможным при переключении в режим боя. Мерцающая надпись указывает на то, игра находится в режиме расстановки кораблей, сама надпись является ссылкой на пункт меню – начать бой. Если игра находится в режиме игры с человеком, то метка начнет мерцать только после готовности обоих игроков начать бой. Для подтверждения готовности необходимо кликнуть на соответствующую надпись. Но для начала нужно будет расставить корабли, сначала расставляет первый игрок (второй должен будет отвернуться), затем он нажимает на «Готово» и  аналогичным образом второй игрок проводит те же операции. Только после этого можно будет начать бой, на что укажет мерцающий текст. При игре с компьютером все намного проще, нужно просто расставить корабли и можно приступить к бою.

         Важной  частью программы является расстановка  кораблей. Для ее реализации нужно  просто зажать левую кнопку мыши на корабле и перетащить в задуманное положение. Для поворота корабля  на 90 градусов нужно нажать на нем  правой кнопкой мыши. При наведении курсора на каждый объект возможность его перетаскивания показывается графически в виде специального курсора. Если корабли будут соприкасаться между собой, то начать бой будет невозможным, система вам не позволит этого сделать, поэтому расставляйте корабли правильно. Также хотелось бы отметить, что расставлять корабли необходимо внимательно и с умом, так как от этого зависит весь ход боя. Компьютер расставляет корабли автоматически, если вы кликнули пункт начать бой или «FIGHT» на самом окне, что намного удобнее.

         Изначальный вид окон вы можете посмотреть на рисунках 2 и 3. Окна результатов и данных о  программе показаны на рисунках 4 и 5. Все функции приложения до начала боя изображены на следующем рисунке (рис.6).

           

     Рис. 6. Функции приложения до начала боя 

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

            
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

Рис. 7. Режим боя

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

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

            

     Рис. 8. Победа одного из игроков 

         Заметим, что в этом случае корабли невозможно перетащить, они показаны только для  визуализации. Надпись начинает вновь  мерцать, но в данном случае она ссылается на функцию меню «Новая игра».

 

        1. Руководство программиста

         Программа состоит из четырех модулей:

    1. «TFlashingLabel.cpp», в котором содержится класс «TFlashingLabel», потомок класса «TLabel», носит вспомогательную роль для мерцания текста.

         Содержит  следующие переменные:

    bool FFlashEnabled;   //Включение мерцания

    int  FFlashRate;          //Скорость  мерцания

    TTimer *Timer;         //Таймер

         А также следующие функции:

    void SetFlashEnabled (bool AFlashEnabled);   

    Включение мерцания, параметр регулирует его включение

    void SetFlashRate (int AFlashRate);           

    Установление  скорости; параметр содержит число, соответствующее скорости мерцания

    void OnTimer (TObject *Sender);               

    Событие таймера. 

     
    1. «AboutProgFrm.cpp», в нем содержится следующий класс «TAboutProg», а также форма, на которой расположена информация о программе.

      Содержит функцию:

    void OKClick(TObject *Sender);

    Предназначена для исключения из области видимости формы данного модуля. 

     
    1. «ResultsFrm.cpp» состоит из класса «TResultsForm» и формы для размещения текстовой информации в метках Label, загружаемой из файла.

      Содержит следующие функции:

      void __fastcall OKClick(TObject *Sender);

    Предназначена для исключения из области видимости  формы данного модуля.

      void LoadRes ();

      Функция загружает данные из файла «SeaButResults.txt» и размещает их на форме. 

     
    1. «SeaButFrm.cpp» - главный модуль приложения, посредством которого осуществляются все основные функции игры. В том числе визуализация на форме данного модуля.

      Содержит  следующие переменные (все переменные в разделе private):

    TDrawGrid **Ships1;    //Корабли на 1-ом поле

    TDrawGrid **Ships2;             //Корабли на 2-ом поле

    int **field1;                            //Массив 1-го поля

    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;             //Динамическая мерцающая метка 

Информация о работе Логическая игра «Морской бой»