📄 mainform.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MainForm.h"
#include "about.h"
#include "string.h"
#include "Welcome.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ImageMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
int xx=X/20;
int yy=Y/20;
if (canPut&&Button==mbLeft){
if (State[xx][yy]==sNone){
State[xx][yy]=mColor;
DisplayChess(xx,yy,1);
Send[0]='P';Send[1]=xx;
Send[2]=yy;Send[3]='\0';
if (IsServer)
ServerSocket1->Socket->Connections[0]->SendText(AnsiString(Send));
else
ClientSocket1->Socket->SendText(AnsiString(Send));
canPut=false;
if(IsServer) StatusBar1->Panels->Items[1]->Text= "该"+ClientUserName+"走棋!";
else StatusBar1->Panels->Items[1]->Text= "该"+ServerUserName+"走棋!";
stepNum++;
Label7->Caption="第"+IntToStr(stepNum)+"步";
if (Check(mColor)){
MessageBox(Handle,("恭喜你,"+ServerUserName+",你赢了!").c_str(),"胜出",MB_OK);
MessageBox(Handle,"请再接再厉!",
"重新再来",MB_OK);
initialize();
if (mColor==sBlack) canPut=true;
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ExitClick(TObject *Sender)
{
if(MessageBox(Handle,"您真的要休息了吗?",
"退出",MB_OKCANCEL|MB_ICONQUESTION)==IDOK)
{
if(IsServer)
ServerSocket1->Active =false;
else
ClientSocket1->Active = false;
Close();
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::OpenItemClick(TObject *Sender)
{
OpenItem->Checked = !OpenItem->Checked;
if (OpenItem->Checked)
{
ClientSocket1->Active = false;
ServerSocket1->Active = true;
Disconnect->Enabled=true;
DisconnectTButton->Enabled=true;
StatusBar1->Panels->Items[0]->Text = "Waiting...";
}
else
{
if (ServerSocket1->Active)
{
ServerSocket1->Active = false;
Disconnect->Enabled=false;
DisconnectTButton->Enabled=false;
}
StatusBar1->Panels->Items[0]->Text = "";
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ConnectItemClick(TObject *Sender)
{
if (ClientSocket1->Active)
ClientSocket1->Active = false;
if (InputQuery("我的计算机连接到...", "连接地址:", Server))
{
if (Server.Length() > 0)
{
ClientSocket1->Host = Server;
ClientSocket1->Active = true;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->Panels->Items[0]->Text = "成功连到:" + Socket->RemoteHost;
StatusBar1->Panels->Items[1]->Text= "该"+ServerUserName+"走棋!";
Image1->Picture->LoadFromFile("white.bmp");
Image2->Picture->LoadFromFile("black.bmp");
Send[0]='N';strcpy(&Send[1],ClientUserName.c_str());
ClientSocket1->Socket->SendText(AnsiString(Send));
canPut=false;
mColor=sWhite;
ShowMessage("成功连到:" + Socket->RemoteAddress+",可以开始游戏了");
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClientSocket1Disconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->Panels->Items[0]->Text = ClientUserName+"已经掉线了。";
ClientSocket1->Active=false;
canPut=false;
StatusBar1->Panels->Items[1]->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
strcpy(Receive,Socket->ReceiveText().c_str());
switch (Receive[0]){
case 'N'://new friend
ServerUserName=AnsiString(&Receive[1]);
Label4->Caption=ServerUserName;
StatusBar1->Panels->Items[1]->Text="该"+ServerUserName+"走棋!";
break;
case 'C'://chat message
Memo1->Lines->Add("<"+ServerUserName+">"+AnsiString(&Receive[1]));
break;
case 'P'://play chess
State[Receive[1]][Receive[2]]=sBlack;
canPut=true;
StatusBar1->Panels->Items[1]->Text="该"+ClientUserName+"走棋!";
DisplayChess(Receive[1],Receive[2],2);
stepNum++;
Label7->Caption=IntToStr(stepNum);
if (Check(sBlack)){
MessageBox(Handle,("真抱歉,"+ClientUserName+",你输了!").c_str(),
"败北",MB_OK);
MessageBox(Handle,"请重新再来!",
"重新再来",MB_OK);
initialize();
canPut=false;
}
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ServerSocket1Accept(TObject *Sender,
TCustomWinSocket *Socket)
{
IsServer = true;
StatusBar1->Panels->Items[0]->Text = "成功连到: " + Socket->RemoteAddress;
Image1->Picture->LoadFromFile("black.bmp");
Image2->Picture->LoadFromFile("white.bmp");
Send[0]='N';strcpy(&Send[1],ServerUserName.c_str());
ServerSocket1->Socket->Connections[0]->SendText(AnsiString(Send));
canPut=true;
StatusBar1->Panels->Items[1]->Text="该"+ServerUserName+"走棋!";
mColor=sBlack;
ShowMessage("成功连到:" +Socket->RemoteAddress+",可以开始游戏了");
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
strcpy(Receive,Socket->ReceiveText().c_str());
switch (Receive[0]){
case 'N'://new friend
ClientUserName=AnsiString(&Receive[1]);
Label4->Caption=ClientUserName;
break;
case 'C'://chat message
Memo1->Lines->Add("<"+ClientUserName+">"+AnsiString(&Receive[1]));
break;
case 'P'://play chess
State[Receive[1]][Receive[2]]=sWhite;
canPut=true;
StatusBar1->Panels->Items[1]->Text= "该"+ServerUserName+"走棋!";
DisplayChess(Receive[1],Receive[2],2);
stepNum++;
Label7->Caption=IntToStr(stepNum);
if (Check(sWhite)){
MessageBox(Handle,("真遗憾,"+ServerUserName+",你输了!").c_str(),
"败北",MB_OK);
MessageBox(Handle,"请重新来过!",
"重新来过",MB_OK);
initialize();
canPut=true;
}
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ServerSocket1ClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
ServerSocket1->Active = false;
canPut=false;
StatusBar1->Panels->Items[1]->Text="";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -