РАЗРАБОТКА ИГРЫ «МОРСКОЙ БОЙ» С AI

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

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

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

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

Содержание работы

ВВЕДЕНИЕ 4

1 ОПРЕДЕЛЕНИЕ ТРЕБОВАНИЙ 4

1.1 Описание бизнес процесса 4

1.2 Сравнение аналогов 5

1.3 Моделирование требований 6

1.4 Выбор модели жизненного цикла 7

2 ПРОЕКТИРОВАНИЕ 9

2.1 Выбор модели системы 9

2.2 Проектирование структуры системы 9

2.3 Проектирование логики работы 10

2.4 Проектирование интерфейса 13

3 РАЗРАБОТКА ПРОГРАММНОГО КОДА 15

4 ВЕРИФИКАЦИЯ И АТТЕСТАЦИЯ 16

4.1 Выбор методов верификации и аттестации 16

4.2 Инспектирование 16

4.3 Тестирование 17

5 ПРОГРАММНАЯ ДОКУМЕНТАЦИЯ 18

5.1 Инструкция по установке 18

5.2 Инструкция пользователя 18

ЗАКЛЮЧЕНИЕ 19

СПИСОК ИСТОЧНИКОВ ИНФОРМАЦИИ 20

ПРИЛОЖЕНИЕ A ТЕХНИЧЕСКОЕ ЗАДАНИЕ 21

1НАЗНАЧЕНИЕ РАЗРАБОТКИ 21

2 ЦЕЛЬ И ЗАДАЧИ 21

3 ТРЕБОВАНИЯ К РАЗРАБОТКЕ 21

3.1Требованияк функциональным характеристикам 21

3.2 Описание входных и выходных данных 22

3.3 Модель работы продукта разработки 23

3.4 Требования к надежности 25

3.5 Эргономические и техникоэстетические требования 25

3.6 Требования к защите информации 26

3.7 Другие требования к разработке 26

3.8 Требования к аппаратно-программному комплексу. 26

3.9 Требования к технологиям разработки 26

3.10 Требования к составу технических средств при эксплуатации. 26

4 МЕТОДЫ ТЕСТИРОВАНИЯ СООТВЕТСТВИЯ РАЗРАБОТКИ ПРЕДЪЯВЛЕННЫМ ТРЕБОВАНИЯМ 26

ПРИЛОЖЕНИЕ Б ПРОГРАММНЫЙ КОД 27

Файлы: 1 файл

ОФОрмление ТРПП максим 19,06.docx

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

 

     СПИСОК ИСТОЧНИКОВ ИНФОРМАЦИИ

  1. Голощапов А.Л. Google Android. Программирование для мобильных устройств (Профессиональное программирование), 2011.
  2. Android Developers, официальный сайт:

    http://developer.android.com/sdk/index.html

 

     ПРИЛОЖЕНИЕ A ТЕХНИЧЕСКОЕ ЗАДАНИЕ

     1НАЗНАЧЕНИЕ РАЗРАБОТКИ

     Приложение  разрабатывается для дальнейшей продажи при помощи Android Market.

     2 ЦЕЛЬ И ЗАДАЧИ

     Целью разработки является получение прибыли  с продаж продукта.

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

     Создание  документации к проекту (пункты Определение  требований, Проектирование и Техническое  задание)  необходимо закончить к 20 мая 2011 года.

     Разработку  программного кода необходимо закончить  к концу июля 2011года.

     3 ТРЕБОВАНИЯ К РАЗРАБОТКЕ

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

     Функции:

  1. Меню приложения.

     Часть меню описывается в xml-файле, создание системных сообщений обеспечивается в коде программы. В меню используются стандартные объекты(кнопки, поля ввода).

  1. Игра.

     Выполняет вызов функции создания игрового поля. Обеспечивает возможность выбора клеток для атаки. Отображает результат  хода.

     Расстановка кораблей основывается на исходном выборе набора кораблей до начала игры.

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

  1. Расстановка кораблей.

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

     Ограничения: минимальное расстояние между кораблями  – 1 клетка. Части кораблей не должны выходить за пределы игрового поля.

  1. Определение набора кораблей.

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

     Каждый  корабль имеет свою цену. Цена определяется длиной  корабля.

     4-х  трубный – цена 5

     3х  трубный – цена 4

     2-х  трубный – цена 2

     1-х  трубный – цена 3

     Всего дано 35 очков.

     Дальнейшее  количество определяется победами и  поражениями. Победа прибавляет одно очко, поражение – вычитает. Верхний и нижний пределы: +-50. Готовая конфигурация сохраняется в файл.

  1. Просмотр статистики и регистрация.

     Осуществляют  запись и выборку данных.При регистрации  создаётся отдельная запись с  пустой статистикой. Имя аккаунта необходимо для записи в таблицу рекордов. Статистика выводится в виде таблицы: имя – очки.

     3.2 Описание входных  и выходных данных

Таблица 1 – Описания входных и выходных данных.

Функция Входные параметры  
Выходные  параметры
Меню  приложения Выбранный пункт Отображение результата выбора
Игра Конфигурация  кораблей, текущий ход (Игрок или  ИИ) Результат хода/игры
Расстановка кораблей ИИ противником Конфигурация  кораблей Координаты
Определение набора кораблей Имя пользователя, кол-во очков Конфигурация  кораблей
Просмотр  статистики и регистрация Имя пользователя Выборка данных

     Вся система принимает данные от пользователя, и выводит данные при помощи экрана и динамиков.

 

     

     3.3 Модель работы продукта разработки

       
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     Рисунок 2. Диаграмма IDEF0

       
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     Рисунок 3. Диаграмма IDEF0

 

     3.4 Требования к надежности

     Возможность сворачивания и разворачивание приложения обеспечивается методом onResume и onPause. События ОС обрабатываются при постановке приложения на паузу.

     3.5 Эргономические и техникоэстетические требования 
 

     Рисунок 4. Use Case диаграмма 

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

     Дизайн  меню и элементов управления должен соответствовать дизайну ОС.

     Использовать объекты (виджеты), представленные в AndroidSDK. Не перегружать пользовательский интерфейс излишними элементами.

     Основное меню должно быть выдержано в тёмных тонах  с фоновым изображением на морскую  тематику.

     Игровое поле должно целиком помещаться на экране в вертикальном режиме отображения. 
 

     3.6 Требования к защите информации

     Готовое приложение упаковано в apk файл.

     Защита от реверс-инжинеринга  обеспечивается встроенной в среду  разработки программой ProGuard.

     3.7 Другие требования к разработке

     Реализовать алгоритм выбора клетки для атаки на основе уже выбранных клеток.

     3.8 Требования к аппаратно-программному  комплексу.

     Разработка ориентирована  на Android 2.2API Level: 9.Работа возможна на устройствах с различным типом экрана. Поддержка мультитача не требуется.

     3.9 Требования к технологиям разработки

     Разработка ведётся  с использованием среды разработки Eclipse 3.6 (Helios) с установленным ADK плагином, JDK и Android SDK.

     3.10 Требования к составу технических средств при эксплуатации.

     Устройство с поддержкой необходимой версии Android и удовлетворяющее описанным характеристикам.

     4 МЕТОДЫ ТЕСТИРОВАНИЯ СООТВЕТСТВИЯ РАЗРАБОТКИ ПРЕДЪЯВЛЕННЫМ ТРЕБОВАНИЯМ

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

 

     ПРИЛОЖЕНИЕ Б ПРОГРАММНЫЙ КОД

     Battle.java

     package ru.ship.game;

     import java.util.Random;

     import android.app.Activity;

     import android.content.Intent;

     import android.os.Bundle;

     import android.util.Log;

     public class Battle extends Activity {

           private static final String TAG = "BattleShip";

           public static final int HERE_SHIP_1=1;//здесь  есть 1 корабль

           public static final int HERE_SHIP_2=2;//здесь  есть 2 корабль

           public static final int HERE_SHIP_3=3;//здесь  есть 3 корабль

           public static final int HERE_SHIP_4=4;//здесь  есть 4 корабль

           public static final int HERE_NO_CHOOSE=5;//здесь  уже ничего быть не может

           public static final int BOMB_HERE=6;//клетка  атакована

           public static final int SHIP_ON_FIRE=7;

           private int ships_count=0;

           public static int[][] field_gamer=new int[11][11];//поля игрока и оппонента

           public static int[][] field_opp=new int[11][11];

     public static boolean comm_attack=true;

           public static final int IDM_GAMER_ROUND=100; //интент актив. мен.

           public static final int IDM_OPP_ROUND=200;

           int opp=GameStats.total_ships_opp_count;

           protected void onCreate(Bundle savedInstanceState) {

           super.onCreate(savedInstanceState);

           new Thread(new Runnable() {public void run() {autoPlacing(field_opp);    autoPlacing(field_gamer);}}).start();

           Intent intent=new Intent();

           intent.setClass(getApplicationContext(), GamerRound.class);

                 Intent intent_opp=new Intent();

                 intent_opp.setClass(getApplicationContext(), OppRound.class);

                Intent finIntent=new Intent();

                 finIntent.setClass(getApplicationContext(), FinishSplash.class);

                 startActivity(finIntent);

                 opp=4;

                 do {

                 startActivity(intent_opp);

                 startActivity(intent);

                 opp-=1;

                 }while(opp==0); }

           @Override

           protected void onResume() {

                 super.onResume();

                 opp=GameStats.total_ships_opp_count; }

           @Override

           protected void onSaveInstanceState(Bundle savedInstanseState) {

                 super.onSaveInstanceState(savedInstanseState);

                 //savedInstanseState.putInt(key, value); }

public static int attack(int selX, int selY,int field_gamer[][]) {

if(field_gamer[selX][selY]>HERE_NO_CHOOSE) return -1;//не важно

                 if(field_gamer[selX][selY]==0 || field_gamer[selX][selY]==HERE_NO_CHOOSE) {//если клетка пустая то записываем  что её удже атаковали

field_gamer[selX][selY]=BOMB_HERE; return 0; }

                 if(field_gamer[selX][selY]<5) {//если не пустая то записываем что тут корабль взорван 

                 if(field_gamer[selX][selY]==HERE_SHIP_1) {//если игрок нашёл однотрубник то и искать дальше нечего

Информация о работе РАЗРАБОТКА ИГРЫ «МОРСКОЙ БОЙ» С AI