Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.465 Beiträge
 
Delphi 12 Athens
 
#10

AW: Snake - meine Kreation

  Alt 2. Dez 2011, 15:43
Dem Ereignis "CheckBox_Futterbild.OnClick" ist derzeit die Methode "FormCreate()" zugewiesen.
Es sollte aber besser die Methode "FutterBild()" sein.

Ich hab mich bemüht nicht zu viel zu ändern:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  {Apfel erzeugen, unsichtbar}
  Apple:=TImage.Create(Form1);
  Apple.Visible := False;
  Application.HintHidePause:=4000;

{...}

end;

procedure TForm1.FutterBild(Sender: TObject);
begin
  {Checkbox wurde an oder ausgeschalten}
  if CheckBox_Futterbild.Checked then
  begin
    if OpenDialog.Execute then
    begin
      Apple.Picture.LoadFromFile(OpenDialog.FileName);
      if Assigned(Apple.Picture.Graphic) then
        Apple.Picture.Graphic.Transparent := True;
    end;
    CheckBox_Futterbild.Checked := Assigned(Apple.Picture.Graphic);
  end;
  {neu Zeichnen}
  paint_map;
end;

{Das Zeichnen auf mehrere Methoden verteilt}
function TForm1.GetItemColor(AItem: Integer): TColor;
begin
  case AItem of
    -2: Result := ColorDialog_Wand.Color;
    -1: Result := ColorDialog_Futter.Color;
     0: Result := ColorDialog_HG.Color;
  else Result := ColorDialog_Schlange.Color;
  end;
end;

procedure TForm1.paint_background(ARect: TRect);
begin
  {Hintergrund zeichnen}
  Spielfeld.Canvas.Brush.Color := ColorDialog_HG.Color;
  Spielfeld.Canvas.FillRect(ARect);
end;

procedure TForm1.paint_field(AItem: Integer; ARect: TRect);
begin
  {Bild des Futters zeichnen}
  if CheckBox_Futterbild.Checked and (AItem = -1) then
  begin
    paint_background(ARect);
    Spielfeld.Canvas.StretchDraw(ARect, Apple.Picture.Graphic);
  end
  else if RadioButton_Kreise.Checked then
  begin
    paint_background(ARect);
    if AItem <> 0 then
    begin
      Spielfeld.Canvas.Brush.Color := GetItemColor(AItem);
      Spielfeld.Canvas.Ellipse(ARect);
    end;
  end
  else
  begin
    Spielfeld.Canvas.Brush.Color := GetItemColor(AItem);
    Spielfeld.Canvas.FillRect(ARect);
  end;
end;

procedure TForm1.paint_map;
var
  x, y: Integer;
begin
  for y := 0 to breite do
    for x := 0 to hoehe do
      paint_field(map[x, y], Rect(x*raster, y*raster, (x+1)*raster, (y+1)*raster));
end;
  Mit Zitat antworten Zitat