Логическая игра «Морской бой»

Автор работы: Пользователь скрыл имя, 17 Февраля 2011 в 16:34, курсовая работа

Описание работы

Программный продукт «Логическая игра «Морской бой»», используемый пользователем персонального компьютера.
Разработчиком программы является студент Томского Политехнического Университета группы 8880 специальности «Информационные системы и технологии в бизнесе» Погребной Вадим Юрьевич.
Программный продукт создается на основании выданного задания от преподавателя кафедры АИКС Луневой Е.Е.
Первым этапом разработки программного продукта будет составление функциональной спецификации, в которой будет описана программа с точки зрения пользователя, её основные функции. Вторым этапом будет разработка основных модулей программы и их функциональных возможностей, кодирование программы, отладка и тестирование программы.

Файлы: 1 файл

Пояснительная записка.doc

— 552.50 Кб (Скачать файл)

    {

    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].c_str());

            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].c_str());

            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].c_str());

            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].c_str());

            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(TObject *Sender)

    {

    static int k = 0;    //Количество обращений к таймеру

    //Если  дошло до 8

    if (k == 8)

      {

      //Увеличить кол-во побед

      if (Count1Destr == 10)

          Wins2->Caption = IntToStr(StrToInt(Wins2->Caption)+1);

      else

          Wins1->Caption = IntToStr(StrToInt(Wins1->Caption)+1);

      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(TObject *Sender)

    {

    PlaySound("Sounds\\SOUNREST.WAV", 0, SND_ASYNC);

    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;         //Занести в список 

    }

Информация о работе Логическая игра «Морской бой»