006
02.01.2005, 21:50 Uhr
Drager
|
Zitat von mmc20: |
die while(1) sind eh etwas sinnlos da du da nie rauskommst. also besser so:
|
hm sicher komm ich da raus.. mit break... aber ist halt nicht sehr elegant...
Zitat von RedEagle: |
C++: |
int main() { while(spiel) { //Kann man das hier leer lassen??? } }
|
sicher kann man das leer lassen, aber wieso nicht gleich
C++: |
int spiel() { // hier spiel initialisieren bool run = true;
while( ! Key.ESCAPE || run) { // hier läuft die spiele schleife } int menuwahl = menu(); switch( menuwahl ) { case 1: { return 1; } case 2: { break; } case 3: { run=false; } // beenden } // hier aufräumen return 0; }
int menu() { while( ! key.RETURN ) { // hier menu } return menuwahl; }
|
1. goto ist mist 2. So sollte es gehen: wenn 1(Neues spiel) gedrückt wird wird das aktuelle Spiele beendet, und die Funktion Spiel erneut aufgrefen (Wein >0 zurückgegeben wird) wenn 2(Weiter) gedrückt wird, wird die "switch - Anweisund" beendet und es geht weiter wenn 3 (Beenden) gedrückt wird, wird die Variable "run" auf False gesetzt, und die Schleife beendet
|
äh im falle 1 wird dann aber nicht aufgeräumt, da er keine befehle mehr nach return 1 in diesem funktionsaufruf mehr abarbeitet... bei fall 2 gehts net wirklich weiter, da du nur aus der switch anweisung springst.. in die while darüber kommt er nicht mehr, also räumt er auf und beendet das spiel (return 0) bei deinem fall 2... fall 3 ist auch unsinnig so wie du es geschrieben hast, da wie gesagt er nicht mehr in die while schleife darüber kommt... und dann eh auf return 0 stösst...
also ich würde das entweder wie mmc20 machen, goto ist garnet soo schlecht, kann nur wenn man es zu oft benutzt unübersichtlich werden...
ansonsten einfach:
C++: |
void spiel() { while(1) { if( Key.ESCAPE ) menu(); }
}
void menu() { while(1) { if( Menu Wahll == Neuse Spiel starten ) neuesSpielInit(); //initialisiert alles fuer ein neues spiel... break; } }
|
|