亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mainform1.cpp

?? 《C++Builder程序設計范例--中國象棋》配書盤自述文件
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
                      RBishopPosDone = false;

         if (ChessBoard[sq].color == black)
          if (ChessBoard[sq].piece == bishop)
                 if ((sq != 0x52) && (sq != 0x56) && (sq != 0x70) && (sq != 0x74)
                     && (sq != 0x78) && (sq != 0x92) && (sq != 0x96))
                 BBishopPosDone = false;

          if (ChessBoard[sq].color == red)
             if (ChessBoard[sq].piece == pawn)
               {
               if ((sq < 0x50) && (sq  >= 0x30 ))
                 if ((sq == 0x31) || (sq == 0x33) || (sq ==0x35) || (sq == 0x37)
                   || (sq == 0x41) || (sq == 0x43) || (sq == 0x45) || (sq == 0x47))
                      RPawnPosDone = false;
                   if ((sq >> 4) < 3)
                     RPawnPosDone = false;
                }

          if (ChessBoard[sq].color == black)
            if (ChessBoard[sq].piece == pawn)
              {
                if ((sq  >= 0x50) && (sq < 0x70 ))
                 if ((sq == 0x51) || (sq == 0x53) || (sq == 0x55) || (sq == 0x57)
                    || (sq == 0x61) || (sq == 0x63) || (sq == 0x65) || (sq == 0x67))
                  BPawnPosDone = false;
                  if (( sq >> 4) >= 7)
                     BPawnPosDone = false;
              }
           }

             if (RKingPosDone == false)
                 ErrorPosText = ErrorPosText+ "帥";
             if (BKingPosDone == false)
                ErrorPosText = ErrorPosText + "將";
             if (RAssistPosDone == false)
              ErrorPosText = ErrorPosText + "仕";
             if (BAssistPosDone == false)
              ErrorPosText = ErrorPosText + "士";
             if (RBishopPosDone == false)
              ErrorPosText = ErrorPosText + "相";
             if (BBishopPosDone == false)
              ErrorPosText = ErrorPosText + "象";
             if (RPawnPosDone == false)
             ErrorPosText = ErrorPosText + "兵";
             if (BPawnPosDone == false)
             ErrorPosText = ErrorPosText + "卒";

             ErrorPosText = ErrorPosText + "的位置錯誤";

      if ((TotalCount[red] <= 16) && (TotalCount[black] <= 16) &&
          RKingNumDone && BKingNumDone && RAssistNumDone && BAssistNumDone
           && RBishopNumDone && BBishopNumDone && RKnightNumDone && BKnightNumDone
           && RRookNumDone && BRookNumDone  && RGunnerNumDone && BGunnerNumDone
           && RPawnNumDone && BPawnNumDone)
         {
         ResetNewPos();
         if (Attacks(Player, PieceTable[Opponent][0].isquare))
               ErrorPosText = "王" + ErrorPosText; 

	 if (!Attacks(Player, PieceTable[Opponent][0].isquare)&&
           RKingPosDone && BKingPosDone && RAssistPosDone && BAssistPosDone
           && RBishopPosDone && BBishopPosDone && RPawnPosDone && BPawnPosDone)
            Done = true;
         else
            Error(ErrorPosText.c_str());
          }
      else
        Error(ErrorNumText.c_str());

      }
   else
      NormalSetup();

   if (Done)
      NormalSetup();

}
//---------------------------------------------------------------------------
/*
主菜單項“提示”事件處理函數
 把程序計算得出的最好走法在信息框中顯示出來。
*/
void __fastcall TMainForm::Hint1Click(TObject *Sender)
{
   SearchHintMove();
   DisplayHint();
}
//---------------------------------------------------------------------------
/*
主菜單項“對弈”事件處理函數
 每點擊一次,程序走一步,每走完一次,程序輪流改變對手。
*/
void __fastcall TMainForm::PassClick(TObject *Sender)
{
 if (Level == easygame)
      HideAttacks();
   CurPlayer = Opponent;
   ComputerColor = Player;
   ComputersTurn();
        
}
//---------------------------------------------------------------------------
/*
主菜單項“輪流”子菜單項”紅方“事件處理函數
 選中子菜單項”紅方“時,在該項前打勾。同時設置為當前玩家。
*/
void __fastcall TMainForm::RedTurnClick(TObject *Sender)
{
   CheckMenuItem(TChessEditMenu->Handle, BlackTurn->Command, MF_UNCHECKED);
   CheckMenuItem(TChessEditMenu->Handle, RedTurn->Command, MF_CHECKED);
   CurPlayer = red;
   ComputerColor = black;
   if (CurPlayer != Player)
      {
      Opponent = ComputerColor;
      Player = ProgramColor = CurPlayer;
      }
        
}
//---------------------------------------------------------------------------
/*
主菜單項“輪流”子菜單項”黑方“事件處理函數
 選中子菜單項”黑方“時,在該項前打勾。同時設置為當前玩家。
*/
void __fastcall TMainForm::BlackTurnClick(TObject *Sender)
{
   CheckMenuItem(TChessEditMenu->Handle, BlackTurn->Command, MF_CHECKED);
   CheckMenuItem(TChessEditMenu->Handle, RedTurn->Command, MF_UNCHECKED);
   CurPlayer = black;
   ComputerColor = red;
   if (CurPlayer != Player)
      {
      Opponent = ComputerColor;
      Player = ProgramColor = CurPlayer;
      }
        
}
//---------------------------------------------------------------------------
/*
  主菜單項“顏色”事件處理函數
  彈出顏色對話框,設置棋盤背景顏色。
  Invalidate函數請求重畫
*/
void __fastcall TMainForm::ColorsClick(TObject *Sender)
{
  ColorDlg->ShowModal();
  hColorBrush = CreateSolidBrush(
      RGB(ColorSquareColors[0], ColorSquareColors[1], ColorSquareColors[2]));
  Invalidate();
}
//---------------------------------------------------------------------------
/*
  主菜單項“棋子值”事件處理函數
  模態彈出設置棋子值對話框,設置每個棋子(士、象、馬、車、炮、兵)的估價值。
*/
void __fastcall TMainForm::PieceValuesClick(TObject *Sender)
{
 PieceValueDlg->ShowModal();
}
//---------------------------------------------------------------------------
/*
  主菜單項“最好路線”事件處理函數
   翻轉子菜單項”最好路線“時,改變該項前的勾號。
   勾住 ”最好路線“時,顯示對弈時的最好路線。
   去掉勾時,則不顯示對弈時的最好路線 。
  */
void __fastcall TMainForm::BestPathClick(TObject *Sender)
{
ShowBestPath = !ShowBestPath;

   if (ShowBestPath)
      CheckMenuItem(TChessMenu->Handle, BestPath->Command, MF_CHECKED);
   else
      {
      CheckMenuItem(TChessMenu->Handle, BestPath->Command, MF_UNCHECKED);
      InfoForm->BestPath->Caption="";
      }
        
}
//---------------------------------------------------------------------------
/*
  主菜單項“拖動”事件處理函數
   選中該子菜單項時,在該項前打勾號。
  當移動棋子時,采用動畫方式。
  */
void __fastcall TMainForm::MouseDragClick(TObject *Sender)
{
 POINT Point;

   if (!Dragging && GotStartSquare)
      {
         DrawNormalBitmap(MoveStartSquare);
         GetCursorPos(&Point);
         DragStart(MoveStartSquare, Point);
      }

   Dragging = true;
   CheckMenuItem(TChessMenu->Handle, MouseDrag->Command, MF_CHECKED);
   CheckMenuItem(TChessMenu->Handle, MouseSelect->Command, MF_UNCHECKED);
        
}
//---------------------------------------------------------------------------
/*
  主菜單項“選擇”事件處理函數
   選中該子菜單項時,在該項前打勾號。
  移動棋子時,采用棋子反相方式。
  */
void __fastcall TMainForm::MouseSelectClick(TObject *Sender)
{
 DragEnd(true);
   Dragging = false;
   CheckMenuItem(TChessMenu->Handle, MouseDrag->Command, MF_UNCHECKED);
   CheckMenuItem(TChessMenu->Handle, MouseSelect->Command, MF_CHECKED);
   if (GotStartSquare)
         DrawInvertedBitmap(MoveStartSquare);
         
}
//---------------------------------------------------------------------------
/*
  主窗體鼠標移動事件處理函數
   選中棋子時,在當前鼠標位置顯示棋子(動畫)。
  */
void __fastcall TMainForm::FormMouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
 if (!GotStartSquare || !Dragging)
      return;
   Drag(Point(X,Y));
       
}
//---------------------------------------------------------------------------
 /*
  主菜單項“聲音”事件處理函數
   翻轉子菜單項”聲音“時,改變該項前的勾號。
 只有系統中配有多媒體喇叭時,才有可能發出聲音。
  */
void __fastcall TMainForm::SoundClick(TObject *Sender)
{
 SoundOn = !SoundOn;
   if (SoundOn)
    Sound->Checked = true;
   else
    Sound->Checked = false;

}
//---------------------------------------------------------------------------
 /*
  主窗體定時器事件處理函數
   每當程序發出WM_TIMER消息時,在信息框體中顯示下棋時間。
  */
void __fastcall TMainForm::Timer1Timer(TObject *Sender)
{
  DisplayTime();
}
//---------------------------------------------------------------------------
/*
  主窗體窗體關閉事件處理函數
   釋放系統資源。
   對于非可視化指針,用new創建,還需用delete撤消。
  */
void __fastcall TMainForm::FormDestroy(TObject *Sender)
{
    delete FileName;
    delete InfoForm;
    delete EditForm;
   DeleteObject(hColorBrush);
   for (int i = 0; i < 7; i++)
      {
      DeleteObject(MaskArray[i]);
      for (int j = 0; j < 2; j++)
         DeleteObject(PieceBmpArray[i][j]);
      }
   Timer1->Enabled=false;

}
//---------------------------------------------------------------------------
  /*
  主菜單項“每次移動時間”事件處理函數
   選中該子菜單項時,在該項前打勾號。
  模態彈出“設置每次移動秒數”對話框,設置每次移動程序“想問題”的時間。如果
  輸入沒有兩位小數的浮點數值,彈出錯誤對話框。
  */
void __fastcall TMainForm::MoveTimeClick(TObject *Sender)
{
 char *SecsPerMove = new char[40];
       COLORTYPE color;
       int temp;
  sprintf(SecsPerMove, "%.2f", AverageTime);

  if (InputSecPerMoveDlg->ShowModal()==mrOk)
      {
   SecsPerMove = InputSecPerMoveDlg->Edit1->Text.c_str();
      double NewMoveTime = atof(SecsPerMove);

      if (NewMoveTime > 0.)
         {
         if (Level != normal)
            {
            UnCheckLevelMenu(Level);
            CheckMenuItem(TChessMenu->Handle, MoveTime->Command, MF_CHECKED);
            }
         Level = normal;
         AverageTime = NewMoveTime;
         PrintCurLevel();
         /*
    在C++ Builder中枚舉常量加一個常數,不能成為后一個常量。
     只得采用整數間接來達到目的。
    */
        for (temp=0;temp<=1;temp++)
          {
            { if (temp==0)
              color = red;
                 if (temp==1)
                   color= black;
            ChessTime[color].totaltime = (MoveNumber / 2) * AverageTime;
            }
           } 
         MaxLevel = MAXPLY;
         }
      else
	 Error("時間不正確。請重輸。");
      }
   delete SecsPerMove;

}
//---------------------------------------------------------------------------
  /*
  主菜單項“總時間”事件處理函數
   選中該子菜單項時,在該項前打勾號。
  模態彈出“設置每次游戲分鐘數”對話框,設置每次游戲程序的時間。如果
  輸入沒有兩位小數的浮點數值,彈出錯誤對話框。
  */
void __fastcall TMainForm::TotalTimeClick(TObject *Sender)
{
  char *TotalMoveTime = new char[40];
  int temp;
  COLORTYPE color;
   sprintf(TotalMoveTime, "%.2f", AverageTime);

    if (InputMinPerGameDlg->ShowModal()==mrOk)
      {
      TotalMoveTime = InputMinPerGameDlg->Edit1->Text.c_str();
      double NewMoveTime = atof(TotalMoveTime);
      if (NewMoveTime > 0.)
         {
         if (Level != fullgametime)
            {
            UnCheckLevelMenu(Level);
            CheckMenuItem(TChessMenu->Handle, TotalTime->Command, MF_CHECKED);
            }
         Level = fullgametime;
         AverageTime = NewMoveTime;
         PrintCurLevel();
         /*
    在C++ Builder中枚舉常量加一個常數,不能成為后一個常量。
    只得采用整數間接來達到目的。
    */
      for (temp=0;temp<=1;temp++)
         {   { if (temp==0)
              color = red;
                 if (temp==1)
                   color= black;
            ChessTime[color].totaltime = (MoveNumber / 2) * AverageTime;
             }
          }
         MaxLevel = MAXPLY;
         }
      else
	 Error("時間不正確。請重輸。");
      }
   delete TotalMoveTime;

}
//---------------------------------------------------------------------------
 /*
  主菜單項“匹配”事件處理函數
   選中該子菜單項時,在該項前打勾號。同時設置信息窗體中的級別文本。
  */
void __fastcall TMainForm::MatchingClick(TObject *Sender)
{
 if (Level != matching)
      {
      UnCheckLevelMenu(Level);
      CheckMenuItem(TChessMenu->Handle, Matching->Command, MF_CHECKED);
      }
   Level = matching;
   PrintCurLevel();

}
//---------------------------------------------------------------------------
  /*
  主菜單項“退出”事件處理函數
  */
void __fastcall TMainForm::Exit1Click(TObject *Sender)
{
 MainForm->Close();
}
  /*
  自定義消息處理函數
  響應IDM_EXIT消息請求關閉窗口。
  */
void  TMainForm::Exit(TMessage &Msg )
 {
    MainForm->Exit1Click(Exit1);
  }
//---------------------------------------------------------------------------
  /*
  自定義結束游戲函數
  動態創建對話框。注意,別忘記撤消創建的資源。
  */
void TMainForm::EndGame()
{
    TEndChessGameDlg *EndChessGameDlg = new TEndChessGameDlg(Application,(AnsiString) EndGameMessage);
    EndChessGameDlg->ShowModal();
   delete EndChessGameDlg;
   return;

}
//---------------------------------------------------------------------------
/*
    關閉應用程序時,為避免數據丟失,應對一些重要的數據進行保存。
    FormCloseQuery是解決問題的關鍵。當窗口關閉時,
    調用VCL函數TForm::Close。
    Close并不是自己關閉窗體。首先它申請FormCloseQuery句柄允許。
    程序退出前,必須經過FormCloseQuery句柄函數允許。
    當選擇“游戲->退出”或撳擊程序標題欄的關閉圖標時,FormCloseQuery
    將執行。如果FormCloseQuery設置CanClose為false,窗體將不關閉。
    設置CanClose為true則允許程序關閉。在FormCloseQuery返回前,調用
    QuitProgram()保存chess.ini文件。
*/
void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (ComputerThinking || AutoPlay)
            {
            ::PostMessage(MainForm->Handle,WM_COMMAND,Stop->Command,0);
            ::PostMessage(MainForm->Handle,WM_COMMAND,IDM_EXIT,0);
            CanClose=false;
            }
         QuitProgram();
         CanClose = true;
}
//---------------------------------------------------------------------------








?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久影音资源网| 亚洲大片精品永久免费| 亚洲综合色区另类av| 麻豆精品视频在线观看视频| 色综合天天综合给合国产| 日韩欧美一级二级| 日韩成人精品视频| av在线这里只有精品| 欧美日韩一区不卡| 亚洲人吸女人奶水| 国产成a人亚洲| 欧美精品一区二区三区蜜臀 | 精品国产乱码久久久久久图片| 亚洲色图欧洲色图| 粉嫩aⅴ一区二区三区四区五区| 欧美电影免费观看高清完整版在线| 亚洲bt欧美bt精品777| 一本一道久久a久久精品| 国产精品九色蝌蚪自拍| 国产福利一区在线观看| 精品国产91亚洲一区二区三区婷婷 | 91精品国产乱码| 亚洲一二三四在线观看| 日本道免费精品一区二区三区| 国产精品午夜在线观看| 粉嫩高潮美女一区二区三区| 国产亚洲精品福利| 国产精品538一区二区在线| 久久久www免费人成精品| 美女视频黄 久久| 欧美一卡2卡3卡4卡| 另类中文字幕网| 精品999久久久| 成人午夜免费av| 中文字幕一区二区三区在线不卡| 波多野结衣亚洲一区| 亚洲欧洲日韩av| 色欲综合视频天天天| 亚洲狠狠丁香婷婷综合久久久| 日本伦理一区二区| 亚洲精品国产一区二区精华液 | 高清不卡在线观看av| 国产欧美视频一区二区| 成人福利电影精品一区二区在线观看| 国产精品成人一区二区艾草| 91视频观看视频| 亚洲综合激情另类小说区| 欧美日韩精品欧美日韩精品| 全国精品久久少妇| 久久久99精品久久| 91偷拍与自偷拍精品| 亚洲一区二区三区自拍| 欧美大白屁股肥臀xxxxxx| 国产精品一区在线观看你懂的| 中文字幕日韩av资源站| 精品视频1区2区3区| 韩日精品视频一区| 中文字幕中文字幕在线一区| 欧美日韩在线播放三区| 国内国产精品久久| 亚洲欧美日韩国产手机在线| 欧美一区二区在线免费播放| 国产成人免费视| 亚洲国产中文字幕在线视频综合| 精品国内片67194| 粉嫩高潮美女一区二区三区| 午夜精品久久久久影视| 国产人成一区二区三区影院| 日本高清视频一区二区| 蜜桃av噜噜一区| 中文字幕不卡在线播放| 欧美猛男男办公室激情| 成人免费视频一区| 石原莉奈一区二区三区在线观看| 欧美激情在线一区二区| 欧美军同video69gay| 成人aa视频在线观看| 免费观看在线综合色| 亚洲欧美日韩国产另类专区| 欧美精品一区二区精品网| 色婷婷av一区二区三区大白胸| 韩国一区二区在线观看| 亚洲线精品一区二区三区| 国产嫩草影院久久久久| 日韩一区二区三免费高清| 色88888久久久久久影院野外| 国产精品小仙女| 蜜桃视频一区二区三区在线观看| 亚洲裸体在线观看| 国产免费成人在线视频| 日韩欧美激情一区| 欧美疯狂性受xxxxx喷水图片| 色综合欧美在线视频区| 看电视剧不卡顿的网站| 欧美一卡2卡3卡4卡| 99在线热播精品免费| 久久99精品国产.久久久久久| 亚洲国产三级在线| 国产精品成人免费| 久久久午夜电影| 精品久久久久久久一区二区蜜臀| 欧美日韩国产成人在线免费| 99精品视频中文字幕| 丁香婷婷综合激情五月色| 久久99精品国产.久久久久| 日本欧洲一区二区| 亚洲国产精品影院| xf在线a精品一区二区视频网站| 欧美喷潮久久久xxxxx| 在线观看一区二区视频| 色诱视频网站一区| 色婷婷一区二区| 在线观看三级视频欧美| 91麻豆国产香蕉久久精品| 色哟哟国产精品免费观看| 91亚洲精品乱码久久久久久蜜桃| 99视频精品免费视频| 99精品视频在线播放观看| 成a人片亚洲日本久久| 播五月开心婷婷综合| proumb性欧美在线观看| 99久久伊人久久99| 一本在线高清不卡dvd| 欧美午夜寂寞影院| 欧美男男青年gay1069videost| 欧美日韩高清一区二区| 欧美精品乱码久久久久久按摩 | 欧美视频一区在线| 欧美系列亚洲系列| 日韩欧美自拍偷拍| 国产视频一区在线观看| 色综合天天狠狠| 亚洲日韩欧美一区二区在线| 久久九九久久九九| 久久久国产精品麻豆| 国产精品丝袜91| 最好看的中文字幕久久| 亚洲激情校园春色| 日本亚洲欧美天堂免费| 国产一区二区久久| 99久久99久久精品免费看蜜桃| 在线区一区二视频| 精品精品国产高清a毛片牛牛| 中文字幕久久午夜不卡| 洋洋av久久久久久久一区| 日本不卡一区二区三区高清视频| 九九视频精品免费| 国产高清久久久久| 91在线观看一区二区| 欧美精品粉嫩高潮一区二区| 久久久久成人黄色影片| 伊人一区二区三区| 精品一区二区三区在线视频| 91婷婷韩国欧美一区二区| 日韩视频永久免费| 亚洲欧美区自拍先锋| 精品中文字幕一区二区| 91福利视频网站| 精品国产青草久久久久福利| 亚洲综合图片区| 成人小视频在线| 欧美一区二区大片| 夜夜嗨av一区二区三区四季av| 国产成人午夜片在线观看高清观看| 欧洲另类一二三四区| 欧美经典三级视频一区二区三区| 亚洲成人综合视频| 91在线国产福利| 欧美高清在线视频| 久久精品免费观看| 欧美吻胸吃奶大尺度电影| 国产精品久久久久久久浪潮网站 | 日韩av在线免费观看不卡| aaa亚洲精品| 国产三级三级三级精品8ⅰ区| 五月综合激情婷婷六月色窝| 一道本成人在线| 国产精品国产三级国产有无不卡| 精品在线播放午夜| 欧美一区二区精美| 三级一区在线视频先锋| 欧美在线观看你懂的| 中文子幕无线码一区tr| 国产精品一卡二卡在线观看| 日韩欧美国产综合在线一区二区三区 | 欧美经典一区二区三区| 韩国在线一区二区| 精品国产乱码久久久久久久| 日韩综合在线视频| 69堂精品视频| 秋霞av亚洲一区二区三| 欧美剧在线免费观看网站 | 91精品免费在线观看| 亚洲一区二区三区四区五区中文| 色综合天天综合网天天狠天天| 中文字幕在线一区免费| 成人av免费在线观看| 国产欧美日韩久久| 波多野结衣亚洲一区| 中文字幕一区二区三区视频|