Автор работы: Пользователь скрыл имя, 17 Февраля 2011 в 16:34, курсовая работа
Программный продукт «Логическая игра «Морской бой»», используемый пользователем персонального компьютера.
Разработчиком программы является студент Томского Политехнического Университета группы 8880 специальности «Информационные системы и технологии в бизнесе» Погребной Вадим Юрьевич.
Программный продукт создается на основании выданного задания от преподавателя кафедры АИКС Луневой Е.Е.
Первым этапом разработки программного продукта будет составление функциональной спецификации, в которой будет описана программа с точки зрения пользователя, её основные функции. Вторым этапом будет разработка основных модулей программы и их функциональных возможностей, кодирование программы, отладка и тестирование программы.
Ships2
Ships2
case 2: Ships2[sh]->Width = (count+1)*29;
Ships2
Ships2
Ships2
Ships2
Ships2
case 3: Ships2[sh]->Width = 29;
Ships2
Ships2
Ships2
Ships2
Ships2
}
for (int i = 0; i < count + 1; i++)
{
field2[coor_y][coor_x] = 1;
switch (dir)
{
case 0: coor_x--; break;
case 1: coor_y--; break;
case 2: coor_x++; break;
case 3: coor_y++; break;
}
}
//Заполнение
границ вокруг корабля
//с учетом границ поля боя и выбранного направления
int bord1 = 0, bord2 = 0, bord3 = 0, bord4 = 0;
switch (dir)
{
case 0: if (!(coor_x + 1))
bord1 = 1;
else
if (coor_x + count + 1 == 9)
bord3 = 1;
if (!coor_y)
bord2 = 1;
else
if (coor_y == 9)
bord4 = 1;
for (int u = -1 + bord2; u < 2 - bord4; u++)
for (int v = -1*(count + 1) + bord1; v < 2 - bord3; v++)
break;
case 1: if (!coor_x)
bord1 = 1;
else
if (coor_x == 9)
bord3 = 1;
if (!(coor_y + 1))
bord2 = 1;
else
if (coor_y + count + 1 == 9)
bord4 = 1;
for (int u = -1*(count + 1) + bord2; u < 2 - bord4; u++)
for (int v = -1 + bord1; v < 2 - bord3; v++)
break;
case 2: if (!(coor_x - count - 1))
bord1 = 1;
else
if (coor_x - 1 == 9)
bord3 = 1;
if (!coor_y)
bord2 = 1;
else
if (coor_y == 9)
bord4 = 1;
for (int u = -1 + bord2; u < 2 - bord4; u++)
for (int v = -1 + bord1; v < count + 2 - bord3; v++)
break;
case 3: if (!coor_x)
bord1 = 1;
else
if (coor_x == 9)
bord3 = 1;
if (!(coor_y - count - 1))
bord2 = 1;
else
if (coor_y - 1 == 9)
bord4 = 1;
for (int u = -1 + bord2; u < count + 2 - bord4; u++)
for (int v = -1 + bord1; v < 2 - bord3; v++)
break;
}
}
}
//Перетаскивание кораблей над полем
void __fastcall
TSeaButForm::
TObject *Source, int X, int Y, TDragState State, bool &Accept)
{
Accept
= Source->ClassNameIs("
TDrawGrid *S = (TDrawGrid *) Source;
S->DragCursor = (Controls::TCursor)5; //Изменение курсора
//Изменение
координат корабля в
S->Top = Y - Y%29;
S->Left = X - X%29;
//Проверка границ поля
if (S->Left + S->Width > 300)
switch ((int)S->Tag/100)
{
case 4: S->Left = 174; break;
case 3: S->Left = 203; break;
case 2: S->Left = 232; break;
case 1: S->Left = 261; break;
}
if (S->Top + S->Height > 300)
switch ((int)S->Tag/100)
{
case 4: S->Top = 174; break;
case 3: S->Top = 203; break;
case 2: S->Top = 232; break;
case 1: S->Top = 261; break;
}
}
//Возможность перетаскивания при положении курсора над кораблем
void __fastcall
TSeaButForm::ShipsDragOver(
int X, int Y, TDragState State, bool &Accept)
{
TDrawGrid *S = (TDrawGrid *) Source;
Accept
= Source->ClassNameIs("
S->DragCursor = (Controls::TCursor)5; //Изменение курсора
}
//При
перетаскивании корабля над
void __fastcall
TSeaButForm::FormDragOver(
int X, int Y, TDragState State, bool &Accept)
{
TDrawGrid *S = (TDrawGrid *)Source;
S->DragCursor = (Controls::TCursor)7; //Изменение курсора
}
//Изменение положения корабля при нажатии правой кнопки мыши
void __fastcall
TSeaButForm::ShipsMouseDown(
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TDrawGrid *S = (TDrawGrid *) Sender;
//Проверка нажатой кнопки
if (Button == mbRight)
{
PlaySound("Sounds\\SOUNPLAS.
//Определение положения и замена на противоположное
if (S->Width > 29)
{
S->Height = S->Width;
S->Width = 29;
S->RowCount = S->ColCount;
S->ColCount = 1;
}
else
{
S->Width = S->Height;
S->Height = 29;
S->ColCount = S->RowCount;
S->RowCount = 1;
}
}
//Проверка границ поля
if (S->Left + S->Width > 300)
switch ((int)S->Tag/100)
{
case 4: S->Left = 174; break;
case 3: S->Left = 203; break;
case 2: S->Left = 232; break;
case 1: S->Left = 261; break;
}
if (S->Top + S->Height > 300)
switch ((int)S->Tag/100)
{
case 4: S->Top = 174; break;
case 3: S->Top = 203; break;
case 2: S->Top = 232; break;
case 1: S->Top = 261; break;
}
}
//О программе
void __fastcall
TSeaButForm::AboutClick(
{
//Запоминание изображения канвы
SaveBM (1);
SaveBM (2);
//Показать окно
AboutProg->Position = poMainFormCenter;
AboutProg->Visible = Enabled;
}
//Интерфейс игры с компьютером
void __fastcall TSeaButForm::CompClick(TObject *Sender)
{
//Если выбран интерфейс игры с человеком
if (Human->Checked)
{
PlaySound("Sounds\\SOUNREST.
//Активизация элементов интерфейса и удаление кораблей