funkcja działa a w switchu nie działa.

0
 int main (int argc, char *argv[])
{
	    srand (time(NULL));
		int a;
		cout << " 0 - Jednak nie gram, jestem komunista i niech swinie jedza z koryta " << endl;
		cout << " 1 - Zlapie zlodziei - graj " << endl;
		cout << " 2 - Zasady gry " << endl;
		cin>>a;
		cout << endl<< endl;
		
		switch(a) 
		{	
			case 0:
			{
				
				system ("PAUSE");
				return EXIT_SUCCESS;
				break;
			};
			case 1:
			{	
				game();
				break;
			};	
			case 2: 
			{
			cout <<"czemu nie dziala game() w case 1 a tak normalnie to dziala?";
			break;
		};
		} 
		
    return 0;
}

To jest main. Funkcja game(); jest to gra gdzie sobie chodzę po planszy strzałkami i zbieram największych złodziei politycznych do paki (każdy wie kogo). Jeśli w main dam samą funkcję game(); to jest ok. działa. Jak obuduję w switch to dupa, case 0 i case 2 działają a case 1 czyli gra nie.
Mam dev c++, taki na uczelni używamy.
Wszystko jest ok, czym to może być spowodowane?

1
#include <iomanip>
...
cin>>a>>ws; // zabrakło tego ws
0

No głupi jestem. Skąd się wzięło ws? co to? Muszę dwa razy kliknąć enter. Docelowo myślę bez enter czyli getch() i pobiera samo, tak mam dane na poruszanie się po planszy ze sobie klikam strzalke i juz sie rusza.

Troszkę lepiej bo pojawia się plansza i dopiero jak kliknę strzalke to się wyłacza z errorem. Najgorzej ze nie pisze gdzie błąd.

0

Dzięki, za głupie na razie an to jestem. mam a=getch(); i nie wiem gdzie to ws napisać.

0

Przecież napisałeś że game() działa, to czemu chcesz go poprawiać? Masz poprawić cin>>a;

0

no tak. ale wolę a=getch() bo nie trzeba klikać enter potem enter a po cin trzeba dawać enter.

0

Zaklinowało cię czy jak?

...
        cout << " 2 - Zasady gry " << endl;
        cin>>a>>ws;
        cout << endl<< endl;
...
0
void game(){
	
	inicjuj_mapa();
	Tusk tuski[4];
	Player player;
	
    moveTusk(tuski[0], 3, 4);
    moveTusk(tuski[1], 7, 6);
    moveTusk(tuski[2], 7, 3);

   	movePlayer(player, 1, 2); 
   	znak=0;
   	showMap();
    show(player);
   	while ((znak=getch())!=27)
   	{
		  for(int i=0;i<4;i++){
          wynik(player, tuski[i],score);
          
          }  
          switch (znak)
          {
          case 77 :   // w prawo
                     movePlayer(player, player.y, player.x+1);
                     break;
          case 75 :   // w lewo
                     movePlayer(player, player.y, player.x-1);
                     break;
          case 72 :   // do gory
                     movePlayer(player, player.y-1, player.x);
                     break;
          case 80 :   // w dol
                    movePlayer(player, player.y+1, player.x);
                     break;
                 }
        clearScreen(); 
    	showMap();
        show(player);
    }  ;
}
 

Daję w komentarze wszystko co jest w main, czyli tego switch'a i dostawiam game(); i działa. Może się pruje, bo w game() też mam switcha, który służy do poruszania się.

0
int main (int argc, char *argv[])
{
	    srand (time(NULL));
		int a;
		cout << " 0 - Jednak nie gram, jestem komunista i niech swinie jedza z koryta " << endl;
		cout << " 1 - Zlapie zlodziei - graj " << endl;
		cout << " 2 - Zasady gry " << endl;
		a=getch();
		cout << endl<< endl;
		
		switch(a -'0') 
		{	
			case 0:
			{
				
				system ("PAUSE");
				return EXIT_SUCCESS;
				break;
			};
			case 1:
			{	
				game();
				break;
			};	
			case 2: 
			{
			cout <<"czemu nie dziala game() w case 1 a tak normalnie to dziala?";
			break;
		};
		} 
		
    return 0;
} 

tam kombinowałem aby dać "char a" ale nic nie dawało. Jak dam 2 to pojawia się tekst i potem jak cokolwiek wcisne to wyłacza się, ale bez błędu. Klikam 1 to od razu blad. Zglupialem przy tym.

1

Jak na moje oko ani w main() ani w game() nie ma błędów więc szukaj głębiej. Może czas nauczyć się używać debugiera.

0

Zamieszczę rozwiązanie, może się komuś przyda.
Trzeba było dać w game()

 static Tusk tuski[4];
static Player player ;

Kolega do tego doszedł. Działa switch w main, tylko jak kliknę strzałkę to tak jakby w tle za mapką pojawia się kolejna mapka i napis z case 2 :D Zawsze będzie jakiś problem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1