Автор работы: Пользователь скрыл имя, 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
СПИСОК ИСТОЧНИКОВ ИНФОРМАЦИИ
http://developer.android.com/
ПРИЛОЖЕНИЕ A ТЕХНИЧЕСКОЕ ЗАДАНИЕ
1НАЗНАЧЕНИЕ РАЗРАБОТКИ
Приложение разрабатывается для дальнейшей продажи при помощи Android Market.
2 ЦЕЛЬ И ЗАДАЧИ
Целью разработки является получение прибыли с продаж продукта.
Для достижения данной цели необходимо наиболее качественно организовать игровой процесс и создать простой, но эффектный пользовательский интерфейс.
Создание документации к проекту (пункты Определение требований, Проектирование и Техническое задание) необходимо закончить к 20 мая 2011 года.
Разработку программного кода необходимо закончить к концу июля 2011года.
3 ТРЕБОВАНИЯ К РАЗРАБОТКЕ
3.1Требованияк
Функции:
Часть
меню описывается в xml-файле, создание
системных сообщений
Выполняет вызов функции создания игрового поля. Обеспечивает возможность выбора клеток для атаки. Отображает результат хода.
Расстановка кораблей основывается на исходном выборе набора кораблей до начала игры.
Игрок, нажимая на клетку, передаёт координаты, которые сравниваются с координатами расположения кораблей противника. При совпадении засчитывается попадание и начинается новый ход.
Корабли расставляются на поле случайным образом.
Ограничения: минимальное расстояние между кораблями – 1 клетка. Части кораблей не должны выходить за пределы игрового поля.
Обеспечивает возможность пользователю составить список кораблей, которые будут использованы в бою.
Каждый корабль имеет свою цену. Цена определяется длиной корабля.
4-х трубный – цена 5
3х трубный – цена 4
2-х трубный – цена 2
1-х трубный – цена 3
Всего дано 35 очков.
Дальнейшее количество определяется победами и поражениями. Победа прибавляет одно очко, поражение – вычитает. Верхний и нижний пределы: +-50. Готовая конфигурация сохраняется в файл.
Осуществляют
запись и выборку данных.При
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_
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(
new Thread(new Runnable() {public void
run() {autoPlacing(field_opp);
Intent intent=new Intent();
intent.setClass(
Intent intent_opp=new Intent();
intent_opp.setClass(
Intent finIntent=new Intent();
finIntent.
startActivity
opp=4;
do {
startActivity
startActivity
opp-=1;
}while(opp==
@Override
protected void onResume() {
super.
opp=
@Override
protected void onSaveInstanceState(Bundle savedInstanseState) {
super.
//
public static int attack(int selX, int selY,int field_gamer[][]) {
if(field_gamer[selX][selY]>
if(field_
field_gamer[selX][selY]=BOMB_
if(field_
if(field_