Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z przerwaniem pętli


Rekomendowane odpowiedzi

Opublikowano

Witam, mam prosty programik w którym nie działa mi Przerwanie pętli:

 

-Zrobiłem to w taki sposób w case 1.

 

Jeśli jest coś mega źle piszcie, bo dopiero się uczę pisać takie rzeczy.

 

Thx z góry

#include <iostream>
#include <Windows.h>
#include <conio.h>

 
using namespace std;
void menu()
{
 
 	cout << "_______________________"<< endl<<endl;
	cout << "          Menu         "<< endl<<endl;
 	cout << "_______________________"<< endl<<endl;
	cout << "1:Kopanie"<<endl;
	cout << "2:Chodzenie(przod-tyl)"<<endl;
	cout << "Zeby zakonczyc dzialanie programu wylacz go znaczkiem X"<<endl;

}
int main()
{
char znak;
int wybor;
 
 
 
menu();
cout<< endl;
cout << "Twoim wyborem jest:";
cin>>wybor;
switch (wybor)
{
	case 2:
		
   		system( "cls" ); //czyszczenie ekranu
		cout<< "Zeby cofnac sie do MENU wcisnij X";
		cout<< endl;
		cout<< "Twoja opcja rozpocznie sie za 10sekund!";

		for(;
		{

		Sleep(10000);
 		Sleep(1);
		keybd_event(0x57, 0, 0, 0);                 //wciskam W
		Sleep(2000);
		keybd_event(0x57, 0, KEYEVENTF_KEYUP, 0);   //puszczam W
		Sleep(2);
		keybd_event(0x53, 0, 0, 0);                 //wciskam S
		Sleep(2000);
		keybd_event(0x53, 0, KEYEVENTF_KEYUP, 0);   //puszczam S
		}
	
	case 1:
   		system( "cls" );
		cout<< "Zeby cofnac sie do MENU wcisnij X";
		cout<< endl;
		cout<< "Twoja opcja rozpocznie sie za 10sekund!";
		Sleep(10000);
		for(;
		{
			

			Sleep(1);
			mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 ); 
			Sleep(2000);
        	mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
        	Sleep(1);
        	mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 ); 
        	Sleep(2000);
        	mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ); 	
			
			if(kbhit())
				znak=getch();
		
			if(znak=='q') break;
			else
				znak=0;

		
		}

				
}

return 0;
}








		
			if(znak=='q') break;
			else
				znak=0;

		
		}

				
}

return 0;
}







Opublikowano

W twoim przypadku po wykonaniu case 2 rozpocznie się case 1, więc chyba lepiej dać to w pętli a nie w switchu? Albo wszystko dać do jednego switcha? Znajdź może jakąś bibliotekę, która ma jakąś zmienną "Key" która przechowuje wciśnięte przyciski, i daj do pętli, żeby wykonywało się do momentu, kiedy ta zmienna będzie różna od klawisza X, no chyba, że c++ ma takie coś w podstawowych bibliotekach, tylko że wtedy pętla skończy się po wykonaniu wszystkich sleepów.

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano
http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Warunek-wielokrotnego-wyboru-switch-case/17

Powodzenia

 

W Twoim kodzie żaden case nie ma breaka więc przechodzi do kolejnego case, a skoro w kolejnym nie ma możliwości przerwania to pętla będzie zawsze.

Poza tym rozbij to na funkcje, potem z pętli będziesz wychodził poprzez zwykłe return;

 

I to Ty nie rozumiesz.

 

@ehh po ostatnim temacie co Ci napisałem pseudo kod i tym stwierdzam, że nie ma co Ci pomagać.

Opublikowano

ale gościu...

działa, działa robi pętle dobrze.. nie ma problemu


to pomóż mi tak wyprowadzić ten kod żeby wszystko trzymało się kupy + działało sprawnie


staram się poprawnie korzystać, ale mi nie wychodzi. ale kod działa dobrze narazie

Opublikowano

To działa dobrze czy nie w końcu...

On ci dobrze mówi, a ty dalej nie widzisz tego, bo nie rozumiesz jak działa switch.

W dodatku dla case 2 masz nieskończoną pętlę.

Opublikowano

}

return 0;
}
 na c**j ci to i zle wstawiasz nawiasy klamrowe popatrz sobie  musisz robic tak { tresc }

 

 

zrob sobie default 
jesli chcesz zeby program sie wykonywal sie przynajmniej raz lepsza opcja byłoby
int main()
{
do
{
}while(true);
}

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...