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

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

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

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

Файлы: 1 файл

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

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

                  else

                      if (d1<90)

                        if (Cpu.RowNum[d1+10] != -1) continue;

                  }

                else

                  if (Cpu.RowNum[d1+10] != -1) continue; 

          if (d1%10<9)

            if (Cpu.RowNum[d1+1] != -1)

                if (d1%10<8)

                  if (Cpu.RowNum[d1+2] != -1) continue; 

          if (d1<90)

            if (Cpu.RowNum[d1+10] != -1)

                if (d1<80)

                  if (Cpu.RowNum[d1+20] != -1) continue;

                  else  Cpu.RowNum[d1] = -1;

                else  Cpu.RowNum[d1] = -1;

            else  Cpu.RowNum[d1] = -1;

          else  Cpu.RowNum[d1] = -1;

          } 

    //Аналогично  для 3 палубных

    if (len == 2)

      for (int i = 7; i < 9; i++)

          if (Ships1Destr[i])

            if (i == 8)

                len++;

            else continue;

          else break;

    if (len == 2) return; 

    for (int d1 = 0; d1 < 100; d1++)

      if (Cpu.RowNum[d1] != -1)

          {

          if (d1%10)

            if (Cpu.RowNum[d1-1] != -1)

                {

                if (d1%10>1)

                  {

                  if (Cpu.RowNum[d1-2] != -1)

                      {

                      if (d1%10>2)

                        {

                        if (Cpu.RowNum[d1-3] != -1) continue;

                        else

                            if (d1%10<9)

                              if (Cpu.RowNum[d1+1] != -1) continue;

                        }

                      else

                        if (Cpu.RowNum[d1+1] != -1) continue;

                      }

                  else

                      if (d1%10<9)

                        if (Cpu.RowNum[d1+1] != -1)

                            if (d1%10<8)

                              if (Cpu.RowNum[d1+2] != -1) continue;

                  }

                else

                  if (Cpu.RowNum[d1+1] != -1)

                      if (Cpu.RowNum[d1+2] != -1) continue;

                } 

          if (d1>9)

            if (Cpu.RowNum[d1-10] != -1)

                {

                if (d1>19)

                  {

                  if (Cpu.RowNum[d1-20] != -1)

                      {

                      if (d1>29)

                        {

                        if (Cpu.RowNum[d1-30] != -1) continue;

                        else

                            if (d1<90)

                              if (Cpu.RowNum[d1+10] != -1) continue;

                        }

                      else

                        if (Cpu.RowNum[d1+10] != -1) continue;

                      }

                  else

                      if (d1<90)

                        if (Cpu.RowNum[d1+10] != -1)

                            if (d1<80)

                              if (Cpu.RowNum[d1+20] != -1) continue;

                  }

                else

                  if (Cpu.RowNum[d1+10] != -1)

                      if (Cpu.RowNum[d1+20] != -1) continue;

                } 

          if (d1%10<9)

            if (Cpu.RowNum[d1+1] != -1)

                if (d1%10<8)

                  if (Cpu.RowNum[d1+2] != -1)

                      if (d1%10<7)

                        if (Cpu.RowNum[d1+3] != -1) continue; 

          if (d1<90)

            if (Cpu.RowNum[d1+10] != -1)

                if (d1%10<80)

                  if (Cpu.RowNum[d1+20] != -1)

                      if (d1%10<70)

                        if (Cpu.RowNum[d1+30] != -1) continue;

                        else  Cpu.RowNum[d1] = -1;

                      else  Cpu.RowNum[d1] = -1;

                  else  Cpu.RowNum[d1] = -1;

                else  Cpu.RowNum[d1] = -1;

            else  Cpu.RowNum[d1] = -1;

          else  Cpu.RowNum[d1] = -1;

          } 

    } 

    //Таймер  для замедления выстрелов компьютера

    void __fastcall TSeaButForm::Timer2Timer(TObject *Sender)

    {

    Timer2->Enabled = false;

    CompShot ();

    } 

    //Прорисовка  канвы на форме из сохраненного  изображения

    void __fastcall TSeaButForm::FormPaint(TObject *Sender)

    {

    if (Bitmap1)

      {

      GridField1->Canvas->CopyRect(Rect(0,0,300,300),Bitmap1->Canvas,Rect(0,0,300,300));

      GridField2->Canvas->CopyRect(Rect(0,0,300,300),Bitmap2->Canvas,Rect(0,0,300,300));

      }

    } 

    //Сохранение  изображения канв

    void TSeaButForm::SaveBM (int number)

    {

    //Для какого поля необходимо сохранить изображение

    if (number == 1)

      {

      if (!Bitmap1)

          {

          Bitmap1 = new Graphics::TBitmap ();

          Bitmap1->Height = 300;

          Bitmap1->Width = 300;

          }

      Bitmap1->Canvas->CopyRect(Rect(0,0,300,300),GridField1->Canvas,Rect(0,0,300,300));

      }

    else

      {

      if (!Bitmap2)

          {

          Bitmap2 = new Graphics::TBitmap ();

          Bitmap2->Height = 300;

          Bitmap2->Width = 300;

          }

      Bitmap2->Canvas->CopyRect(Rect(0,0,300,300),GridField2->Canvas,Rect(0,0,300,300));

      }

    } 

    //Установка  свойств окна в нужный режим

    void TSeaButForm::SetWindow (bool kind)

    {

    //kind определят в какой режим нужно установить

    //0 - деактивация  элементов

    //1 - активация

    if (!kind)

      {

      SeaButForm->FormStyle = fsStayOnTop;   //Сделать окно поверх

      TBorderIcons tempBI = BorderIcons;     //Убрать кнопки изменения размера окна

      tempBI >> biMinimize;

      BorderIcons = tempBI;

      File->Enabled = false;                 //деактивировать меню

      Help->Enabled = false;

      }

    //Привести  к первоначальному виду

    else

      {

      SeaButForm->FormStyle = fsNormal;

      TBorderIcons tempBI = BorderIcons;

      tempBI << biMinimize;

      BorderIcons = tempBI;

      File->Enabled = true;

      Help->Enabled = true;

      }

    } 

    //Рисование  на канве под номером number в поле с координатами

    //xp b yp в случая попадания или непопадания. aim определяет попадание

    void TSeaButForm::SeaDraw (int number, int xp, int yp, bool aim)

    {

    if (number == 1)

      if (aim)

          {

          GridField1->Canvas->MoveTo(xp*29+3,yp*29+3);

          GridField1->Canvas->LineTo(xp*29+24,yp*29+24);

          GridField1->Canvas->MoveTo(xp*29+3,yp*29+24);

          }

      else

          {

          GridField1->Canvas->Brush->Color = clBlack;

          GridField1->Canvas->Ellipse(xp*29+10,yp*29+10,xp*29+18,yp*29+18);

          GridField1->Canvas->FloodFill(xp*29+14,yp*29+14,clBlack,fsSurface);

          }

    else

      if (aim)

          {

          GridField2->Canvas->MoveTo(xp*29+3,yp*29+3);

          GridField2->Canvas->LineTo(xp*29+24,yp*29+24);

          GridField2->Canvas->MoveTo(xp*29+3,yp*29+24);

          }

      else

          {

          GridField2->Canvas->Brush->Color = clBlack;

          GridField2->Canvas->Ellipse(xp*29+10,yp*29+10,xp*29+18,yp*29+18);

          GridField2->Canvas->FloodFill(xp*29+14,yp*29+14,clBlack,fsSurface);

          }

    } 

    //Сохранение  результатов. number - определяет того, кто выиграл

    void TSeaButForm::SaveRes (int number)

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