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

📄 mainform.cpp

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