WASD - Bewegen einer Figur in der Konsole - Ich finde den Fehler im Code nicht!



  • Hallo Leute,
    ich bin gerade dabei ein Zeichen nur das drücken der Tasten w,a,s,d über den Bildschirm zu bewegen. Ich habe dies schon einmal geschafft (schon etwas her).
    Ich habe den kompletten code mal hier reinkopiert. Könntet ihr mir sagen was ich falsch gemacht habe ?

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <conio.h>
    #include <iostream>
    
    int a=15;
    int b=23;
    
    void gotoxy(int x, int y) 
    {
    	HANDLE hStdout; 
    	COORD coordScreen = { 0, 0 }; 
    	hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
    
    	coordScreen.X = x;
    	coordScreen.Y = y;
    	SetConsoleCursorPosition( hStdout, coordScreen );
    }
    
    void move()
    {
    	gotoxy(a,b);
    	printf("#");
        char ch=0;
    	while (1);
        {
            ch = getch();
    
            switch(ch)
            {
    
                case 'w':
                {
                    gotoxy(a,b);
    				printf(" ");
    				a--;
    				gotoxy(a,b);
    				printf("#");
                    break;
                }
                case 'a':
                {
                    gotoxy(a,b);
    				printf(" ");
    				b--;
    				gotoxy(a,b);
    				printf("#");
                    break;
            	}
                case 's':
                {
                    gotoxy(a,b);
    				printf(" ");
    				a++;
    				gotoxy(a,b);
    				printf("#");
                    break;
                }
                case 'd':
                {
                    gotoxy(a,b);
    				printf(" ");
    				b++;
    				gotoxy(a,b);
    				printf("#");
                    break;
            	}
        	}
    
        }
    
    }
    
    int main()
    {
    	system("color 06");	
    
    	gotoxy(1,24);
    	move();
    
    	return 0;
    }
    

    Vielen Dank 🙂
    Und hoffentlich findet jmd den Denkfehler 😃



  • Zareko schrieb:

    Könntet ihr mir sagen was ich falsch gemacht habe ?

    Kannst Du ein wenig näher beschreiben, was nicht stimmt? Compilerfehler, Linkerfehler, Absturz, Nasaldämonen, Anzeige ruckelig oder was?
    So bin ich nicht bereit, mit dem Suchen überhaupt anzufangen.



  • Meine "Figur" reagiert nicht auf Tastendücke, bewegt sich also nicht.
    Lg Zareko

    PS: ich habe Schwierigkeiten mich einzuloggen sonst würde ich das mit dem Account schreiben.



  • Zareko schrieb:

    Meine "Figur" reagiert nicht auf Tastendücke, bewegt sich also nicht.

    Siehste! Damit konnte ich den Fehler sofort sehen:

    while (1);//Semikolon zu viel
    


  • vielen vielen Dank 🙂
    Ja so ein Semilolon kann einen echt umbringen wenn man das irgendwo gesetzt hat wo es nicht hingehört. Hab ich völlig übersehen. Vielen Dank 🙂
    bis zum nächsten mal .
    VLG



  • Gab es da keine Warnung? (vom Compiler)
    EDIT: Ich würde es zumindest nicht falsch finden, wenn man hier eine bekäme
    man könnte immernoch

    for (bla;bla;bla) {}
    

    schreiben, wenn man nur zählen möchte, oder was einem sonst noch so einfällt.

    if (bla bla);
    

    wird auf jeden Fall gewarnt


Log in to reply