Hallo,
ich möchte ein Spiel entwerfen, dass gewisse Ähnlichkeiten mit Bomberman besitzt. Jedoch komme ich an einer entscheidenden Stelle nicht weiter.
Mit array habe ich eine Spielwelt definiert und lasse einen Punkt mittels canvas zeichen (momentan mein Bomberman), den ich innerhalb des Spielfeldes bewegen kann. Jedoch muss ich den Hintergrund zusätzlich mit canvas überzeichnen, da die Fläche, wo sich zuvor der
Punkt (also Bomberman) befunden hat, nicht mehr die Hintergrundfarbe annimmt. Er hinterlässt sozusagen seine Spuren…
Self.Canvas.Pen.Color := clwhite
Self.Canvas.Brush.Color := clwhite;
Self.Canvas.Rectangle( 0, 0, ClientWidth, ClientHeight );
Mit diesem Befehl wird jedoch meine komplette Spielwelt bzw. die Mauern und Hindernisse mit der Hintergrundfarbe überzeichnet und nicht mehr angezeigt. Ich suche seit einiger Zeit vergebens nach einer Lösung und hoffe, dass ihr mir helfen könnt.
Das gezeichnete von Canvas muss einfach Transparent sein, damit die Spielwelt samt ihrer Hindernisse erhalten bleibt.
mfG
karlheinz4
Canvas
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Canvas
Wenn du deine Spielfigur bewegst, müsstest du den Hintergrund der alten Position neu mit dem Hintergrund bemalen. Dazu musst du natürlich ausrechnen, wo das auf deinem Canvas ist.karlheinz4 hat geschrieben:Mit diesem Befehl wird jedoch meine komplette Spielwelt bzw. die Mauern und Hindernisse mit der Hintergrundfarbe überzeichnet und nicht mehr angezeigt. Ich suche seit einiger Zeit vergebens nach einer Lösung und hoffe, dass ihr mir helfen könnt.
Das gezeichnete von Canvas muss einfach Transparent sein, damit die Spielwelt samt ihrer Hindernisse erhalten bleibt.
Eine Alternative wäre, deine Spielfigur auf einen zweiten Canvas zu zeichnen, der vor dem Hintergrund-Canvas positioniert wurde. Dann musst du nur diesen bewegen; Jedoch wird hier die Interaktion zwischen Spielfigur und Hintergrund ein wenig schwieriger.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 10
- Registriert: So 6. Mai 2012, 15:23
Re: Canvas
Danke erstmal für deine Antwort. So etwas in der Richtung klingt nicht schlecht. Nur wie gehe ich das ganze an?Socke hat geschrieben: Wenn du deine Spielfigur bewegst, müsstest du den Hintergrund der alten Position neu mit dem Hintergrund bemalen. Dazu musst du natürlich ausrechnen, wo das auf deinem Canvas ist.

Vllt ein paar Details:
Meine Spielwelt:
Code: Alles auswählen
x-Koordinaten: 0-54; y-Koordinaten: 0-40
Code: Alles auswählen
begin
rCanvas.Pen.Color := clblack; //Zeichnen von Bomberman
rCanvas.Brush.Color := clblack; //Zeichnen von Bomberman
for Index := 0 to rKoerperTeile do
begin
StartX := rKoerper [Index].X * 18; // Größe von Bomberman mit Angaben der x,y-Koordinate
EndeX := rKoerper [Index].X * 18 + 18; //"
StartY := rKoerper [Index].Y * 18; //"
EndeY := rKoerper [Index].Y * 18 + 18; //"
rCanvas.Ellipse( StartX, StartY, EndeX, EndeY); //kreisförmiger Bombermankörper
end;
Zuletzt geändert von Lori am Di 5. Mär 2013, 18:20, insgesamt 1-mal geändert.
Grund: Bitte den Highlighter nutzen.
Grund: Bitte den Highlighter nutzen.
-
- Beiträge: 10
- Registriert: So 6. Mai 2012, 15:23
Re: Canvas
Kann mir keiner weiter helfen?




Re: Canvas
Wie gesagt, du muss bei jedem Schritt den Hintergrund neu malen.
Wenn es nur eine Farbe ist, mit Canvas.FillRect oder bei einem Bild mit Canvas.Draw
Schau dir vllt. auch diese Seite mal an http://wiki.freepascal.org/Developing_with_Graphics/de
Wenn es nur eine Farbe ist, mit Canvas.FillRect oder bei einem Bild mit Canvas.Draw
Schau dir vllt. auch diese Seite mal an http://wiki.freepascal.org/Developing_with_Graphics/de