⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.cpp

📁 关于书籍《Borland c++Builder工程实践》的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------
#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 + -