Sprawdzenie kodu C++

0

Witam!

Piszę Sapera w C++ i program nie działa tak jak powinien. Po wpisaniu współrzędnych i trafieniu na bombę poprawnie wypisuje komunikat o przegranej, ale w przeciwnym wypadku wypisuje "Wygrana" chociaż powinien to zrobić dopiero gdy na planszy zostaną same bomby.

enum stan_gry{WYGRANA,PRZEGRANA,DALEJ};
void wybor()
{
	int x = 0;
		cout << "Proszę wybrać współrzędną pionową: ";
		cin >> x;
		cout << endl;
		int y = 0;
		cout << "Proszę wybrać współrzędną poziomą: ";
		cin >> y;
		cout << endl;

		int licznik = 0;
		stan_gry stan = DALEJ;
		while (stan == DALEJ)
		{
			if (plansza[x][y] == 9)
			{
				maska[x][y] = 'X';
				stan = PRZEGRANA;
				break;
			}

			if (licznik == 71)
			{

				stan = WYGRANA;
				break;
			}

			else
			{
				licznik++;
				maska[x][y] = plansza[x][y];
				stan = DALEJ;
				break;
			}


			rysuj(maska);
		}

		if (stan == PRZEGRANA)
		{
			cout << "Przegrana";
		}

		if (stan == WYGRANA)
		{
			cout << "Wygrana";
		}

Pętla

while (stan == DALEJ)

wykonuje się tylko raz, ale nie wiem dlaczego. Proszę o pomoc ...

1

Sprawdź pod debuggerem, do tego właśnie służy.

1

Breakiem wychodzisz z pętli while.

0

czyli breakiem wychodzę i z tego ifa i w z whilea?

1

A weź go usuń i zobaczysz czy program stanie i nie wyjdzie z ifa czy wyjdzie i będzie się wykonywała pętla while. To jest 30 sekund pisania.
Chociaż jak wiadomo czas to pieniądz i szkoda żebyś go marnował to napiszę Ci, że po wykonaniu tego co masz w ifie normalnie z niego wychodzisz i robisz to co jest dalej w kodzie.

1

Break służy do przerwania wykonywania pętli. Co rozumiesz pod "breakiem wychodzę z ifa" ?

0

Tak to jest jeśli nie rozróżnia sie pętli od instrukcji warunkowej. Dzięki!

1

Jak szukasz dobrego źródła do nauki C++, polecam megatutorial Xion'a. Wszystko świetnie wytłumaczone.

0

Czytać to ja czytałem dużo. O klasach, dziedziczeniu STL, ale tak naprawdę dopiero w praktyce to wszystko wychodzi ;/ podstawowe błędy

0

Więcej programuj, mniej czytaj. Wejdzie Ci w nawyk czytanie, nabieranie sporej wiedzy zamiast programowania, której niestety nie będziesz w stanie na początku wykorzystać, bo:

  • przeczytasz za dużo i nic sensownego nie wyniesiesz, będzie Ci się to mieszało... chociaż z drugiej strony nabierzesz jako takiego poglądu, wtedy drugie podejście do tematu jest zdecydowanie przyjemniejsze i bardziej owocne
  • dowiesz się o kilku mechanizmach, które "na siłę" będziesz chciał użyć - zguba początkujących, chyba każdy przez to przechodził :)

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