Labyrinth (Spiel) programieren
-
- Beiträge: 5
- Registriert: Mo 6. Aug 2012, 17:04
Re: Labyrinth (Spiel) programieren
Danke für den Tipp mit "canvas". Dazu eine kleine Frage: Ich finde den canvas. Befehl für das Erkennen der Pixel nicht. Und wie gibt man dann die Coordinaten an, wo der Computer überprüfen soll? Und wie werden die Pixelfarben dann angegeben? Mit z. B. #0000 ?
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Labyrinth (Spiel) programieren
Pixel wird dir nicht weiter helfen. Canvas hält eine reihe von Methoden bereit um Figuren zu Zeichnen.
Die Hintergrund oder Vordergrund Farbe kannst du wie folgt angaben:
Brush.Color > Hintergrund Farbe z.b. auf clBlack stellen
Pen.Color > Rahmen Farbe z.b. auf clRed stellen.
Nun kannst du einer dieser Methoden nutzen, um den Effekt zu sehen.
Direkt mit Pixel Arbeiten, macht wenig Sinn. Die Eigenschaft heißt:
Pixels[x,y]:=clRed;
Damit wird auf den Position x und y die Farbe Rot gesetzt. Ich hoffe ich habe mich bei der Eigenschaft Pixels nicht verschrieben.
Schau dir mal die Methoden von Canvas an: Einfach anklicken mit der Maus und dann Rechte Maustaste und der erste Eintrag im Popup Menü, welches dann erscheint.
Die Hintergrund oder Vordergrund Farbe kannst du wie folgt angaben:
Brush.Color > Hintergrund Farbe z.b. auf clBlack stellen
Pen.Color > Rahmen Farbe z.b. auf clRed stellen.
Nun kannst du einer dieser Methoden nutzen, um den Effekt zu sehen.
Direkt mit Pixel Arbeiten, macht wenig Sinn. Die Eigenschaft heißt:
Pixels[x,y]:=clRed;
Damit wird auf den Position x und y die Farbe Rot gesetzt. Ich hoffe ich habe mich bei der Eigenschaft Pixels nicht verschrieben.
Schau dir mal die Methoden von Canvas an: Einfach anklicken mit der Maus und dann Rechte Maustaste und der erste Eintrag im Popup Menü, welches dann erscheint.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 323
- Registriert: Di 12. Apr 2011, 13:21
- OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
- CPU-Target: 1core 1,8GHz 32Bit
- Wohnort: Fürth
- Kontaktdaten:
Re: Labyrinth (Spiel) programieren
jerry_cotton hat geschrieben:Danke für den Tipp mit "canvas". Dazu eine kleine Frage: Ich finde den canvas. Befehl für das Erkennen der Pixel nicht. Und wie gibt man dann die Coordinaten an, wo der Computer überprüfen soll? Und wie werden die Pixelfarben dann angegeben? Mit z. B. #0000 ?
Pixels ist eine Eigenschaft von Canvas. Image.Picture.Bitmap.Canvas.Pixels[x, y] := clRed; Wie Pluto geschrieben hat, würde ich nicht mit Pixels arbeiten. Ich würde deklarieren:
Code: Alles auswählen
const
xDim = 50;
yDim = 50;
type
TSpielZelle = (zUnbekannt, zWand, zLeer, zMaennchen);
TLabyrinthForm = class
Image : TImage;
Maennchen : TImage;
...
FormCreate(Sender : TObject);
private
Spielfeld : Array[0..xDim - 1, 0 .. yDim - 1] of TSpielzelle;
...
procedure Zeichnen;
end;
...
procedure TLabyrinthForm.FormCreate;
begin
Image.Picture.Bitmap.Width := Image.Width;
Image.Picture.Bitmap.Height := Image.Height;
end;
procedure TLabyrinthForm.Zeichnen;
...
begin
for x := 0 to xDim do
for y := 0 to yDim do
begin
case Spielfeld[x, y] of
zWand:
begin
Image.Picture.Bitmap.Canvas.Brush.Color := clBlack;
Image.Picture.Bitmap.Canvas.Pen.Color := clRed;
end;
zLeer:
begin
Image.Picture.Bitmap.Canvas.Brush.Color := clWhite;
Image.Picture.Bitmap.Canvas.Pen.Color := clWhite;
end;
end;
case Spielfeld[x, y] of
zWand,
zLeer:
Image.Picture.Bitmap.Canvas.FillRect(
Rect((x * Image.Picture.Bitmap.Width) div xDim,
(y * Image.Picture.Bitmap.Height) div yDim,
((x + 1) * Image.Picture.Bitmap.Width) div xDim,
((y + 1) * Image.Picture.Bitmap.Height) div yDim
));
zMaennchen:
Image.Picture.Bitmap.Canvas.StretchDraw(
Rect((x * Image.Picture.Bitmap.Width) div xDim,
(y * Image.Picture.Bitmap.Height) div yDim,
((x + 1) * Image.Picture.Bitmap.Width) div xDim,
((y + 1) * Image.Picture.Bitmap.Height) div yDim
), Maennchen);
end;
end;
TLabyrinthForm.Maennchen ist dabei ein Image, das Du im Formulareditor mit einem Männchen Bitmap geladen hast und das Du unsichtbar gemacht hast. Achtung: Die y Koordinate des Image zeigt nach unten und nicht nach oben. Zur Not musst Du umrechnen.
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Labyrinth (Spiel) programieren
So, ähnlich mache ich es auch in meinem Beispiel-Code, den ich hier gezeigt habe, ist nur etwas "mehr" geworden.
MFG
Michael Springwald
Michael Springwald