Автор работы: Пользователь скрыл имя, 17 Февраля 2011 в 16:34, курсовая работа
Программный продукт «Логическая игра «Морской бой»», используемый пользователем персонального компьютера.
Разработчиком программы является студент Томского Политехнического Университета группы 8880 специальности «Информационные системы и технологии в бизнесе» Погребной Вадим Юрьевич.
Программный продукт создается на основании выданного задания от преподавателя кафедры АИКС Луневой Е.Е.
Первым этапом разработки программного продукта будет составление функциональной спецификации, в которой будет описана программа с точки зрения пользователя, её основные функции. Вторым этапом будет разработка основных модулей программы и их функциональных возможностей, кодирование программы, отладка и тестирование программы.
Field2->Enabled = false;
DelShips (2);
Comp->Checked = !Comp->Checked;
Human->Checked = !Human->Checked;
Fight->Enabled = true;
FrameReady1->Visible = false;
FrameReady2->Visible = false;
FIGHT->FlashEnabled = true;
FrameAgain->Enabled = true;
RichEdit2->ReadOnly = true;
RichEdit2->Lines->Strings[0] = "Machine";
}
}
//Интерфейс игры с человеком
void __fastcall
TSeaButForm::HumanClick(
{
//Если
выбран интерфейс игры с
if (Comp->Checked)
{
PlaySound("Sounds\\SOUNREST.
//Активизация элементов интерфейса и создание кораблей
Field2->Enabled = true;
NewShips (2);
Human->Checked = !Human->Checked;
Comp->Checked = !Comp->Checked;
Fight->Enabled = false;
FrameReady1->Visible = true;
FrameReady2->Visible = true;
Ready1->Enabled = true;
Ready2->Enabled = false;
FrameReady1->Enabled = true;
FrameReady2->Enabled = false;
Field2->Enabled = false;
FIGHT->FlashEnabled = false;
FrameAgain->Enabled = false;
RichEdit2->ReadOnly = false;
RichEdit2->Lines->Strings[0] = "Player 2";
}
}
//Выбор начала боя
void __fastcall
TSeaButForm::FightClick(
{
//Определение интерфейса
if (Comp->Checked)
{
bool AllRight = CheckShips (1); //Проверить расположение
кораблей
//Если все в порядке
if (AllRight)
{
//Звук и смена курсоров на боевые
PlaySound("Sounds\\
GridField1->Cursor = (Controls::TCursor)6;
GridField2->Cursor
= (Controls::TCursor)6;
//Активизация элементов
Field2->Enabled = true;
Field1->Enabled
= false;
CreateShips (); //Случайное создание кораблей
//Скрытие кораблей 1 поля
for (int i = 0; i < 10; i++)
Ships1[i]->Visible = false;
//Сохранение изображения канв
SaveBM (1);
SaveBM
(2);
Choise->Enabled = false;
Fight->Enabled = false;
//Переход к режиму боя
GridField2->OnMouseDown = GridField1MouseDown;
FIGHT->FlashEnabled = false;
FrameAgain->Enabled = false;
RichEdit1->ReadOnly = true;
RichEdit1->Color = clRed;
}
}
else
{
//Звук и смена курсоров на боевые
PlaySound("Sounds\\SOUNREST.
GridField1->Cursor = (Controls::TCursor)6;
GridField2->Cursor = (Controls::TCursor)6;
//Сохранение изображения канв
SaveBM (1);
SaveBM (2);
//Активизация элементов
FrameReady1->Visible = false;
FrameReady2->Visible = false;
Fight->Enabled = false;
//Переход к режиму боя
GridField1->OnMouseDown = GridField1MouseDown;
GridField2->OnMouseDown = GridField1MouseDown;
FIGHT->FlashEnabled = false;
FrameAgain->Enabled = false;
RichEdit1->Color = clRed;
}
}
//Создать новую игру
void __fastcall
TSeaButForm::NewGameClick(
{
//Звук и смена курсоров на начальные
PlaySound("Sounds\\SOUNOPEN.
GridField1->Cursor = (Controls::TCursor)1;
GridField2->Cursor = (Controls::TCursor)1;
//Обнуление данных
Count1Destr = 0;
Count2Destr = 0;
Shoots1->Caption = "0";
Shoots2->Caption = "0";
for (int i = 0; i < 10; i++)
{
Ships1Destr[i] = 0;
Ships2Destr[i] = 0;
}
GridField1->OnMouseDown = NULL;
GridField2->OnMouseDown = NULL;
//Активизация элементов
Choise->Enabled = true;
Field1->Enabled = true;
Field2->Enabled = false;
RichEdit1->Color = clNavy;
RichEdit2->Color = clNavy;
NewShips (1);
Delfield (1);
Delfield (2);
//Удаление изображений канвы
DelBM (1);
DelBM (2);
if (Comp->Checked) //Режим игры с компьютером
{
NullCpu ();
DelShips (2);
FIGHT->FlashEnabled = true;
FIGHT->OnClick = FightClick;
FrameAgain->OnClick = FightClick;
FrameAgain->Enabled = true;
Fight->Enabled = true;
RichEdit1->ReadOnly = false;
//Очистка канвы 2 поля
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
GridField2->Canvas->FillRect(
}
else //Режим игры с человеком
{
//Активизация элементов
FIGHT->OnClick = FightClick;
FrameAgain->OnClick = FightClick;
FIGHT->FlashEnabled = false;
FrameAgain->Enabled = false;
Ready1->Enabled = true;
Ready2->Enabled = false;
FrameReady1->Enabled = true;
FrameReady2->Enabled = false;
FrameReady1->Visible = true;
FrameReady2->Visible = true;
RichEdit1->ReadOnly = false;
RichEdit2->ReadOnly = false;
NewShips (2);
}
}
//Готовность 1го игрока
void __fastcall
TSeaButForm::Ready1Click(
{
bool AllRight
= CheckShips (1); //Проверка кораблей
1го поля
if (AllRight)
{
PlaySound("Sounds\\SOUNREST.
//Активизация 2 поля
//Скрытие кораблей 1 поля
for (int i = 0; i < 10; i++)
Ships1[i]->Visible = false;
Field1->Enabled = false;
Field2->Enabled = true;
Ready1->Enabled = false;
Ready2->Enabled = true;
FrameReady1->Enabled = false;
FrameReady2->Enabled = true;
Choise->Enabled = false;
RichEdit1->ReadOnly = true;
}
}
//Готовность 2го игрока
void __fastcall
TSeaButForm::Ready2Click(
{
bool AllRight
= CheckShips (2); //Проверка
кораблей 2го поля
if (AllRight)
{
PlaySound("Sounds\\SOUNREST.
//Скрытие кораблей 1 поля
for (int i = 0; i < 10; i++)
Ships2[i]->Visible = false;
Ready2->Enabled = false;
FrameReady2->Enabled = false;
Fight->Enabled = true;
FIGHT->FlashEnabled = true;
FrameAgain->Enabled = true;
RichEdit2->ReadOnly = true;
}
}
//Метод выстрела
void __fastcall
TSeaButForm::
TMouseButton Button, TShiftState Shift, int X, int Y)
{
//Переменная
для дальнейшего опредления
TDrawGrid *Field = (TDrawGrid *) Sender;
//Координаты выстрела
int xp = (int)(X/29), yp = (int)(Y/29);
//Производить при нажатии левой кнопки
if (Button == mbLeft)
{
//При выстреле не допускать сворачивание и перекрывание окна
//для сохранения изображения
SetWindow (0);