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: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159:
| unit UnitAbschluss;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TFeldBesetzung = (sLeer, sSpieler1, sSpieler2); TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; btnNeu: TButton; Panel1: TPanel; Panel2: TPanel; Anzeigeflaeche: TPaintBox; Edit6: TEdit; Panel4: TPanel; pnlSpieler: TPanel; btnGewinnausgabe: TButton; btnEinstellungen: TButton; Edit4: TEdit; Edit5: TEdit; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure btnEinstellungenClick(Sender: TObject); procedure btnNeuClick(Sender: TObject);
private FGRafik: TBitmap; FLinks: Integer; FUnten: Integer; FSpielfeldBreite: Integer; FSpielfeldHoehe: Integer; FFelderBreite: Integer; FSpielfeld: array[0..6, 0..5] of TFeldBesetzung; FSpielerFarbe: array[TFeldbesetzung] of TColor; FSpielerBmp: array[TFeldBesetzung] of TBitmap; FSpielerName: array[TFeldBesetzung] of string;
procedure GitterZeichnen(breite, hoehe, feldbreite: Integer); procedure Darstellen; procedure GroessenEinstellungenAnpassen; procedure SymbolErstellen(breite: Integer; spieler: TFeldBesetzung); public end;
var Form1: TForm1; i, j: Integer; Spieler1, Spieler2: String;
implementation
uses UnitAbschlussEinstellungen;
{$R *.dfm} procedure TForm1.GitterZeichnen(breite, hoehe, feldbreite: Integer); var i: Integer; begin FGrafik.Canvas.Pen.Color := clBlack; for i := 0 to hoehe do begin FGrafik.Canvas.MoveTo(FLinks, FUnten - i* feldbreite); FGrafik.Canvas.LineTo(FLinks + breite * Feldbreite, FUnten - i * feldbreite); end; for i := 0 to breite do begin FGrafik.Canvas.MoveTo(FLinks + i*feldbreite, FUnten - hoehe * feldbreite); FGrafik.Canvas.LineTo(FLinks + i*feldbreite, FUnten); end;
end; procedure TForm1.Darstellen; begin FGrafik.Canvas.Pen.Color := clWhite; FGrafik.Canvas.Brush.Color := clWhite; FGrafik.Canvas.Rectangle(0,0,FGrafik.Width, FGrafik.Height); Anzeigeflaeche.Canvas.Draw(0, 0, FGrafik); Form1.GitterZeichnen(FSpielfeldBreite, FSpielfeldHoehe, FFelderBreite); end;
procedure TForm1.FormCreate(Sender: TObject); begin Randomize; FGrafik:= TBitmap.Create; FSpielfeldBreite := 7; FSpielfeldHoehe := 6; FFelderBreite := 25; FSpielerBmp[sSpieler1] := TBitmap.Create; FSpielerBmp[sSpieler2] := TBitmap.Create; FSpielerBmp[sLeer] := TBitmap.Create; FSpielerFarbe[sLeer] := clWhite; FSpielerFarbe[sSpieler1] := clGreen; FSpielerFarbe[sSpieler2] := clFuchsia; FSpielerName[sLeer] := 'Leer'; FSpielerName[sSpieler1] := 'Spieler1'; FSpielerName[sSpieler2] := 'Spieler2';
end;
procedure TForm1.FormDestroy(Sender: TObject); begin FGrafik.Free; FSpielerBmp[sSpieler1].Free; FSpielerBmp[sSpieler2].Free; FSpielerBmp[sLeer].Free; end;
procedure TForm1.GroessenEinstellungenAnpassen; begin FGrafik.Width := Anzeigeflaeche.Width; FGrafik.Height := Anzeigeflaeche.Height; FLinks := FGrafik.Width div 2 - FSpielfeldBreite div 2 * FFelderbreite; FUnten := FGrafik.Height div 2 + FSpielfeldHoehe div 2 * Ffelderbreite; SymbolErstellen(FFelderbreite-1, sSpieler1); SymbolErstellen(FFelderbreite-1, sSpieler2); SymbolErstellen(1, sLeer);
end;
procedure TForm1.SymbolErstellen(breite: Integer; spieler: TFeldBesetzung); begin FSPielerBmp[spieler].Width := breite; FSpielerBmp[Spieler].Height := breite; FSpielerBmp[spieler].Canvas.Pen.Color := clWhite; FSpielerBmp[spieler].Canvas.Brush.Color := clWhite; FSpielerBmp[spieler].Canvas.Rectangle(0, 0, breite, breite); FSpielerBmp[spieler].Canvas.Pen.Color := FSpielerFarbe[spieler]; FSpielerBmp[spieler].Canvas.Brush.Color := FSpielerFarbe[spieler]; FSpielerBmp[spieler].Canvas.Ellipse(0, 0, breite, breite); end;
procedure TForm1.btnEinstellungenClick(Sender: TObject); begin FormEinstellungen.ShowModal; end;
procedure TForm1.btnNeuClick(Sender: TObject); begin for i := 0 to FSpielfeldBreite - 1 do begin for j := 0 to FSpielfeldHoehe - 1 do FSpielfeld[i,j] := sLeer; end;
end;
end. |