Курсовая работа: Создание сетевой игры
#include
"Podkluch.h"
#include
"GameParam.h"
#include
"About.h"
//---------------------------------------------------------------------------
#pragma
package(smart_init)
#pragma link
"LMDCustomBevelPanel"
#pragma link
"LMDCustomControl"
#pragma link
"LMDCustomPanel"
#pragma link
"LMDSimplePanel"
#pragma link
"LMDBackPanel"
#pragma link
"LMDCustomParentPanel"
#pragma link
"LMDBaseControl"
#pragma link
"LMDBaseGraphicControl"
#pragma link
"LMDBaseLabel"
#pragma link
"LMDControl"
#pragma link
"LMDCustomSimpleLabel"
#pragma link
"LMDSimpleLabel"
#pragma link
"lmdcont"
#pragma link
"LMDCustomComponent"
#pragma link
"LMDCustomStatusBar"
#pragma link
"LMDStatusBar"
#pragma link
"LMDCustomPanelFill"
#pragma link
"LMDPanelFill"
#pragma link
"LMDCustomScrollBox"
#pragma link
"LMDListBox"
#pragma link
"LMDCustomFormFill"
#pragma link
"LMDFormFill"
#pragma link
"LMDWndProcComponent"
#pragma link
"LMDBaseShape"
#pragma link
"LMDShapeControl"
#pragma link
"LMDCustomLabel"
#pragma link
"LMDDrawEdge"
#pragma link
"LMDLabel"
#pragma link
"LMDBaseImage"
#pragma link
"LMDCustomGroupBox"
#pragma link
"LMDCustomLImage"
#pragma link
"LMDGraphicControl"
#pragma link
"LMDGroupBox"
#pragma link
"LMDLImage"
#pragma link
"LMDBaseGraphicButton"
#pragma link
"LMDCustomShapeButton"
#pragma link
"LMDShapeButton"
#pragma resource
"*.dfm"
TMainForm *MainForm;
extern bool IsServer;
extern AnsiString
Protocoli[];
extern int KolKub;
extern int MaxOch;
extern int choosenProt;
extern AnsiString
ServerHostName;
extern AnsiString
ServerHostIP;
extern bool IsHostName;
extern bool IsIgrayut;
extern int NomHoda;
extern int MyCurOch;
extern int MyWholeOch;
extern int HisWholeOch;
extern bool IsYaFixed;
extern bool IsHeFixed;
extern int
HisWinPoPartiam;
extern int MyWinPoPartiam;
extern int NomPartia;
int *MasPriem;
//---------------------------------------------------------------------------
__fastcall
TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall
TMainForm::FormCreate(TObject *Sender)
{
FirstTimeShow=true;
IsVisitApplicationBox=false;
}
//---------------------------------------------------------------------------
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)
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9 |