📄 mainform.cpp
字号:
//---------------------------------------------------------------------------
void __fastcall TMainForm::DisconnectClick(TObject *Sender)
{
ClientSocket1->Close();
OpenItemClick(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ChatTButtonClick(TObject *Sender)
{
Send[0]='C';
strcpy(&Send[1],ChatTxt->Text.c_str());
if (IsServer)
{
ServerSocket1->Socket->Connections[0]->SendText(AnsiString(Send));
Memo1->Lines->Add("<"+ServerUserName+">"+ChatTxt->Text);
}
else
{
ClientSocket1->Socket->SendText(AnsiString(Send));
Memo1->Lines->Add("<"+ClientUserName+">"+ChatTxt->Text);
}
Memo1->Lines->Add("<"+ServerUserName+">"+ChatTxt->Text);
ChatTxt->Text=EmptyStr;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ChatTxtKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key==VK_RETURN)
ChatTButtonClick(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DisplayChess(int xx, int yy,int flag)
{
if (flag==1)
Image->Canvas->Draw(xx*20+5,yy*20+5,Image1->Picture->Graphic);
else
Image->Canvas->Draw(xx*20+5,yy*20+5,Image2->Picture->Graphic);
}
//---------------------------------------------------------------------------
bool __fastcall TMainForm::Check(TState flag)
{
for (int i=0;i<19;i++)
for (int j=0;j<19;j++){
if(State[i][j]==flag){
if (i<15){
if (State[i][j]==flag&&State[i+1][j]==flag&&
State[i+2][j]==flag&&State[i+3][j]==flag&&
State[i+4][j]==flag)
return true;
}
if (j<15){
if (State[i][j]==flag&&State[i][j+1]==flag&&
State[i][j+2]==flag&&State[i][j+3]==flag&&
State[i][j+4]==flag)
return true;
}
if (j<15&&i<15){
if (State[i][j]==flag&&State[i+1][j+1]==flag&&
State[i+2][j+2]==flag&&State[i+3][j+3]==flag&&
State[i+4][j+4]==flag)
return true;
}
if (j<15&&i>=4){
if (State[i][j]==flag&&State[i-1][j+1]==flag&&
State[i-2][j+2]==flag&&State[i-3][j+3]==flag&&
State[i-4][j+4]==flag)
return true;
}
}
}
return false;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::initialize()
{
Image->Picture->Graphic=NULL;
canPut=false;
stepNum=0;
Label7->Caption=IntToStr(stepNum);
StatusBar1->Panels->Items[1]->Text="";
Image->Top=0;
Image->Left=0;
Image->Height=BKImage->Height;
Image->Width=BKImage->Width;
Image->Canvas->Pen->Color=RGB(2,255,53);
Memo1->Lines->Clear();
DrawChessboard();
for (int i=0;i<19;i++)
for (int j=0;j<19;j++)
State[i][j]=sNone;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DrawChessboard()
{
//外框
Image->Canvas->Pen->Width=1;
Image->Canvas->Rectangle(13,13,387,387);
Image->Canvas->Pen->Width=2;
Image->Canvas->Rectangle(16,16,384,384);
//网格线
Image->Canvas->Pen->Width=1;
for (int i=0;i<19;i++){
Image->Canvas->MoveTo((i+1)*20,20);
Image->Canvas->LineTo((i+1)*20,380);
Image->Canvas->MoveTo(20,(i+1)*20);
Image->Canvas->LineTo(380,(i+1)*20);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ColorTButtonClick(TObject *Sender)
{
if(ColorDialog1->Execute()){
Image->Canvas->Pen->Color=ColorDialog1->Color;
DrawChessboard();
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::BackTButtonClick(TObject *Sender)
{
OpenDialog1->Title="选择背景图案";
if(OpenDialog1->Execute()){
BKImage->Picture->LoadFromFile(
OpenDialog1->FileName);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::AboutClick(TObject *Sender)
{
AboutBox->Show();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormShow(TObject *Sender)
{
TWelcomeForm * welcomeform=new TWelcomeForm(NULL);
if (welcomeform->ShowModal()==mrOk)
{
MainForm->Show();
Label2->Caption=welcomeform->UserNickName->Text;
OpenDialog1->Filter = GraphicFilter(__classid(TGraphic));
initialize();
//OpenItemClick(NULL);
if (welcomeform->RadioButton1->Checked)
{
//做主机
IsServer=true;
MainForm->Caption="网络五子棋-服务器端";
ServerUserName=welcomeform->UserNickName->Text;
ClientSocket1->Active = false;
ServerSocket1->Active = true;
StatusBar1->Panels->Items[0]->Text = "Waiting...";
OpenItem->Checked=true;
ConnectItem->Visible=false;
ConnectTButton->Visible=false;
Disconnect->Enabled=true;
DisconnectTButton->Enabled=true;
}
else
{
//做客户端
IsServer=false;
MainForm->Caption="网络五子棋-客户端";
ClientUserName=welcomeform->UserNickName->Text;
OpenItem->Visible=false;
if(welcomeform->Host->Text.Length()>0)
{
ClientSocket1->Host=welcomeform->Host->Text;
ServerSocket1->Active = false;
ClientSocket1->Active = true;
Disconnect->Enabled=true;
DisconnectTButton->Enabled=true;
StatusBar1->Panels->Items[0]->Text = "connecting..";
}
else
{
ShowMessage("您没有输入主机地址,请程序启动后重新连接!");
}
}
}
else Close();
delete welcomeform;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ServerSocket1ClientError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
StatusBar1->Panels->Items[0]->Text = "套接字错误:";
StatusBar1->Panels->Items[1]->Text = "错误代码为" + IntToStr(ErrorCode);
ShowMessage("套接字错误,代码为" + IntToStr(ErrorCode));
ErrorCode = 0;
ServerSocket1->Active = false;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
StatusBar1->Panels->Items[0]->Text = "套接字错误:";
StatusBar1->Panels->Items[1]->Text = "错误代码为" + IntToStr(ErrorCode);
ShowMessage("套接字错误,代码为" + IntToStr(ErrorCode));
ErrorCode = 0;
ClientSocket1->Active = false;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -