![]() |
RPG Spiel - Flackern bei mehreren Grafiken
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
ich muss/will ein kleines Projekt für die Schule programmieren. Ich hab auch schon eine Idee und zwar ein kleiner RPG Spiel. Allerdings hab ich jetzt das Problem das wenn sich mein Character bewegt und ein Hintergrund (mehrer Bilder zb Wiese/Bäume/Blumen/etc) dass das ganze ziemlich anfägt zu flackern (lässt sich auch durch DubbleBuffered nicht beheben) Ich hab jetzt erst seit einem 3/4 Jahr Informatik und ich persönlich weiß leider nicht wie ich das ändern könnte, weshalb ich jetzt hier in der DP einen neuen Thread aufgemacht habe. Das Programm wie weit ich bis jetzt bin hab ich unten verlinkt (Nur die Gehbewegung und so keine Hintergründe wie Wiese etc) ![]() Ichg hoffe das ihr mir vielleicht helfen könnt :D Gruß Lukas |
AW: RPG Spiel - Flackern bei mehreren Grafiken
Wenn du jedesmal ein Bild neu von der Festplatte lädst, dann braucht das eben Zeit.
Speichere deine 16 Bitmaps doch in einer Imagelist. Achte aber darauf, dass du alle Bildchen gleich gross machst (32 * 48 Pixel). Zur Zeit sind manche aber 31 * 48 oder 33 * 48. Vor dem Füllen der Imagelist (per Doppelklick)
Delphi-Quellcode:
auf 32 und
Width
Delphi-Quellcode:
auf 48 einstellen.
Height
Später kannst du so ein Bild aus der Imageliste zeichnen:
Delphi-Quellcode:
Du hast noch weitere Fehler in deinem Code, aber man kann nicht alles auf einmal ändern.
procedure TForm1.ZeichneSpieler(index:Integer { 0..15});
var bmp : TBitmap; begin // Bild (Zählung beginnt mit 0) aus Imageliste holen // und auf Image kopieren if ImageList1.GetBitmap(index, bmp) then Image1.Picture := bmp; end; end; |
AW: RPG Spiel - Flackern bei mehreren Grafiken
ok danke schon mal für den Tipp mit der Image list (wusste zwar das es so was gibt aber net das man sie so verwendet :D )
Zu den anderen fehler wenn ich das mal erfolgreich integriert habe Gruß Lukas |
AW: RPG Spiel - Flackern bei mehreren Grafiken
So ok ich hab das ganze jetzt mit der Imagelist gemacht wie du es gesagt hast (jetzt flackert es auch nicht mehr , danke :D )
Du hast aber auch gesagt im meinem Code seien noch ein paar Fehler. Könntest du mir sagen was? Danke im Voraus Mfg Lukas |
AW: RPG Spiel - Flackern bei mehreren Grafiken
Du bist ja ganz schön fix.
Also das Problem ist die
Delphi-Quellcode:
.
procedure pause
Innerhalb dieser Procedure wird
Delphi-Quellcode:
aufgerufen.
Application.ProcessMessages
Wenn der Spieler Pfeil-nach-oben drückt, wird
Delphi-Quellcode:
aufgerufen.
PlayerMoveUp
Dann wird eine Animation mit 5 Zuständen gestartet mit dazwischen 4 * pause. Während dieser Zeit könnte der Spieler wieder eine andere Taste drücken. Wie ich jetzt gesehen habe, verriegelst du weitere Richtungs-Tasten mit dem Boolean-Flag
Delphi-Quellcode:
.
Move
So wie's jetzt ist, ist es etwas unschön aber ich würd's jetzt nicht mehr als Fehler betrachten. Damit kann der Spieler aber nicht auf halben Wege umdrehen. Es kommt natürlich auf das Spiel an, ob man das überhaupt zulassen möchte. Würdest du dir die Richtung und die Nummer der Animationssequenz merken, dann könntest du statt der
Delphi-Quellcode:
auch einen Timer verwenden.
procedure pause
Im Timer-Event
Delphi-Quellcode:
könnest du die Animationssequenznr hochzählen und jeweils das Spielerbild anpassen.
OnTimer
Würde der Spieler zurück wollen, könntest du die Animation umkehren. Das ist natürlich etwas schwieriger als die Lösung, die du z.Zt. hast. Ansonsten solltest du den Block mit Variablen:
Delphi-Quellcode:
in die Klasse TForm1 unter
var RunUp,RunLeft,RunRight,RunDown:boolean;
Move:boolean; Speed:integer;
Delphi-Quellcode:
verschieben. Schlüsselwort
private
Delphi-Quellcode:
entfällt dann.
var
|
Dieses Thema wurde am "11. May 2013, 20:32 Uhr" von "TBx" aus dem Forum "Software-Projekte der Mitglieder" in das Forum "Programmieren allgemein" verschoben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz