Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [Andorra 2D] Level , Schuss ... Probleme (https://www.delphipraxis.net/147136-%5Bandorra-2d%5D-level-schuss-probleme.html)

sabbert 2. Feb 2010 14:09


[Andorra 2D] Level , Schuss ... Probleme
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

Hab da ein paar Probleme, genauer gesagt Probleme bei den Ansätzen meines Projektes.

Ich habe vor aus Testzwecken so eine Art "Space Shooter" zu erstellen.

Klappt soweit auch ganz gut nur suche ich für ein paar Probleme sinvolle Lösungen.

1. Ich habe jetzt mein "Objekt" was schießen soll. Das soll ganz simpel sein einfach ein Sprite das sich in eine bestimmte Richtung geradeaus bewegt. Das habe ich auch schon geschafft nur die Sache wie baue ich eine Verzögerung der einzelnen Schüsse ein.
Nehmen wir an ich KSchiße mit einer beliebigen Taste. Nun solange ich die gedrückt halte wird die Schussfrequenz enorm hoch. Doch ich will das z.B. nur jede sekunde einmal geschossen wird. Dies könnte man ja mit einem Timer lösen, nun hatte ich schonmal versucht aber das war mit zu umständlich. Hatte dabei eine Boolean- Variable die nach einem Schuss auf false gesetzt wird und nach z.B. einer Sekunde auf True gesetzt wird. Aber dieser Timer ´war auf dem Formblatt. Gibt es einen anderen besseren Lösungsweg damit ich individuell viele verschiedene Schuss-Variationen erstellen kann?

2. Ich will ein Level erstellen in der Mein Objekt sich bewegt. Die Ansicht ist von der Seite. Ich hab so eine bestimmte Vorstellung wie dies aufgebaut werden soll.
Also es soll z.B. wie in Paint mit z.B. Grün und einem Pinsel das Level mit einem Editor, den ich baue, gemalt werden. Grün stellt dann ein Hinderniss dar, durch das ich nicht fliegen kann.
Jetzt dazu 2 Probleme:

- Wie schaffe ich es so ein Level zu erstellen?
Habe gedacht das ich Sprite sozusagen aufmale und dabei die Koordinaten speicher und diese dann beim Spielstart aufrufe und dort Sprites platziere. Hoffe irgendwie verständlich.
Also das ich z.B. auf ein Iamage klicke und dort ein Sprite erstellt wird und gleichzeitig die Koordinate gespeichert wird.
Würde ich hinbekommen :D
Wäre das denn sinvoll? Oder gibts besser Lösungsansätze?

- Zweites Problem wenn ich das erste bewältigt habe wie schaffe ich es wenn mein Schuss, also die Kugel, auf die Wand(Grün) trifft das dort dann ein Loch entsteht das genauso groß ist wie die Schusskugel?

Im Anhang ist ein Bild das mein Problem erläutern soll :D
Edit:
Das Objekt im Bild soll eine Schusskugel sein das gegen eine Wand gefeuert wird.
Loch der Wand soll ca .die größe der Kugel betragen

Das kann ruhig im Level später so simpel aussehen bei Verständnisfragen bitte nachfragen.

MFG

azury 2. Feb 2010 15:36

Re: [Andorra 2D] Level , Schuss ... Probleme
 
Okay da ich gerade selber mit Andorra arbeite kann ich dir vielleicht helfen.

Zu 1:
Du kannst einfach die Zeit speichern mit GetTickCount.
Und dann vor jeden schuss nochmal prüfen ob die Differenz mehr als 1000 ist, dann würde mal maximal 1 mal ca alle 1000 milisekunden bzw 1 sekunde schießen können.
Die Genauigkeit ist denke ich mal nicht zu gering für diesen Zweck.

Zu 2:
Das mit der Karte ist immer sone Sache, also nen Hintergrund kannste ganz toll eigentlich für deine Zwecke mit "TBackgroundSprite" machen.
Da schiebst du einfach ein Spacebild rein, und das ding wird angezeigt.
Für den Rest, also z.B. diese "Wand" kannste ja ein Object erstellen, welches nun coordinaten beinhaltet so wie breite und größe.
Wenn diese Wände nun Quadratisch sind, dann ist das eigentlich relativ einfach, wenn du z.B. durchschießst, prüfst du wo die Kugel durchgegangen ist, und wenns so ist, löschst du die eine Wand und erstellst 2 neue mit dem Abstand vom durchmesser der Kugel und schon haste ein "Loch".

Amsonsten musst du mal nach "Crashpoint" suchen von Andreas, bzw dem, der Andorra gemacht hat.
Das ist sone Art "Worms" spiel, oder besser "Liero Xtreme" dort gibt es genau sowas, was du suchst irgendwo in seinem Quellcode.

igel457 2. Feb 2010 18:33

Re: [Andorra 2D] Level , Schuss ... Probleme
 
Hallo,

wen du das Level mit einem Grafikbearbeitungsprogramm "malen" willst, so ist dies nicht ganz so trivial:

1. Du musst das große Levelbild in kleine Tiles zerteilen und diese einzeln Darstellen.
2. Für die Kollision generierst du um die festen Levelbestandteile "Boundingboxes" und prüfst zunächst mit diesen auf Kollision, dann auf Pixelebene
3. Verfolgst du diesen Ansatz, werden Löcher kein Problem sein

Tatsächlich habe ich das ganze mal in Crahspoint implementiert, ich distanziere mich aber ausdrücklich von diesem Code, der ist jetzt schon 4 Jahre alt ;-)

Für den Anfang wäre es sicherlich einfacher das Level aus festen, rechteckigen Bestandteilen zusammenzusetzen.

Andreas

sabbert 2. Feb 2010 21:56

Re: [Andorra 2D] Level , Schuss ... Probleme
 
Danke schonmal für die Antworten :)

Zu meinem zweiten Problem hört sich dein Idee igel457 recht interessant an ;-)
Zitat:

Zitat von igel457
Hallo,

wen du das Level mit einem Grafikbearbeitungsprogramm "malen" willst, so ist dies nicht ganz so trivial:

1. Du musst das große Levelbild in kleine Tiles zerteilen und diese einzeln Darstellen.
2. Für die Kollision generierst du um die festen Levelbestandteile "Boundingboxes" und prüfst zunächst mit diesen auf Kollision, dann auf Pixelebene
3. Verfolgst du diesen Ansatz, werden Löcher kein Problem sein
...

Kannst du das vielleicht näher erläutern? Hab mir schonmal das Programm Crashpoint angeschaut.

Genau sowas suche ich, doch bevor ich mich durch den Source Code "wühle", würde ich gerne den Lösungsansatz näher erläutert haben :D

Danke schonmal im voraus :)

mfg

mimi 7. Feb 2010 11:25

Re: [Andorra 2D] Level , Schuss ... Probleme
 
Wenn du jetzt eine Große Grafik hättest sagen wir mal 1600 mal 1600 Währe das für den Rechner kaum machbar.
D.H. du hast kleine Grafiken. So genannte Kacheln(engl. Tile). Die kannst du jetzt wie Fließen zusammen setzten. Da kommen zwar Paar zusammen, aber nur so viele wie das Fenster groß ist.

Wände, z.b. währen auch Tiles, die du einfach Platzieren kannst. Ich würde sie Abhängig von der Player Position machen. D.H. Du erstellst alle Tiles und sobald der Player am Rand ist, Scrollst du in die Entsprechende Richtung.

Andorra hat eine gute Möglichkeiten auf Kollisions zu Prüfen. Auch Pixel genau. Sollte das Level zu Groß werden, müsstest du wie Igel vorgeschlagen hat, erst eine ptInRect Prüfung machen und erst dann Pixel Genau prüfen. Das Spart Zeit.

Ich habe mal so ein Spiel (fast) Fertig gestellt. Mit Andorra. gescrollt werden kann noch nicht, aber dafür stehen verschiedene "Waffen" zu Verfügung die du auswählen kannst(mit den Tasten 0 bis 9), du kannst Punkte einsammeln, die Zufällig entstehen, wenn du ein Gegner Abschießt.

Das Ein-zigste Problem dabei ist: Die Grafiken sind nicht von mir. Ich meine ich hatte den Autoren um Erlaubnis gefragt, nur ist das schon eine Weile her... Seit dem verwende ich diese Grafiken *G*... Wenn du eigene Grafiken hast, könnte ich das Projekt ohne Grafiken hochladen... Die Grafiken werden Sowieso Dynamisch geladen.

Vasco da Gama 7. Feb 2010 12:31

Re: [Andorra 2D] Level , Schuss ... Probleme
 
Zitat:

Zitat von mimi
Das Ein-zigste Problem dabei ist: Die Grafiken sind nicht von mir. Ich meine ich hatte den Autoren um Erlaubnis gefragt, nur ist das schon eine Weile her... Seit dem verwende ich diese Grafiken *G*... Wenn du eigene Grafiken hast, könnte ich das Projekt ohne Grafiken hochladen... Die Grafiken werden Sowieso Dynamisch geladen.

Wenn du Grafiken brauchst, schau mal bei Reiner vorbei:

http://reinerstileset.4players.de/deutsch.html

Da gibt's viele gute Bitmaps unter 2D Grafiken und vielleicht (bzw. wahrscheinlich) auch welche, die euch bei euren Projekten helfen könnten :)

mfG und viel Glück und Spaß euch allen mit euren Projekten :thumb:

mimi 7. Feb 2010 12:33

Re: [Andorra 2D] Level , Schuss ... Probleme
 
Das Problem ist halt: Die Grafiken sind für Iso Spiele gedacht. Für mein Zweck nicht geeignet. Trotzdem Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz