männchen läuft einfach falsch^^



  • hallo, hab heut mit c++ angefangen udn wollte mal zum einstieg einen typen in der konsole bewegen. allerdings läuft er überall hin nur nicht dorthin wo man will. finde den fehler leider nicht:

    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    #include <stdlib.h>
    
    using namespace std;
    void gotoxy(int x,int y) 
    { 
       COORD cur={x,y}; 
       SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),cur); 
    } 
    
    int main()
    {
    	int spielerx=12;
    	int spielery=12;
    	char eingabe;
    
    	do
    	{
    		system("cls");
    		gotoxy(spielerx,spielery);
    		cout<<"  _________";
    		gotoxy(spielerx,spielery+1);
    		cout<<"  |te pwnzr|";
    		gotoxy(spielerx,spielery+2);
            cout<<"  |________|";
    		gotoxy(spielerx,spielery+3);
    		cout<<"__|__";
    		gotoxy(spielerx,spielery+4);
    		cout<<"(-.-)";
    		gotoxy(spielerx,spielery+5);
    		cout<<" | | ";
    		gotoxy(spielerx,spielery+6);
    		cout<<"-| |-";
    		gotoxy(spielerx,spielery+7);
    		cout<<".|'|.";
    		gotoxy(spielerx,spielery+8);
    
    		eingabe=getch();
    
    		switch(eingabe)
    		{
    			//oben
    		case 72: if(spielery>0) {spielery=spielery-1;}
    		       else {spielery=spielery;}
    			//unten
    		case 80: if(spielery+8 <50) {spielery=spielery+1;}
    			   else {spielery=spielery;}
    			//rechts
    		case 77: if(spielerx+12 <100) {spielerx=spielerx+1;}
    			   else {spielerx=spielery;}
    			//links
    		case 75: if(spielerx>0) {spielery=spielerx-1;}
    			   else {spielerx=spielerx;}
    		}
    	}
    	while(eingabe!=27);
    }
    

    mfg



  • break vergessen 😉
    bei switch muss immer ein break nach jedem case kommen, sonst macht dre einfach weiter

    switch(c)
    {
    case 1:
       // das und das machen
       break; // nicht vergessen
    case 2:
    //..
      break;
    };
    


  • aha! 😉 ok.. das kannte ich eigtl schon.. peilo^^
    dank dir



  • Es könnte auch helfen, wenn man nicht x und y mixt:

    case 75: if(spielerx>0) {spielery=spielerx-1;} 
                   else {spielerx=spielerx;}
    

    besser ist:

    case 75: if(spielerx>0) {spielerx=spielerx-1;} 
                   else {spielerx=spielerx;}
    

Anmelden zum Antworten