JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Weltraumspiel - Dauerfeuer
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
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

BeitragVerfasst am: 29.07.2004, 15:43    Titel: Weltraumspiel - Dauerfeuer Antworten mit Zitat

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 Smile

Vielen Dank schonmal für eure Hilfe.
Thomas
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beni5
Super JLI'ler


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 15:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
t10ottoo
Senior JLI'ler


Alter: 40
Anmeldedatum: 15.04.2004
Beiträge: 210
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 15:58    Titel: Antworten mit Zitat

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 Wink

Gruß
Thomas
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 16:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
t10ottoo
Senior JLI'ler


Alter: 40
Anmeldedatum: 15.04.2004
Beiträge: 210
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 16:26    Titel: Antworten mit Zitat

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 Wink
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 Wink

Gruß
Thomas
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
fowly
JLI'ler



Anmeldedatum: 25.01.2004
Beiträge: 196
Wohnort: Detmold - NRW
Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 16:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
t10ottoo
Senior JLI'ler


Alter: 40
Anmeldedatum: 15.04.2004
Beiträge: 210
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 16:43    Titel: Antworten mit Zitat

Nagut, hat vlt jmd. gute Seiten über stl-Listen? Denn damit hatte ich noch nie was zu tun.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
HotAcid
Super JLI'ler


Alter: 43
Anmeldedatum: 04.08.2002
Beiträge: 372
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 17:05    Titel: Antworten mit Zitat

http://www.sgi.com/tech/stl/

musst dich da ein wenig durchklicken, ist dafür aber auch ganz gut erklärt Wink
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
t10ottoo
Senior JLI'ler


Alter: 40
Anmeldedatum: 15.04.2004
Beiträge: 210
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 17:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 17:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 18:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 18:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 18:15    Titel: Antworten mit Zitat

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.
Wink Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 18:21    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 29.07.2004, 18:33    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum