[Novize] While Loop setzt nicht richtig aus :) ?
-
Hey Leute!
Suche den Fehler in meinen While Schleifen, in welcher die Schleife trotz FALSE der Condition nicht wirklich aussetzt.
#include <stdio.h> #include <stdlib.h> #include <time.h> void getMovementDir(char); void askMovementKey(char); int randomNumber(); char UserInput; int x = 0; int y = 50; int main() { int ItemChance; while( y < 50 ) { while( x < 50 ) { while ( y > -50 ) { while ( y > -50 ) { askMovementKey(UserInput); printf("Debug Test Coords: %d %d\n",x,y); ItemChance = randomNumber(); printf("ItemChance = %d\n",ItemChance); if (ItemChance == 0) printf("You obtained a mushroom.\n\n"); else printf("You moved. Nothing suspicous around.\n\n"); } } } } printf("You reached a unbreakable Wall. Try to move in another direction.\n"); return 0; } //************************************************************** int randomNumber() { int random; srand(time(NULL)); random = rand() % 10; return random; } void askMovementKey(char UserInput) { printf("In which direction do you want to move now ? "); scanf("%c)",&UserInput); getMovementDir(UserInput); printf("Debug Test Char: %c \n",UserInput); return; } void getMovementDir(char movekey) { switch(movekey) { case 'w': y++; break; case 's': y--; break; case 'a': x--; break; case 'd': x++; break; default: printf("Please enter one of the movement keys (w,s,a,d)\n"); } return; }
[b]Meine Bitte an Euch. Versucht mir, so sehr es auch kitzelt, nur mein Problem zu erklären - da ich die restlichen Fehler die vll. noch auftreten erstmal auf eigene Faust lösen möchte
Problem:
Ich möchte bei Eingabe von "w" das y + 1 bekommt. Das soll solange passieren wie y < 50 ist z.b. Ändere ich die global var y = 50 so wird
printf("You reached a unbreakable Wall. Try to move in another direction.\n");
direkt ausgeführt.
Lasse ich jedoch y durch die UserInput erhöhen wie in meiner Funktion getMovementDir() geht das Ganze über y = 50 hinaus aber es wird die obige printf() nicht ausgeworfen bzw. der Loop nicht gestoppt an der Stelle.Bitte berücktsichtigt das ich erst seit einem Monat über C lerne und bis jetzt nur Theorie hatte
Das Projekt hier ist mein erster Versuch des Learning by Codinggruß Charlie
-
Falke88 schrieb:
while ( y > -50 ) { while ( y > -50 ) {
Sieht sehr sinnfrei aus.
Du hast die Schleifen-Hierarchie nicht verstanden, zuerst wird die innerste Schleife komplett abgearbeiten, d.h. die äußeren Bedingungen bleiben unberücksichtigt.
Was du wohl meinst istwhile( y > -50 && y < +50 && x > -50 && x < +50 ) ...
d.h. alle Bedingungen werden bei jedem Schleifendurchlauf geprüft und nicht wie bisher erst nach Beendigung einer Schleifenebene.
-
solange y größer als -50 ist. kommst du aus der inneren whhile-Schleife nicht raus. Und 50 ist größer als -50.
Du brauchst nicht vier Schleifen sondern nur ein mit vier Bedingungen.
-
Haha
Ok die Schleifenhierarchie habe ich wirklich so nicht gesehen. Aber das mit dem && ist mir heute morgen auch eingefallen
Heisst es also wenn While 4 nicht zutrifft prüfe While 3 usw. bis zur While 1 Schleife?
Ich bedanke mich für die Hinweise !
gruß Charlie
-
Falke88 schrieb:
Heisst es also wenn While 4 nicht zutrifft prüfe While 3 usw. bis zur While 1 Schleife?
nein. eine schleife reicht völlig. das wurde schon geschrieben.
mit 4 schleifen zu arbeiten ist blödsinn.