Рефераты. Создание сетевой игры

void __fastcall TMainForm::FormActivate(TObject *Sender)

{

    if(FirstTimeShow)

    {

        FirstTimeShow=false;

        InterfaceBezIgri();

        menuBeginClick(this);

    }


}

//---------------------------------------------------------------------------



void __fastcall TMainForm::menuBeginClick(TObject *Sender)

{

    if (IsIgrayut)

    {

        menuStopClick(this);

        if (IsIgrayut) return;

    }


    if (UstanParametrov())     //вызов 2-х форм для установки параметров

    {

        //----подключение----

        switch(choosenProt)

        {

            case 0:

                 IPXConnect();

                 break;

            case 1:

                 TCPIPConnect();

                 break;

            case 2:

                 NetBiosConnect();

                 break;

            case 3:

                 MailSlotConnect();

                 break;

            case 4:

                 PipeConnect();

                 break;

        }


        if(IsServer) lbStat->Caption="Ожидается соединение с клиентом...";

    }


}

//---------------------------------------------------------------------------



bool __fastcall TMainForm::UstanParametrov(void)

{


 int md1,md2;

 for(;;)

 {

        md1=FormParamConnect->ShowModal();

        FormParamConnect->Close();

        if (md1==mrOk)

        {

           if (IsServer)

           {

                md2=FormGameParam->ShowModal();

                if (md2==mrOk) return 1;

                else continue;

           }

           else return 1;

        }

        else return 0;

 }


}



void __fastcall TMainForm::OtobrazhDannihSopernika(int *MasPriem)

{

 Graphics::TBitmap *Bitmap2 = new Graphics::TBitmap();


 AnsiString strCat;

 if(IsServer)

 {

   strCat="_2";

 }


 else

 {

   strCat="";

 }


if(KolKub==1)

{

  Bitmap2->LoadFromResourceName((unsigned int)HInstance,"KUB"+IntToStr(MasPriem[3])+strCat);

  Kubiki2[0]->Picture->Bitmap=Bitmap2;

  Kubiki2[0]->Left=MasPriem[4];

  Kubiki2[0]->Top=MasPriem[5];

  Kubiki2[0]->Visible=true;


}

else if (KolKub==2)

{

  Bitmap2->LoadFromResourceName((unsigned int)HInstance,"KUB"+IntToStr(MasPriem[3])+strCat);

  Kubiki2[0]->Picture->Bitmap=Bitmap2;

  Kubiki2[0]->Left=MasPriem[4];

  Kubiki2[0]->Top=MasPriem[5];

  Kubiki2[0]->Visible=true;


  Bitmap2->LoadFromResourceName((unsigned int)HInstance,"KUB"+IntToStr(MasPriem[6])+strCat);

  Kubiki2[1]->Picture->Bitmap=Bitmap2;

  Kubiki2[1]->Left=MasPriem[7];

  Kubiki2[1]->Top=MasPriem[8];

  Kubiki2[1]->Visible=true;


}


else if (KolKub==3)

{


  Bitmap2->LoadFromResourceName((unsigned int)HInstance,"KUB"+IntToStr(MasPriem[3])+strCat);

  Kubiki2[0]->Picture->Bitmap=Bitmap2;

  Kubiki2[0]->Left=MasPriem[4];

  Kubiki2[0]->Top=MasPriem[5];

  Kubiki2[0]->Visible=true;


  Bitmap2->LoadFromResourceName((unsigned int)HInstance,"KUB"+IntToStr(MasPriem[6])+strCat);

  Kubiki2[1]->Picture->Bitmap=Bitmap2;

  Kubiki2[1]->Left=MasPriem[7];

  Kubiki2[1]->Top=MasPriem[8];

  Kubiki2[1]->Visible=true;


  Bitmap2->LoadFromResourceName((unsigned int)HInstance,"KUB"+IntToStr(MasPriem[9])+strCat);

  Kubiki2[2]->Picture->Bitmap=Bitmap2;

  Kubiki2[2]->Left=MasPriem[10];

  Kubiki2[2]->Top=MasPriem[11];

  Kubiki2[2]->Visible=true;


}


else

{

  Bitmap2->LoadFromResourceName((unsigned int)HInstance,"KUB"+IntToStr(MasPriem[3])+strCat);

  Kubiki2[0]->Picture->Bitmap=Bitmap2;

  Kubiki2[0]->Left=MasPriem[4];

  Kubiki2[0]->Top=MasPriem[5];

  Kubiki2[0]->Visible=true;


  Bitmap2->LoadFromResourceName((unsigned int)HInstance,"KUB"+IntToStr(MasPriem[6])+strCat);

  Kubiki2[1]->Picture->Bitmap=Bitmap2;

  Kubiki2[1]->Left=MasPriem[7];

  Kubiki2[1]->Top=MasPriem[8];

  Kubiki2[1]->Visible=true;


  Bitmap2->LoadFromResourceName((unsigned int)HInstance,"KUB"+IntToStr(MasPriem[9])+strCat);

  Kubiki2[2]->Picture->Bitmap=Bitmap2;

  Kubiki2[2]->Left=MasPriem[10];

  Kubiki2[2]->Top=MasPriem[11];

  Kubiki2[2]->Visible=true;


  Bitmap2->LoadFromResourceName((unsigned int)HInstance,"KUB"+IntToStr(MasPriem[12])+strCat);

  Kubiki2[3]->Picture->Bitmap=Bitmap2;

  Kubiki2[3]->Left=MasPriem[13];

  Kubiki2[3]->Top=MasPriem[14];

  Kubiki2[3]->Visible=true;

}


  HisWholeOch=MasPriem[2];

  lbHisWholeOch->Caption=IntToStr(MasPriem[2]);


delete Bitmap2;

}


//-----------пришли данные соперника--------------------------------------------


void __fastcall TMainForm::Priem(int *MasPriem)

{


  if(MasPriem[0]==0) //первый ответ сервера клиенту

  {

        AnsiString mess;

        mess="Ваш соперник выбрал следующие параметры игры:\nКоличество кубиков: "+IntToStr(MasPriem[1])+"\nМаксимальное количество очков: "+IntToStr(MasPriem[2]);

        IsVisitApplicationBox=true;

        Application->MessageBoxA(mess.c_str(),"Параметры игры",MB_OK);

        KolKub=MasPriem[1];

        MaxOch=MasPriem[2];

        InterfaceBeginNewGame();

        ChangeInterfacePerehodHoda(0);

        IsVisitApplicationBox=false;

  }

  else if (MasPriem[0]==1)  //соперник бросил

  {

     shapeBrosil->Brush->Color=0x0000CE00;


     OtobrazhDannihSopernika(MasPriem);

     if(!IsServer)

     {

        NomHoda++;

     }

     enum TypeDannihForTabl DannieForTabl;

     DannieForTabl=hebrosil;

     ZapolnTabl(DannieForTabl);


     if(IsYaFixed && HisWholeOch>MyWholeOch && HisWholeOch<=MaxOch)

     {

        ViProigrali();

     }

     else if (HisWholeOch>MaxOch)

     {

        lbHisWholeOch->Font->Color=clRed;

        ViViigrali();

     }

     else if(IsYaFixed && HisWholeOch<=MyWholeOch)

     {

        ChangeInterfacePerehodHoda(0);

     }

     else

     {

        ChangeInterfacePerehodHoda(1);

     }


  }

  else if (MasPriem[0]==2)  //соперник зафиксировал

  {

     IsHeFixed=true;

     lbHisWholeOch->Font->Color=clRed;

     shapeFixed->Brush->Color=0x000000CE;

     if(!IsServer)

     {

        NomHoda++;

     }

     enum TypeDannihForTabl DannieForTabl;

     DannieForTabl=hefixed;

     ZapolnTabl(DannieForTabl);


     if(IsYaFixed && MyWholeOch==HisWholeOch)

     {

        Nichia();

     }

     else if(MyWholeOch>HisWholeOch)

     {

        ViViigrali();

     }

     else

     {

        ChangeInterfacePerehodHoda(1);

     }

  }

  else if (MasPriem[0]==3) //соперник разорвал соединение

  {

      IsVisitApplicationBox=true;

      Application->MessageBoxA("Ваш соперник разорвал соединение.\nИгра окончена.","Разрыв соединения",MB_OK);


      switch(choosenProt)

      {

         case 0:

            IPXCloseConnection();

            break;

         case 1:

            TCPIPCloseConnection();

            break;

         case 2:

            NetBiosCloseConnection();

            break;

         case 3:

            MailSlotCloseConnection();

            break;

         case 4:

            PipeCloseConnection();

            break;

      }


      for (int i=0;i<KolKub;i++)

      {

          delete Kubiki1[i];

          delete Kubiki2[i];

      }

      IsIgrayut=false;

      InterfaceBezIgri();

      IsVisitApplicationBox=false;

  }


  delete [] MasPriem;


}


//----------------процедура заполнения таблицы----------------------------------


void __fastcall TMainForm::ZapolnTabl(enum TypeDannihForTabl DannieForTabl)

{

  if(IsServer)

  {

     if(DannieForTabl==yabrosil)

     {

        listboxOchki->Items->Add("          "+IntToStr(NomHoda)+";         "+IntToStr(MyCurOch));

        listboxOchki->TopIndex=NomHoda-1;

        if(NomHoda==9)

        {

            listboxOchki->Width=236;

            listboxOchki->Left=14;

        }

     }

     else if (DannieForTabl==yafixed)

     {

        listboxOchki->Items->Add("          "+IntToStr(NomHoda)+";         0");

        listboxOchki->TopIndex=NomHoda-1;

        if(NomHoda==9)

        {

            listboxOchki->Width=236;

            listboxOchki->Left=14;

        }

     }

     else if (DannieForTabl==hebrosil)

     {

        listboxOchki->SetItemPart(NomHoda-1,2,"         "+IntToStr(MasPriem[1]));

        listboxOchki->TopIndex=NomHoda-1;

     }

     else

     {

        listboxOchki->SetItemPart(NomHoda-1,2,"         0");

        listboxOchki->TopIndex=NomHoda-1;

     }

  }

  else

  {

     if(DannieForTabl==yabrosil)

     {

        listboxOchki->SetItemPart(NomHoda-1,1,"         "+IntToStr(MyCurOch));

        listboxOchki->TopIndex=NomHoda-1;

     }

     else if (DannieForTabl==yafixed)

     {

        listboxOchki->SetItemPart(NomHoda-1,1,"         0");

        listboxOchki->TopIndex=NomHoda-1;

     }

     else if (DannieForTabl==hebrosil)

     {

        listboxOchki->Items->Add("          "+ IntToStr(NomHoda)+";;         "+IntToStr(MasPriem[1]));

Страницы: 1, 2, 3, 4, 5, 6, 7



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.