Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Task-Manager

Alter Hase

  • »Task-Manager« ist der Autor dieses Themas

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

1

14.02.2007, 18:59

level im SDL Spiel

Hallo,

Bin kompleter noob und habe das Spiel in Kapitel 12 schon mit einem Menü versehen.
Jetzt wolte ich aber noch Level einbauen. Ich habe es jetzt schon geschaft, dass ein Bild mit der Aufschrift Level 2 nach 10 sec. auftaucht. Nun will ich aber das nach weiteren 10 sec. Level 3 auftaucht. Da ich allerdings das Bild Level 2 so eingestellt habe, dass CGame neu gestartet wird kommt wieder Level 2 nach 10 sec.
Wie behebe ich dieses Problem?
Muss ich etwa eine Klasse CGame2 anlegen damit er in Level 3 reinspringt?

Bin für jede Antwort dankbar.
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

Lares

1x Contest-Sieger

  • Private Nachricht senden

2

14.02.2007, 20:25

Das mag dir zwar nicht bei deinen eigendlichen Problem helfen, aber ich würde CGame nicht neustarten lassen sondern eine Variabel Level hinzufügen, welche dann für die verschiedenen Textausgaben (und andere Dinge)sorgt. So hab ich das bei meiner Erweiterung auch gemacht und es funktioniert super ;)

Task-Manager

Alter Hase

  • »Task-Manager« ist der Autor dieses Themas

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

3

14.02.2007, 21:04

Hallo nochmal,

habe ich auch versucht, hat aber irgendwie nicht geklappt.
Könntest du vieleich ma deinen Code reinstellen? (Damit ich gucken kann was ich falsch mache)

Danke.
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

4

14.02.2007, 21:20

Ich würde das so machen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
int iLevel // Die Levelvariable initialisieren(ggf. in der Klasse oder als globl Variable)


iLevel = 1; // DasLevel stzen(Init Methode)


// Abfrage welches Level (Du könntest eine Funktion LoadLevel Schreiben die das erledigt)

switch(iLevel)
{
case 1:  // Lade Level 1

case 2: // Lade Level2

}


Du musst nur auf Universalität achten(ich habe das Buch nicht, habe keine Ahnun was das spiel ist) Du muss also darauf achten, dass du ein Level unabhängig davon, welches Level gerade am laufen ist rendern kannst,damit die Render-Funktion nicht so aussieht:

C-/C++-Quelltext

1
2
3
if(iLevel == 1) // Render

if(iLevel == 2) // Render

//...

Das endet im chaos vor allem bei vielen Level, aber das zu umgehen sollte kein Problm sein(allgemeine Variablen für Spieler Psoition usw.)

Task-Manager

Alter Hase

  • »Task-Manager« ist der Autor dieses Themas

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

5

14.02.2007, 21:34

Danke erstmal,

Aber wie mache ich das, dass er die Variable speichert. Ich habe ja momentan das bild Level2 auf dem Monitor und dieser muss ja dann
CGame neustarten. Wenn ich den dann neu starte kommt ja wieder Level2 da er ja alles von vorne macht. :cry:

Wenn Ich jetzt aber einfach das Level2 Bild beende, kommt diese Fehler Meldung:

Fatal Signal: Segmentation Fault <SDL Parachute Deployed>

Tschuldigung, dass meine Letzte Frage so ungenau war.
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

6

14.02.2007, 22:11

Ich versteh auch jetz nicht so ganz was du meinst. Meinst du das wechseln eines Levels?

Das würde ich dementsprechend lösen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
// Renderfunktion Ende

if(Level.complete) /*Ichweißnicht ob es sich lohnt eine Level-Klasse zu erstellen du kannst jaauch eine bool Variable nehmen und die dementsprechend ture setzen*/
{
iLevel = 2;
LevelLoad();
// Oder eine weitere Möglichkeit wäre eine Funktion

LevelLoad(2); // Diese Funktion lädt automatisch den 2. Level

}


Da brauchst du nicht CGame nochmal starten. Du kannst ja auch noch einen Glückwunschbildschirm(bzw. einen der Level2 anzeigt) davor anzeigen für den Fall, dass der Level geschafft wurde und dann eben den neun Level Laden der wird dann gerendert. Du änderst praktisch nur die Objekte die gerendert werden und nicht das ganze Spiel.

=>Game nicht neustart -> Funktion schreiben die neuse Level initialisiert, das dann ganz automatisch gerendert wird.

Hoffe das ist das was du wissen wolltest, wenn nicht konkretisier das ein bischen

Task-Manager

Alter Hase

  • »Task-Manager« ist der Autor dieses Themas

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

7

14.02.2007, 23:11

Danke vielmals,

Mutter scheucht allerdings :evil:
probiere es morgen aus gebe dann eine Antwort.
Aber von so einem erfahrenen Programmierer wie dir nuss es einfach gut gehen. ;)

Mfg
BloodRaptor
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

Task-Manager

Alter Hase

  • »Task-Manager« ist der Autor dieses Themas

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

8

15.02.2007, 13:34

Danke hat geklappt,

Mfg
BloodRaptor
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

Werbeanzeige