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

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

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

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

Файлы: 1 файл

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

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

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

    {

    //Если  выбран интерфейс игры с компьютером

    if (Comp->Checked)

      {

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

      //Активизация элементов интерфейса и создание кораблей

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

    {

    //Определение  интерфейса

    if (Comp->Checked)

      {

      bool AllRight = CheckShips (1);  //Проверить расположение кораблей 

      //Если все в порядке

      if (AllRight)

          {

          //Звук  и смена курсоров на боевые

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

          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.WAV", 0, SND_ASYNC);

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

    {

    //Звук  и смена курсоров на начальные

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

    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(GridField2->CellRect(i,j));

      }

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

    {

    bool AllRight = CheckShips (1);     //Проверка кораблей 1го поля 

    if (AllRight)                       //Если все в порядке

      {

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

      //Активизация 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(TObject *Sender)

    {

    bool AllRight = CheckShips (2);      //Проверка  кораблей 2го поля 

    if (AllRight)                        //Если все в порядке

      {

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

      //Скрытие кораблей 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::GridField1MouseDown(TObject *Sender,

            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);

<

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