1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, math;
type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; Label2: TLabel; procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); procedure Button1Click(Sender: TObject); private public end;
const qu_x=8; qu_y=8; var Form1: TForm1;
implementation
{$R *.dfm}
var wk,sk:int64; bitzahl:int64; bitzahlen:array[0..63] of int64; exz:extended;
function Bittest (TestZahl : int64;Bitnr: byte):boolean; var Bitmaske : int64; begin Result := (testzahl and (Int64(1) shl bitnr)) <> 0; end;
procedure BitSet(var TestZahl : int64;Bitnr: byte); var bitmaske:int64; begin bitmaske := Int64(1) shl bitnr; testzahl:= bitmaske or testzahl; end;
procedure BitClear(var TestZahl : int64;Bitnr: byte); var bitmaske:int64; begin bitmaske:= Int64(1) shl bitnr; testzahl:= bitmaske xor testzahl; end;
procedure schachbrett; const a_x=60; a_y=30; max_laenge=220; var feld_lx, feld_ly:Integer; z,x,y:byte;
procedure m(f:shortint); begin form1.Canvas.TextOut( (a_x+x*feld_lx)+(feld_lx div 2)-3, (a_y+y*feld_ly)+(feld_ly div 2)-5, inttostr(f)); end;
begin form1.Canvas.Rectangle(a_x-25,a_y-25,a_x+max_laenge+25,a_y+max_laenge+25); feld_lx:=max_laenge div qu_x; feld_ly:=max_laenge div qu_y; for z:=1 to 64 do begin y:=((z-1) div 8); x:=((z-1) mod 8);
if (x+y) mod 2=0 then form1.Canvas.Brush.Color:=rgb(180,180,180) else form1.Canvas.Brush.Color:=rgb(120,120,120); form1.Canvas.rectangle (a_x+x*feld_lx,a_y+y*feld_ly, a_x+((x+1)*feld_lx)+1,a_y+((y+1)*feld_ly)+1);
if bittest(wk,z-1) then m(1); end; end;
function Round ( const Number : Extended ) : Int64; begin
end;
procedure TForm1.Button1Click(Sender: TObject); begin bitset(wK,1); bitset(wk,40); bitset(wK,41); bitset(wK,39); bitclear(wk,40); bitclear(wK,39); label1.Caption:=inttostr(wk); schachbrett; end;
procedure TForm1.FormCreate(Sender: TObject); var y:byte; begin end;
procedure TForm1.FormPaint(Sender: TObject); begin schachbrett; end;
end. |