Автор работы: Пользователь скрыл имя, 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
enter2=true; }
else {enter2=false;break;}
t_vertic=t_
if(enter2) {//если занято то ещё разок цикл вхиле
for(int i=0;i<HERE_SHIP_2;i++) {
field_gamer[gorizont][t_
field_gamer[gorizont-1][t_
field_gamer[gorizont+1][t_
t_vertic+=1; }//переходим на следующую клетку
field_gamer[gorizont-1][
field_gamer[gorizont+3][
ships_2_
break;}//
} while(ships_2_count<3);*/
//начинаем 1хтрубники
int ship_4_count=0;
do {
//boolean enter_4=false;
int gorizont_4=generateRandom.
int vertic_4=generateRandom.
if(field_gamer[gorizont_4][
field_gamer[gorizont_4][
field_gamer[gorizont_4+1][
field_gamer[gorizont_4+1][
field_gamer[gorizont_4][
field_gamer[gorizont_4][
field_gamer[gorizont_4-1][
field_gamer[gorizont_4-1][
field_gamer[gorizont_4-1][
ship_4_count+
} while(ship_4_count<6);} //
static int[] autoAttack(int field_gamer[][]) {
int m_att_y=0,m_i=0;
int[] return_coord=new int[3];
Random attRand=new Random();
int att_x = 0;
int att_y = 0;
GameStats.
if(!
boolean att_ok=false;//успех атаки
while(!att_ok) {//это чтобы бот не ошибался и не кликал по уже атакованым клеткам и клеткам где физически не может быть корабля
att_x=
att_y=
if(field_gamer[att_x][att_y]!=
att_ok=true; }
if(field_
if(field_gamer[att_x][att_y]==
field_gamer[att_x][att_y]=
field_gamer[att_x+1][att_y-1]=
field_gamer[att_x+1][att_y]=
field_gamer[att_x+1][att_y-1]=
field_gamer[att_x][att_y-1]=
field_gamer[att_x][att_y+1]=
field_gamer[att_x-1][att_y-1]=
field_gamer[att_x-1][att_y]=
field_gamer[att_x-1][att_y+1]=
GameStats.total_ships_gamer_
return_coord[0]=att_x;
return_coord[1]=att_y;
return_coord[2]=1;
return return_coord; } //попадание!
if(field_gamer[att_x][att_y]==
field_gamer[att_x][att_y]=
if(GameStats.ship_3_gamer_
GameStats.total_ships_gamer_
GameStats.ship_3_gamer_coord[
GameStats.ship_3_gamer_coord[
GameStats.bot_last_found=HERE_
GameStats.bot_mem_full=true;
return_coord[
return_coord[
return_coord[
return return_coord;}
if(field_gamer[att_x][att_y]==
field_gamer[att_x][att_y]=
if(GameStats.ship_4_gamer_
GameStats.ship_4_gamer_coord[
GameStats.ship_4_gamer_coord[
GameStats.bot_last_found=HERE_
GameStats.bot_mem_full=true;
return_coord[
return_coord[
return_coord[
return return_coord;}
} //конец пустой атаки
///////////////////
//начало
if(GameStats.
boolean comm_att_ok=false;
int now_att_direction=5; //текущее направление атаки
if(field_gamer[att_x][att_y]==
field_gamer[att_x][att_y]=
do {
int choose_att_direction=attRand.
if(now_att_
switch(
case 0://влево
for(inti=1;i<HERE_SHIP_3;i++) {//если на пути есть препятсвие то выход из цикла
if(field_gamer[att_x][att_y-i]
else { comm_att_ok=true;//если же направление атаки логично
if(field_
field_gamer[att_x][att_y-i]=
now_att_
else{field_gamer[att_x][att_y-
}
}break;
case 1://вправо
for(inti=1;i<HERE_SHIP_3;i++) {//если на пути есть препятсвие то выход из цикла
if(field_gamer[att_x][att_y+i]
else { comm_att_ok=true;
if(field_
field_gamer[att_x][att_y+i]=
now_att_
else{
field_gamer[att_x][att_y+i]=
}
}break;
case 2://вверх
for(inti=1;i<HERE_SHIP_3;i++) {//если на пути есть препятсвие то выход из цикла
if(field_gamer[att_x-i][att_y]
break;
else { comm_att_ok=true;
field_gamer[att_x-i][att_y]=
now_att_
}break;
case 3://вниз
for(inti=1;i<HERE_SHIP_3;i++) {//если на пути есть препятсвие то выход из цикла
if(field_gamer[att_x-i][att_y]
break;
else { comm_att_ok=true;
field_gamer[att_x+i][att_y]=
now_att_
}break;
}
}while(!comm_
}
}
if(field_gamer[att_x][att_y]==
else field_gamer[att_x][att_y]=
return_coord[
return_coord[
return_coord[
return return_coord;}
}
BattleView.java
package ru.ship.game;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
class ViewBattle extends View {
privatefinal OppRound oppRound;
privatestaticfinalintRESU
privateintheight;
privateintwidth;
privateintselX;
privateintselY;
privatefinal Rect selRect = new Rect();
privatefinal Rect attackedRect = new Rect();