![]() |
2D Game => Wie kann ich Wände erstellen?
Momentan sitze ich mit meinen Freunden an einem Delphi/Schul-Projekt...
Es sieht so aus das es ein 2d game werden soll, soweit so gut, wir arbeiten mit images, haben es auch hinbekommen das wir eine Spielfigur einfügen und sich diese auch bewegen kann... leider auch durch "Wände" (Images). Jetzt die frage^^: Wie bekommen wir es hin das man mit der Spielfigur (Image^^) nich durch ein anderes Image laufen kann? Vielen dank im vorraus... |
Re: 2D Game => Wie kann ich Wände erstellen?
array nehmen und dort eintragen, wo Wand ist und wo frei ist und danache testen!
|
Re: 2D Game => Wie kann ich Wände erstellen?
Ich würde das nicht mit Images machen. du solltest dir eine map aufbauen, die so aussieht:
Delphi-Quellcode:
In accessibility kommt, falls ein pixel begehbar ist, ein true rein, wenn nicht, ein false. floor ist das, was angezeigt wird.
type
TMap = record accessibility: array of array of Boolean; floor: TBitmap; end; Deine Spielfigur solltest du dann in eine paintbox auf den floor zeichnen. Aber wahrscheinlcih haben wir hier wieder die Art lehrer, die sagt, "nein, wir machen das jetzt mit Images, und wenn es Metrhoden gibt, die zehnmal sainnvoller sind"... Sollte das mit den Images aber euer EInfall gewesen sein, gut, hätt ich wohl auch zuerst so gemacht, aber so wirds besser ;) Immer wenn du deine Spielfigur bewegst, prüfst du, ob die damit auf ein nicht begehbares tile bzw. pixel kommt. so:
Delphi-Quellcode:
Das ist jetzt grober Pseudocode bar aller Optimierungen (ich habe ja vorher schon einmal von tiles gesprochen; wenn du deine map in tiles aufteilst, die jeweils so groß sind wie deine spielfigur, musst du nur prüfen, ob sich deine spielfigur auf ein verbotenes tile bewegen will. das ist sehr einfach abzuprüfen.)
for x,y in Spielfigur.pixelsWantedToOccupy do // alle pixel prüfen, auf die die spielfigur gehen will
if not map.accessibility[x,y] then // wenn eines der pixel nicht begehbar ist.. Spielfigur.DenyMove; // ... wird die Bewegung verhindert. |
Re: 2D Game => Wie kann ich Wände erstellen?
Naja wäre wohl ne gute idee mit array, habe nur..
1. KP wie das gehen soll... gelesen habe ich auch schon darüber hier in DP. 2. Unser hintergund soll ein image sein.. sowie auch die spielfiguren.. naja nun mus sich es hinbekommen egal wie, dass das Image nich über bestimmte linien, pixel gehen kann... THX |
Re: 2D Game => Wie kann ich Wände erstellen?
solange die Linien nur waagerecht und senkrect sind, sollte es doch kein Problem sein, dies auszutesten, oder :wink:
|
Re: 2D Game => Wie kann ich Wände erstellen?
Ich bin euch sehr dankbar für eure hilfe, allerdings ist es so das ich ein totaler newbie in solchen dingen bin xD, und mir nun versuche dieses Wissen anzueignen... vllt ist das projekt für den anfang auch einfach zu hoch gewesen ;-)..
vllt könnt ihr mir ja noch mal genauer erläutern wi eich was einfügen könnte, thx. |
Re: 2D Game => Wie kann ich Wände erstellen?
Dir hat man doch schon eine komplette Lösung gegeben. 2D mit vier Richtungen ist doch der einfachste Fall. Du hast die Position des Spielers und Du hast ein Signal in welche Richtung er gehen will. Will dieser nach Links gehen, prüfst Du, ob das entsprechende Feld begehbar ist oder nicht. Dies kann halt entweder ein Boolean sein oder auch ein Integer (z.B. wenn gewisse Einheiten einige Felder nicht überqueren dürfen). Wird dieses Feld als begehbar gekennzeichnet, wird dies die neue Position des Spielers. Ansonsten wird der Tastendruck verworfen und nicht verarbeitet... oder der Rechner piept nervig oder sowas.
Pseudo
Delphi-Quellcode:
a[0,0] := true; // hinderniss
px := 1; py := 0; if leftKey then begin if not a[px-1,py] then dec(px); end; //ergo: dec(px) wird nicht ausgeführt [...] |
Re: 2D Game => Wie kann ich Wände erstellen?
ok , vielen dank ich werde eure vorschläge nun mal in ruhe studieren und anwenden^^
|
Re: 2D Game => Wie kann ich Wände erstellen?
ich würde eine TPaintbox nehmen und alles in einem Array verwalten....
informiere dich mal über "dynamische array, canvas". |
Re: 2D Game => Wie kann ich Wände erstellen?
Vielen dank, aber nun habe ich es so gelöst das ich einfach jedes Image einmal abfrage ob es eine der seiten berührt von einem anderen image (einer wand), und das ganze dann halt in eine schleife... wenn das game fertig ist werde ich es sofern es möglich ist auch mal posten^^ heute habe ich noch ne menüleiste, titelmusik und kleinere spielerreien hinzugefügt ;-P...
MFG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 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