Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
t10ottoo Senior JLI'ler

Alter: 40 Anmeldedatum: 15.04.2004 Beiträge: 210 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 29.07.2004, 15:43 Titel: Weltraumspiel - Dauerfeuer |
|
|
Hi,
ich bin grad dabei, ne Art SpaceInvader-Clone zu programmieren (jaja, wer hat das nicht schonmal gemacht *g*)
Nun hab ich aber ein Problem, also einzeln schießen kann ich schon, und wenn der Schuss außerhalb des Bildschirms ist, kann ich auch wieder neu schießen, aber wie kann ich das nun machen, dass ich immer schießen kann, also dass dann auch mal mehrere Schüsse auf einmal aufn Bildschirm sein können.
Ich hab mir überlegt, dasses ja irgendwie mitm Array klappen müsste, oder?
Aber ich bin mir sicher, dasses da auch noch ne andere Möglichkeit geben muss. Ich muss mir ja ziemlich viele x- und y- Koordinaten merken.
Also ich möchte keinen kompletten Code haben, nur ne kleine Erklärung/Erläuterung, wie man das machen könnte, wäre schon
Vielen Dank schonmal für eure Hilfe.
Thomas |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 29.07.2004, 15:50 Titel: |
|
|
Du könntest ne Liste machen und bei jedem Schuss ein neues Element hinzufügen und wenn einer der Schüsse aus der Reichweite ist hörst du auf neue Elemente zu kreieren und setzt den letzten Schuss wieder auf 0. |
|
Nach oben |
|
 |
t10ottoo Senior JLI'ler

Alter: 40 Anmeldedatum: 15.04.2004 Beiträge: 210 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 29.07.2004, 15:58 Titel: |
|
|
Beni5 hat Folgendes geschrieben: | Du könntest ne Liste machen und bei jedem Schuss ein neues Element hinzufügen und wenn einer der Schüsse aus der Reichweite ist hörst du auf neue Elemente zu kreieren und setzt den letzten Schuss wieder auf 0. |
Hmm...mit Listen kenn ich mich noch net sooo aus...
Also hier wäre vlt. nen kleiner Code-Ausschnitt und nen bissl Erklärung net schlecht
Gruß
Thomas |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 29.07.2004, 16:01 Titel: |
|
|
ok: Welches buch hast du? In der neuen Auflage ist alles haarklein erklärt (in Kapitel über STL)
Wenn nicht gibts ne zweite einfache Lösung: Du nimmst sagen wir mal einfach 20 Schüsse. Machst also ein Array. Im Array muss die Position und die Existens gespeichert sein. Am Anfang existiert kein Schuss, da ist alles false.
Wenn du einen neuen Schuss erstellst, suchst du nach dem ersten Feld wo kein Schuss existiert und erstellst dort eien.
Achja: Wie kommst dudarauf das im Grafik Forum zu psoten??? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
t10ottoo Senior JLI'ler

Alter: 40 Anmeldedatum: 15.04.2004 Beiträge: 210 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 29.07.2004, 16:26 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | ok: Welches buch hast du? In der neuen Auflage ist alles haarklein erklärt (in Kapitel über STL)
Wenn nicht gibts ne zweite einfache Lösung: Du nimmst sagen wir mal einfach 20 Schüsse. Machst also ein Array. Im Array muss die Position und die Existens gespeichert sein. Am Anfang existiert kein Schuss, da ist alles false.
Wenn du einen neuen Schuss erstellst, suchst du nach dem ersten Feld wo kein Schuss existiert und erstellst dort eien.
|
Hmm..also das Buch hab ich nicht, aber würde mir eh nicht helfen, da ich das mit SDL programmiere. Ok, das Prinzip ist vlt. dasselbe
Also nur mitm Array geht das ja nicht, oder? Dann bräuchte ich ja insgesamt drei Array: x-Position, y-Position, Existenz.
Und ausgeben tu ich dann alle mit ner Schleife?
Das mit dem Schuss hinzufügen seh ich ein, also solange durchsuchen, bis Existenz false ist und da einen neuen Schuss erstellen. Aber wie mache ich das dann, wenn ein Schuss den Bildschirm verlassen hat? Dann musser ja evtl mitten im Array einen Schuss rausnehmen und den darf er ja dann auch nicht mehr anzeigen....hmm...bzw. alle dahinter müssten dann um eins nach vorne aufgerückt werden...oje, das klingt komplieziert *g*
[qoute]
Achja: Wie kommst dudarauf das im Grafik Forum zu psoten???[/quote]
Das frag ich mich auch *g* Nee, also ich wusste echt net, wo rein damit...naja, und so indirekt hat es ja mit Grafik zu tun
Gruß
Thomas |
|
Nach oben |
|
 |
fowly JLI'ler

Anmeldedatum: 25.01.2004 Beiträge: 196 Wohnort: Detmold - NRW Medaillen: Keine
|
Verfasst am: 29.07.2004, 16:32 Titel: |
|
|
also, ich denke mal mit arrays ist das nicht so gut, denn die kannst du nur schwer dynamisch machen. am einfachsten und wahrscheinlich auch schnellsten ist wohl die stl liste. am besten du setzt dich damit mal auseinander _________________ <-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->
Das Spiel zu unserer Schule:
http://www.grabbe-game.de |
|
Nach oben |
|
 |
t10ottoo Senior JLI'ler

Alter: 40 Anmeldedatum: 15.04.2004 Beiträge: 210 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 29.07.2004, 16:43 Titel: |
|
|
Nagut, hat vlt jmd. gute Seiten über stl-Listen? Denn damit hatte ich noch nie was zu tun. |
|
Nach oben |
|
 |
HotAcid Super JLI'ler

Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 29.07.2004, 17:05 Titel: |
|
|
http://www.sgi.com/tech/stl/
musst dich da ein wenig durchklicken, ist dafür aber auch ganz gut erklärt  _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
 |
t10ottoo Senior JLI'ler

Alter: 40 Anmeldedatum: 15.04.2004 Beiträge: 210 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 29.07.2004, 17:31 Titel: |
|
|
Oje, so viel? Und dann auch noch auf englisch? Das tu ich mir nicht *g*
Dann versuch ich das doch lieber mit arrays...
Trotzdem Danke
Thomas |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 29.07.2004, 17:35 Titel: |
|
|
Ne ne, glaub mir mit Arrays wirds viel schwerer, unsauberer und Fehler anfälliger...
STL-Liste ist wirklich simpel, googel doch einfach mal nach STL und List, ich hab grade nich soviel Zeit, sonst würde ichs auch mal machen...
Und für die einzelnen Elemente würde ich mir eine Struktur anlegen und dann Objekte der Struktur speichern, egal ob du Liste oder Array nimmst... |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 29.07.2004, 18:09 Titel: |
|
|
Zitat: |
Ne ne, glaub mir mit Arrays wirds viel schwerer, unsauberer und Fehler anfälliger...
|
Warum das denn?
Wenn du dich noch nicht in STL einarbeiten willst(ist viel Arbeit wenn man es richtig machen will) könntest du schon Arrays nehmen. Leg dir ein Array an, dass groß genug ist und in jedem ein 'in use' Flag. Wenn der Schuss aus dem Bildschirm raus is oder sonst wie verschwindet setzt du dieses Flag einfach auf false. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 29.07.2004, 18:14 Titel: |
|
|
für den anfang sollte ein array schon reichen. wenn du, sagen wir mal, max. 40 schuss zugleich darstellen willst. ich würd mir noch ein struct machen, das alle informationen von einem schuss enthält.
also so irgendwie:
Code: |
struct Shot{
int x;
int y;
bool bOnScreen;
};
Shots myShots[40]; |
bOnScreen wird auf true gesetzt, wenn der schuss abgefeuert wird, solange bis er der bildschirm verläßt.
wenn du jetzt schießt:
Code: |
// einen schuss raussuchen, der nicht am bildschirm ist
for (int i=0; i<40; i++)
{
if (myShorts[i].bOnScreen == false)
{
// positionen, etc setzen
myShots[i].bOnScreen = true;
}
} |
und dann mußt du noch checken, ob ein schuss den bildschirm verläßt:
Code: |
for (int i=0; i<40; i++)
{
if (myShorts[i].bOnScreen == true)
{
if (myShots[i].x > SCR_WIDTH)
myShots[i].bOnScreen == false;
}
} |
es gibt da hunderte varianten, das zu realisieren, am besten natürlich mit einer list, aber das sollte mal recht einfach zu verstehen sein. |
|
Nach oben |
|
 |
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 29.07.2004, 18:15 Titel: |
|
|
Hazel hat Folgendes geschrieben: | Zitat: |
Ne ne, glaub mir mit Arrays wirds viel schwerer, unsauberer und Fehler anfälliger...
|
Warum das denn?
Wenn du dich noch nicht in STL einarbeiten willst(ist viel Arbeit wenn man es richtig machen will) könntest du schon Arrays nehmen. Leg dir ein Array an, dass groß genug ist und in jedem ein 'in use' Flag. Wenn der Schuss aus dem Bildschirm raus is oder sonst wie verschwindet setzt du dieses Flag einfach auf false. |  |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 29.07.2004, 18:21 Titel: |
|
|
Hazel hat Folgendes geschrieben: | Zitat: |
Ne ne, glaub mir mit Arrays wirds viel schwerer, unsauberer und Fehler anfälliger...
|
Warum das denn? |
Weil er z.B. vorher nicht weiß wieviele Schüsse abgegeben werden, d.h., dass Array wird wahrscheinlich immer zu groß, bzw. zu klein sein... -> unsauber programmiert
Wenn der Spieler 10x feuert, die ersten Schüsse das Spielfeld verlassen, müssen diese im Array auf "false" gesetzt werden, feuert der Spieler jetzt wieder, während von der letzten Salve noch Schüsse unterwegs sind, müssten theoretisch wieder die ersten Elemente des Arrays auf "true" gesetzt werden, was passiert aber z.B. wenn mehr Elemente benötigt werden als bereits wieder freigegeben sind? Das klingt jetzt schon kompliziert... -> Fehler anfälliger
Alles in allem wird die Sacher imho dadurch schon um einiges komplizierter und schwieriger...
Außerdem wäre das meiner Meinung nach eine gute Möglichkeit für ihn, damit zu beginnen sich in die STL einzuarbeiten...
Zitat: | Wenn du dich noch nicht in STL einarbeiten willst(ist viel Arbeit wenn man es richtig machen will) |
Stimmt, wenn man z.B. die ganze Template-Geschichte etc. berücksichtigt, aber das worums hier geht, die STL Liste, ist imho recht schnell gemacht und wie gesagt ein guter Einstieg in die STL. |
|
Nach oben |
|
 |
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 29.07.2004, 18:33 Titel: |
|
|
ich finds nicht fehleranfälliger. grade bei dynamischen sachen kommt es durchs ständige löschen und reindizieren zu einer gewissen anfälligkeit.
man könnte sich ja z.B. auch ausrechnen, wieviele schuss maximal dargestellt werden können: bildbreite(800 px) / ein schuss(10 px) = 80 schuss passen auf den bildschirm. es reicht ein array mit 80 elementen, dann braucht man nur noch einen timer, und es paßt.
ich bin auch kein sonderlicher freund von statischen arrays, aber ich meine, man sollte ihm nicht einreden er braucht unbedingt die stl, wenn eine einfache und schnelle lösung mit arrays so nahe liegt und für seine zwecke wahrscheinlich ausreicht. |
|
Nach oben |
|
 |
|