Автор работы: Пользователь скрыл имя, 17 Февраля 2011 в 16:34, курсовая работа
Программный продукт «Логическая игра «Морской бой»», используемый пользователем персонального компьютера.
Разработчиком программы является студент Томского Политехнического Университета группы 8880 специальности «Информационные системы и технологии в бизнесе» Погребной Вадим Юрьевич.
Программный продукт создается на основании выданного задания от преподавателя кафедры АИКС Луневой Е.Е.
Первым этапом разработки программного продукта будет составление функциональной спецификации, в которой будет описана программа с точки зрения пользователя, её основные функции. Вторым этапом будет разработка основных модулей программы и их функциональных возможностей, кодирование программы, отладка и тестирование программы.
S1->Caption = '\0';
S2->Caption = '\0';
S3->Caption = '\0';
S4->Caption = '\0';
S5->Caption = '\0';
S6->Caption = '\0';
S7->Caption = '\0';
S8->Caption = '\0';
S9->Caption = '\0';
S10->Caption
= '\0';
char *temp;
temp = new char [20];
//Загружаем в temp строки из файла и показываем их
//пока не конец файла
if (!infile.eof())
{
infile.getline(temp, 20, '\n');
Name1->Caption = temp;
infile >> temp;
S1->Caption = temp;
infile.seekg(infile.tellg()+2)
}
else return;
if (!infile.eof())
{
infile.getline(temp, 20, '\n');
Name2->Caption = temp;
infile >> temp;
S2->Caption = temp;
infile.seekg(infile.tellg()+2)
}
else return;
if (!infile.eof())
{
infile.getline(temp, 20, '\n');
Name3->Caption = temp;
infile >> temp;
S3->Caption = temp;
infile.seekg(infile.tellg()+2)
}
else return;
if (!infile.eof())
{
infile.getline(temp, 20, '\n');
Name4->Caption = temp;
infile >> temp;
S4->Caption = temp;
infile.seekg(infile.tellg()+2)
}
else return;
if (!infile.eof())
{
infile.getline(temp, 20, '\n');
Name5->Caption = temp;
infile >> temp;
S5->Caption = temp;
infile.seekg(infile.tellg()+2)
}
else return;
if (!infile.eof())
{
infile.getline(temp, 20, '\n');
Name6->Caption = temp;
infile >> temp;
S6->Caption = temp;
infile.seekg(infile.tellg()+2)
}
else return;
if (!infile.eof())
{
infile.getline(temp, 20, '\n');
Name7->Caption = temp;
infile >> temp;
S7->Caption = temp;
infile.seekg(infile.tellg()+2)
}
else return;
if (!infile.eof())
{
infile.getline(temp, 20, '\n');
Name8->Caption = temp;
infile >> temp;
S8->Caption = temp;
infile.seekg(infile.tellg()+2)
}
else return;
if (!infile.eof())
{
infile.getline(temp, 20, '\n');
Name9->Caption = temp;
infile >> temp;
S9->Caption = temp;
infile.seekg(infile.tellg()+2)
}
else return;
if (!infile.eof())
{
infile.getline(temp, 20, '\n');
Name10->Caption = temp;
infile >> temp;
S10->Caption = temp;
infile.seekg(infile.tellg()+2)
}
else return;
delete [] temp;
infile.close();
}
SeaButFrm.cpp
//Создание новых кораблей
void TSeaButForm::NewShips (int number)
{
if (number == 1) //Проверка номера поля (1 или 2), если 1ое поле
{
DelShips (1); //Удалить корабли
Ships1 = new TDrawGrid * [10]; //Создать динамические корабли
for (int i = 0; i < 10; i++) //Придаем им необходимый внешний вид
{
Ships1[i] = new TDrawGrid (SeaButForm);
Ships1[i]->Left = 0;
Ships1[i]->Top = 29*i;
Ships1[i]->DragMode = dmAutomatic;
Ships1[i]->Height = 29;
Ships1[i]->
Ships1[i]->
Ships1[i]->
Ships1[i]->FixedCols = 0;
Ships1[i]->FixedRows = 0;
Ships1[i]->GridLineWidth = 2;
Ships1[i]->RowCount = 1;
Ships1[i]->ScrollBars = ssNone;
Ships1[i]->BevelInner = bvNone;
Ships1[i]->BevelOuter = bvNone;
Ships1[i]->BorderStyle = bsSingle;
Ships1[i]->Color = clYellow;
Ships1[i]->FixedColor = clYellow;
Ships1[i]->OnDragOver = ShipsDragOver;
Ships1[i]->OnMouseDown = ShipsMouseDown;
Ships1[i]->Parent = Field1;
Ships1[i]->Cursor = (Controls::TCursor)4;
Ships1[i]->DragCursor = (Controls::TCursor)5;
}
Ships1[0]->Tag = 410 + number;
Ships1[1]->Tag = 310 + number;
Ships1[2]->Tag = 320 + number;
Ships1[3]->Tag = 210 + number;
Ships1[4]->Tag = 220 + number;
Ships1[5]->Tag = 230 + number;
Ships1[6]->Tag = 110 + number;
Ships1[7]->Tag = 120 + number;
Ships1[8]->Tag = 130 + number;
Ships1[9]->Tag = 140 + number;
for (int i = 0; i < 10; i++)
{
Ships1[i]->Width = 29*(int)(Ships1[i]->Tag/100);
Ships1[i]->ColCount = (int)(Ships1[i]->Tag/100);
}
}
else //Если 2ое поле, делать для него то же самое
{………
}
}
//Проверка
правильной расстановки
bool TSeaButForm::CheckShips (int number)
{
if (number == 1) //Если для 1го поля
{
Newfield (1);
//Создаем массив 1го поля
int x = 0, y = 0;
for (int i = 0; i < 10; i++)
{
x = Ships1[i]->Left/29; //Определяем координаты кораблей
y
= Ships1[i]->Top/29;
//Переменные для перехода вокруг корабля, длины сторон
//площадей вокруг кораблей. Как по x, так и по y
int
y_temp = 0, x_temp = 0, x_len, y_len;
//Проверка на расположение корабля у границ
x == 9 ? x_len = 2 : x_len = 3;
y == 9 ? y_len = 2 : y_len = 3;
if (y)
y_temp = y - 1;
else
y_len = 2;
if (x)
x_temp = x - 1;
else
x_len = 2;
//Проверка расстояний между кораблями и 1 полем проверяемого корабля
for (int ky = 0; ky < y_len; ky++)
{
for (int kx = 0; kx < x_len; kx++)
{
//Если есть рядом
if (field1[y_temp][x_temp])
{
//звук
PlaySound("Sounds\\SOUNMETA.
//показать сообщение
MessageDlgPos("Корабли не должны соприкасаться!!!", mtWarning,
TMsgDlgButto
SeaButForm->
return false;
}
x_temp += 1;
}
y_temp += 1;
x_temp -= x_len;
}
field1[y][x]
= 1; //Если все в порядке, то занимаем
поле
//Проверка ширины корабля, если больше 1 поля в ширину
if (Ships1[i]->Width > 30)
{
x++; //Переходим правее и проводим проверку для остальных полей корабля
for (int j = 0; j < Ships1[i]->ColCount - 1; j++)
{
y_temp = 0, x_temp = 0;