home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 25: Programming / pc_actual_25.iso / Delphi / CheesboardComponent / example / ChessPrg.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-05-13  |  5.3 KB  |  217 lines

  1. unit ChessPrg;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls,  ExtCtrls, ChessBrd, Spin;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     ButtonBack: TButton;
  12.     ButtonForward: TButton;
  13.     Buttonnew: TButton;
  14.     ListBox1: TListBox;
  15.     Label1: TLabel;
  16.     RadioGroup1: TRadioGroup;
  17.     RadioGroup2: TRadioGroup;
  18.     CheckBoxWhiteOnTop: TCheckBox;
  19.     ComboBox1: TComboBox;
  20.     Label2: TLabel;
  21.     CheckBoxCoords: TCheckBox;
  22.     Label3: TLabel;
  23.     CheckBoxLines: TCheckBox;
  24.     ButtonStop: TButton;
  25.     ButtonMove: TButton;
  26.     ImageCm36: TImage;
  27.     ImageFr40: TImage;
  28.     Label4: TLabel;
  29.     ComboBox2: TComboBox;
  30.     SpinEdit1: TSpinEdit;
  31.     ChessBrd1: TChessBrd;
  32.     procedure UpdateListBox;
  33.     procedure ButtonBackClick(Sender: TObject);
  34.     procedure ChessBrd1LegalMove(Sender: TObject; oldSq, newSq: Square);
  35.     procedure ButtonForwardClick(Sender: TObject);
  36.     procedure ButtonnewClick(Sender: TObject);
  37.     procedure RadioGroup2Click(Sender: TObject);
  38.     procedure RadioGroup1Click(Sender: TObject);
  39.     procedure CheckBoxWhiteOnTopClick(Sender: TObject);
  40.     procedure ChessBrd1Draw(Sender: TObject);
  41.     procedure ChessBrd1Mate(Sender: TObject; oldSq, newSq: Square);
  42.     procedure CheckBoxCoordsClick(Sender: TObject);
  43.     procedure SpinEdit1Change(Sender: TObject);
  44.     procedure Timer1Timer(Sender: TObject);
  45.     procedure CheckBoxLinesClick(Sender: TObject);
  46.     procedure ListBox1Click(Sender: TObject);
  47.     procedure ButtonMoveClick(Sender: TObject);
  48.     procedure ButtonStopClick(Sender: TObject);
  49.     procedure ComboBox1Change(Sender: TObject);
  50.     procedure ChessBrd1CalculateMove(Sender: TObject; var oldsq,
  51.       newsq: Square);
  52.     procedure ChessBrd1CalculationFailed(Sender: TObject; oldSq,
  53.       newSq: Square);
  54.     procedure ComboBox2Change(Sender: TObject);
  55.   private
  56.     { Private declarations }
  57.   public
  58.     { Public declarations }
  59.   end;
  60.  
  61. var
  62.   Form1: TForm1;
  63.  
  64. implementation
  65.  
  66. {$R *.DFM}
  67.  
  68.  
  69. procedure TForm1.ButtonBackClick(Sender: TObject);
  70. begin
  71.      Chessbrd1.MoveBackward;
  72.      UpdateListBox;
  73. end;
  74.  
  75. procedure TForm1.UpdateListBox;
  76. var
  77.     list: TStringList;
  78. begin
  79.     list:=TStringList.Create;
  80.     Chessbrd1.GetMoveList(list);
  81.     ListBox1.Items:=list;
  82.     list.Free;
  83. end;
  84.  
  85. procedure TForm1.ChessBrd1LegalMove(Sender: TObject; oldSq, newSq: Square);
  86. begin
  87.      UpdateListBox;
  88. end;
  89.  
  90. procedure TForm1.ButtonForwardClick(Sender: TObject);
  91. begin
  92.     Chessbrd1.MoveForward;
  93.     UpdateListBox;
  94. end;
  95.  
  96. procedure TForm1.ButtonNewClick(Sender: TObject);
  97. begin
  98.     Chessbrd1.NewGame;
  99.     UpdateListBox;
  100. end;
  101.  
  102. procedure TForm1.RadioGroup2Click(Sender: TObject);
  103. begin
  104.     Chessbrd1.ComputerPlaysWhite:=Boolean(RadioGroup2.ItemIndex)
  105. end;
  106.  
  107. procedure TForm1.RadioGroup1Click(Sender: TObject);
  108. begin
  109.     Chessbrd1.ComputerPlaysBlack:=Boolean(RadioGroup1.ItemIndex)
  110. end;
  111.  
  112. procedure TForm1.CheckBoxWhiteOnTopClick(Sender: TObject);
  113. var
  114.     v: Integer;
  115. begin
  116.     Chessbrd1.WhiteOnTop:=CheckBoxWhiteOnTop.Checked;
  117.     v:=RadioGroup1.Top;
  118.     RadioGroup1.Top:=RadioGroup2.Top;
  119.     RadioGroup2.Top:=v;
  120.  
  121. end;
  122.  
  123. procedure TForm1.ChessBrd1Draw(Sender: TObject);
  124. begin
  125.      MessageDlg('Draw',mtInformation,[mbOk],0);
  126.      Chessbrd1.NewGame;
  127. end;
  128.  
  129. procedure TForm1.ChessBrd1Mate(Sender: TObject; oldSq, newSq: Square);
  130. begin
  131.      MessageDlg('Mate',mtInformation,[mbOk],0);
  132.      Chessbrd1.NewGame;
  133. end;
  134.  
  135. procedure TForm1.CheckBoxCoordsClick(Sender: TObject);
  136. var
  137.     cset: CoordSet;
  138. begin
  139.     if (CheckBoxCoords.Checked) then
  140.     begin
  141.         Include (cset,North);
  142.         Include (cset,East);
  143.         Include (cset,West);
  144.         Include (cset,South);
  145.     end
  146.     else
  147.     begin
  148.         Exclude (cset,North);
  149.         Exclude (cset,East);
  150.         Exclude (cset,West);
  151.         Exclude (cset,South);
  152.     end;
  153.     Chessbrd1.DisplayCoords:=cset;
  154. end;
  155.  
  156. procedure TForm1.SpinEdit1Change(Sender: TObject);
  157. begin
  158. //    Chessbrd1.SearchDepth:=SpinEdit1.value;
  159. end;
  160.  
  161. procedure TForm1.Timer1Timer(Sender: TObject);
  162. begin
  163.     Label1.Caption:=IntToStr(integer(Chessbrd1.Thinking));
  164. end;
  165.  
  166. procedure TForm1.CheckBoxLinesClick(Sender: TObject);
  167. begin
  168.     Chessbrd1.BoardLines:=CheckBoxLines.Checked;
  169. end;
  170.  
  171. procedure TForm1.ListBox1Click(Sender: TObject);
  172. begin
  173.     Chessbrd1.GotoMove(1+(ListBox1.ItemIndex+1) shr 1,((ListBox1.ItemIndex+1) mod 2)=0);
  174. end;
  175.  
  176.  
  177. procedure TForm1.ButtonMoveClick(Sender: TObject);
  178. begin
  179.     Chessbrd1.Think;
  180. end;
  181.  
  182. procedure TForm1.ButtonStopClick(Sender: TObject);
  183. begin
  184.     Chessbrd1.CancelThinking;
  185. end;
  186.  
  187. procedure TForm1.ComboBox1Change(Sender: TObject);
  188. begin    case ComboBox1.ItemIndex of
  189.         0: Chessbrd1.CustomPieceSet:=nil;
  190.         1: Chessbrd1.CustomPieceSet:=ImageFr40.Picture.Bitmap;
  191.         2: Chessbrd1.CustomPieceSet:=ImageCm36.Picture.Bitmap;
  192.     end;
  193. end;
  194.  
  195. procedure TForm1.ChessBrd1CalculateMove(Sender: TObject; var oldsq,
  196.   newsq: Square);
  197. begin
  198.     while (Chessbrd1.moveIsLegal(oldsq,newsq)=FALSE) do
  199.     begin
  200.         oldSq:=Square(random(65));
  201.         newSq:=Square(random(65));
  202.     end;
  203. end;
  204.  
  205. procedure TForm1.ChessBrd1CalculationFailed(Sender: TObject; oldSq,
  206.   newSq: Square);
  207. begin
  208. //
  209. end;
  210.  
  211. procedure TForm1.ComboBox2Change(Sender: TObject);
  212. begin
  213.     Chessbrd1.CustomEngine:=(comboBox2.ItemIndex=1);
  214. end;
  215.  
  216. end.
  217.