Автор работы: Пользователь скрыл имя, 17 Февраля 2011 в 16:34, курсовая работа
Программный продукт «Логическая игра «Морской бой»», используемый пользователем персонального компьютера.
Разработчиком программы является студент Томского Политехнического Университета группы 8880 специальности «Информационные системы и технологии в бизнесе» Погребной Вадим Юрьевич.
Программный продукт создается на основании выданного задания от преподавателя кафедры АИКС Луневой Е.Е.
Первым этапом разработки программного продукта будет составление функциональной спецификации, в которой будет описана программа с точки зрения пользователя, её основные функции. Вторым этапом будет разработка основных модулей программы и их функциональных возможностей, кодирование программы, отладка и тестирование программы.
{
ifstream infile ("SeaButResults.txt");
if (!infile)
return;
int i = 0;
char temp1[300];
char *temp2 = NULL;
//скопировать данные файла в строку
while (!infile.eof())
{
infile.get(temp1[i]);
i++;
}
temp1[i-1]
= '\0';
int j = 0;
//Проверка на место вставки текущего результата
for (int i = 0; i < 10; i++)
{
//Если конец строки, то добавить результат
//и все перенести в temp2
if (!temp1[j])
if (number == 1)
{
temp2 = new char [300];
for (int z = 0; z <= j; z++)
temp2[z] = temp1[z];
strcat(temp2, RichEdit1->Lines->Strings[0].
strcat(temp2, "\n");
strcat(temp2, Shoots1->Caption.c_str());
int len = strlen(temp2);
temp2[len] = '\n';
temp2[len+1] = '\0';
break;
}
else
{
temp2 = new char [300];
for (int z = 0; z <= j; z++)
temp2[z] = temp1[z];
strcat(temp2, RichEdit2->Lines->Strings[0].
strcat(temp2, "\n");
strcat(temp2, Shoots2->Caption.c_str());
int len = strlen(temp2);
temp2[len] = '\n';
temp2[len+1] = '\0';
break;
}
int pos = j; //запомнить позицию курсора
while (temp1[j] != '\n') j++; //перейти к кол-ву выстрелов
int count = 0;
while (temp1[++j] != '\n') count++; //определить кол-во знаков в числе
int k, tempnumb = 0;
for (count == 3 ? k = 100: k = 10; k >= 1; k/=10)
tempnumb += ((int)temp1[j-count--]-48)*k; //определяем кол-во выстрелов
j++;
//Сравниваем с выстрелами
//если больше, то вставляем перед проверяемым результатом
if (number == 1)
if (tempnumb > StrToInt(Shoots1->Caption))
{
temp2 = new char [300];
for (int z = 0; z < pos; z++)
temp2[z] = temp1[z];
temp2[pos] = '\0';
strcat(temp2, RichEdit1->Lines->Strings[0].
strcat(temp2, "\n");
strcat(temp2, Shoots1->Caption.c_str());
int len = strlen(temp2);
temp2[len] = '\n';
while (temp1[pos])
temp2[++len] = temp1[pos++];
temp2[len+1] = '\0';
break;
}
if (number == 2)
if (tempnumb > StrToInt(Shoots2->Caption))
{
temp2 = new char [300];
for (int z = 0; z < pos; z++)
temp2[z] = temp1[z];
temp2[pos] = '\0';
strcat(temp2, RichEdit2->Lines->Strings[0].
strcat(temp2, "\n");
strcat(temp2, Shoots2->Caption.c_str());
int len = strlen(temp2);
temp2[len] = '\n';
while (temp1[pos])
temp2[++len] = temp1[pos++];
temp2[len+1] = '\0';
break;
}
}
//Если результат попал в 10ку
//то отбрасываем 11 результат
if (temp2)
{
i = 0;
int count = 0;
while (temp2[i++])
{
if (temp2[i] == '\n') count++;
if (count == 20)
{
temp2[i+1] = '\0';
break;
}
}
}
infile.close();
//Заносим temp2 в файл
if (temp2)
{
ofstream outfile ("SeaButResults.txt");
if (!outfile) return;
i = 0;
while (temp2[i])
outfile.put(temp2[i++]);
delete [] temp2;
outfile.close();
}
}
//Таймер для показа победы
void __fastcall
TSeaButForm::Timer3Timer(
{
static int k = 0; //Количество обращений к таймеру
//Если дошло до 8
if (k == 8)
{
//Увеличить кол-во побед
if (Count1Destr == 10)
Wins2->Caption
= IntToStr(StrToInt(Wins2->
else
Wins1->Caption
= IntToStr(StrToInt(Wins1->
k = 0;
Timer3->Enabled = false;
FIGHT->FlashEnabled = true;
}
//Иначе изменить цвета метки
else
{
if (Count1Destr == 10)
if (Win2->Font->Color == clBlack)
Win2->Font->Color = clSilver;
else
Win2->Font->Color = clBlack;
else
if (Win1->Font->Color == clBlack)
Win1->Font->Color = clSilver;
else
Win1->Font->Color = clBlack;
k++;
}
}
//вызов окна результатов
void __fastcall
TSeaButForm::ResultsClick(
{
PlaySound("Sounds\\SOUNREST.
ResultsForm->Position = poMainFormCenter;
ResultsForm->Visible = true;
SeaButForm->Enabled = false;
ResultsForm->LoadRes();
}
//Изменение курсоров
//NameCur - имя файла
//Num - константа для запоминания курсора
void TSeaButForm::ChangeCur (char *NameCur, int Num)
{
HCURSOR cursor;
cursor
= LoadCursorFromFile(NameCur);
if (cursor)
Screen->Cursors[Num] = cursor; //Занести в список
}