Автор работы: Пользователь скрыл имя, 17 Февраля 2011 в 16:34, курсовая работа
Программный продукт «Логическая игра «Морской бой»», используемый пользователем персонального компьютера.
Разработчиком программы является студент Томского Политехнического Университета группы 8880 специальности «Информационные системы и технологии в бизнесе» Погребной Вадим Юрьевич.
Программный продукт создается на основании выданного задания от преподавателя кафедры АИКС Луневой Е.Е.
Первым этапом разработки программного продукта будет составление функциональной спецификации, в которой будет описана программа с точки зрения пользователя, её основные функции. Вторым этапом будет разработка основных модулей программы и их функциональных возможностей, кодирование программы, отладка и тестирование программы.
cl = true;
Cpu.RowNum[Choice] = -1;
}
}
while (!cl);
}
//Если же было попадание
else
{
//Если неизвестно положение
if (!Cpu.TarDir)
//Выбираем его случайно
do
{
Choice = Cpu.Choice;
Randomize();
Cpu.Direction = Random(4);
//Сверяем на его доступность
if (Cpu.Direction == Cpu.RowDir[Cpu.Direction])
{
cl = true;
Cpu.RowDir[Cpu.Direction] = -1; //Запоминаем его
//Проверка на границы и на доступность этого поля
//Если недоступно, то повторить выбор
switch (Cpu.Direction)
{
case 0: if (!(Choice%10))
{
cl = false; break;
}
else
if (Cpu.RowNum[Choice-1] == -1)
break;
case 1: if (!(int)(Choice/10))
{
cl = false; break;
}
else
if (Cpu.RowNum[Choice-10] == -1)
break;
case 2: if (Choice%10 == 9)
{
cl = false; break;
}
else
if (Cpu.RowNum[Choice+1] == -1)
break;
case 3: if ((int)(Choice/10) == 9)
{
cl = false; break;
}
else
if (Cpu.RowNum[Choice+10] == -1)
break;
}
}
}
while (!cl);
//Если же известно положение корабля
else
//Проверяем,
верно ли выбрано было
if (!Cpu.TarDirect)
{
//Если нет, тогда меняем на противоположное
M3: switch (Cpu.Direction)
{
case 0: Cpu.Direction = 2; Choice = Cpu.Choice; break;
case 1: Cpu.Direction = 3; Choice = Cpu.Choice; break;
case 2: Cpu.Direction = 0; Choice = Cpu.Choice; break;
case 3: Cpu.Direction = 1; Choice = Cpu.Choice; break;
}
Cpu.TarDirect = true;
}
}
//Определение координат для стрельбы
if (Cpu.Direction == -1) //Если производится первый выстрел
{
x = Choice%10;
y = (int)(Choice/10);
}
else
{
//Когда уже выбрано
//и на доступность поля, если все в порядке, то выстрел можно выполнять
//И тогда можно подтвердить выбор
switch (Cpu.Direction)
{
case 0: if (!(Choice%10))
else
Choice--; Cpu.RowNum[Choice] = -1; break;
case 1: if (!(int)(Choice/10))
else
Choice-=10; Cpu.RowNum[Choice] = -1; break;
case 2: if (Choice%10 == 9)
else
Choice++; Cpu.RowNum[Choice] = -1; break;
case 3: if ((int)(Choice/10) == 9)
else
Choice+=10; Cpu.RowNum[Choice] = -1; break;
}
//И определяем координаты
x = Choice%10;
y = (int)(Choice/10);
}
TShiftState
Shift; //Пустая переменная для
передачи в функцию выстрела
//Производим выстрел
GridField1MouseDown (GridField1, mbLeft, Shift, 29*x + 1, 29*y + 1);
}
//Проверка на необходимость выстрела по каждому полю
void TSeaButForm::CheckDestr ()
{
int len = 0; //Переменная указывает для какого вида корабля проверяем
//Определяем все ли 1палубные убиты
for (int i = 0; i < 4; i++)
if (Ships1Destr[i])
if (i == 3)
len++;
else continue;
else break;
if (!len)
return; //Если нет, то выйти из функции
//Проверяем для 1палубных
for (int d1 = 0; d1 < 100; d1++)
//Если нашли доступное поле
if (Cpu.RowNum[d1] != -1)
{
//Проверяем на то, есть ли вокруг него доступные поля
if (d1%10)
if (Cpu.RowNum[d1-1] != -1) continue;
if (d1>9)
if (Cpu.RowNum[d1-10] != -1) continue;
if (d1%10 < 9)
if (Cpu.RowNum[d1+1] != -1) continue;
if (d1<90)
if (Cpu.RowNum[d1+10] != -1) continue;
else Cpu.RowNum[d1] = -1; //Если нету, то делаем поле недоступным
else Cpu.RowNum[d1] = -1;
}
//Если
1палубные убиты, то
if (len)
for (int i = 4; i < 7; i++)
if (Ships1Destr[i])
if (i == 6)
len++;
else continue;
else break;
if (len
== 1) return;
//Делаем аналогичную проверку, как и 1 палубных
//Только смотрим на ближайшие 2 поля вокруг выбранного
for (int d1 = 0; d1 < 100; d1++)
if (Cpu.RowNum[d1] != -1)
{
if (d1%10)
if (Cpu.RowNum[d1-1] != -1)
if (d1%10>1)
{
if (Cpu.RowNum[d1-2] != -1) continue;
else
if (d1%10<9)
if (Cpu.RowNum[d1+1] != -1) continue;
}
else
if (Cpu.RowNum[d1+1] != -1) continue;
if (d1>9)
if (Cpu.RowNum[d1-10] != -1)
if (d1>19)
{
if (Cpu.RowNum[d1-20] != -1) continue;