unit Spielfeld;
interface
uses Unit2, Schiffe, Felder, Spielregel;
type
TSpielfeld =
class(TPanel)
public
constructor Einrichten(aMainFrame : TForm; aSpielregel : TSpielregel);
procedure NewSchiff(aSchiff : TSchiff);
procedure AutoSchiffCreate;
procedure Show;
function Angriff(ax_cor, ay_cor : word) : integer;
function IsFeldInUse(aFeld : TFeld) : TSchiff;
procedure OnFeldMouseDown(Sender: Tobject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure OnFeldMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure OnFeldEndDrag(Sender, Target: TObject; X, Y: Integer);
procedure OnFeldDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure OnFeldDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState;
var Accept: Boolean);
private
Feld:
array of array of TFeld;
Schiff :
array of TSchiff;
Schiff_neu : TSchiff;
Schiff_anz : word;
Regel : TSpielregel;
end;
implementation
constructor TSpielfeld.Einrichten(aMainFrame : TForm; aSpielregel : TSpielregel);
var a,b : integer;
begin
inherited Create(Form2);
Parent := Form2;
Regel := aSpielregel;
Regel.Show(Form2.StringGrid1);
//Spiefeld-Aussehen
Left := 50;
Top := 50;
Color := clwhite;
BevelOuter := bvnone;
BevelInner := bvnone;
Width := Regel.Feldgroesse * Regel.felder_x;
Height := Regel.Feldgroesse * Regel.Felder_y;
// Aussehen Form2
Form2.StringGrid1.Left := Self.Left + Self.Width + 20;
Form2.Memo1.Width := Self.Left + Self.Width - Form2.Memo1.Left;
Form2.edit5.Width := Self.Left + Self.Width - Form2.Edit5.Left;
Form2.Memo1.Top := Self.top + Self.height + 20;
Form2.Edit5.Top := Form2.Memo1.Top + Form2.Memo1.Height + 5;
// ClientHeight/Width gibt die tatsächliche Nutzfläche eines Formulars an!
Form2.ClientHeight := Form2.Edit5.Top + Form2.Edit5.Height;
Form2.ClientWidth := 2 * Self.Left + Self.Width + Form2.StringGrid1.Width;
SetLength(Feld,Regel.felder_x+1,Regel.felder_x+1);
for a := 1
to Regel.felder_x
do
for b := 1
to Regel.felder_y
do
begin
Feld[a,b] := TFeld.Erstellen(Self, Regel.Feldgroesse, a,b);
Feld[a,b].OnMouseDown := OnFeldMouseDown;
Feld[a,b].OnMouseMove := OnFeldMouseMove;
Feld[a,b].OnDragOver := OnFeldDragOver;
Feld[a,b].OnDragDrop := OnFeldDragDrop;
Feld[a,b].OnEndDrag := OnFeldEndDrag;
end;
end;