» »

Igra Želvica v C++

Igra Želvica v C++

hexor ::

Živjo!
Ukvarjam se z enim problemom,ta namreč je želvica ki se pomika za dolžino 1.Želvica pozna 3 ukaze
-N korak naprej za dolžino 1.
+,obrat v desno za 90°
-,obrat v levo za 90°
Na začetku je želvica obrnjena v smeri osi x.Zdaj pa moram napisati funkcijo,ki prejme polje znakov,ki mora biti zaključeno z ničelnim znakom'\0'.Poleg polja mora funkcija prejeti še en argument,ki predstavlja velikost tabele.Funkcija naj v polje znakov vnese naključno veliko število znakov vendar ne več kot je velika tabela,ter znaki morajo predstavljati ukaze za želvico,ter zaključeni z ničelnim znakom.Potrebujem tudi glavni program,da bom lahko preveril program,tako da bom izpisal polje znakov.Kdor se spozna na tovrstne probleme,naj mi ga poskusi rešiti.HVALA

black ice ::

Za zaključitev nekega ukaza uporabi while (nekaj>0).
Pri čem drugem ti na žalost ne vem pomagati.

hexor ::

ideje?

Tutankhamun ::

Nevem če sm lih prov zastopu. Spisu sm ti en programček, ti pa lahko dodaš al pa spremeniš kar češ.
Nism delu kontrole nad tem kar vpišeš, tko da to lahk sam nardiš. Sm pa naredu tko da, ko je želva:
- obrnjena gor je to znak A
- obrnejna dol je znak V
- obrnjena levo je znak <
- obrnjena desno znak >

Js sm se mal igrov, sam tok da vidm če je želva dost udomačena, da dela kar hočem (da na hitrco, program dela nekak pravilno! - nism preverjal kšnih mejnih pogojev :)).

void DisplayField (const char *pField, const int width, const int height)
{
	int size = width * height;

	for (int i = 0; i < size; i++)
	{
		if (i % width == 0)
			cout << endl;

		char val = *(pField + i);
		if (val == 0)
			cout << ".";
		else
			cout << val;
	}

	cout << endl << endl;
}

void Move (char *pField, const int width, const int height, int &curX, int &curY, const char move)
{

	char *direction = (pField + curY * height + curX);
	char turn = *(pField + curY * height + curX);

	if (move == '+')
	{
		if (turn == 'A') *direction = '>';
		else if (turn == '>') *direction = 'V';
		else if (turn == 'V') *direction = '<';
		else if (turn == '<') *direction = 'A';

		return;
	}
	if (move == '-')
	{
		if (turn == 'A') *direction = '<';
		else if (turn == '<') *direction = 'V';
		else if (turn == 'V') *direction = '>';
		else if (turn == '>') *direction = 'A';

		return;
	}

	if (*direction == 'A')
	{
		if (curY != 0) curY--;
	}
	else if (*direction == 'V')
	{
		if (curY < height - 1) curY++;
	}
	else if (*direction == '>')
	{
		if (curX < width - 1) curX++;
	}
	else if (*direction == '<')
	{
		if (curX > 0) curX--;
	}

	*direction = 0;

	direction = (pField + curY * height + curX);
	*direction = turn;

}

int main (int argc, char* argv[])
{
	char env[10][10] = {0};

	int x = 0;
	int y = 5;
	env [y][x] = '>';

	DisplayField (&env[0][0], 10, 10);

	char move;
	while (true)
	{
		cout << "Vnesi smer (+,-, N): ";
		cin >> move;

		Move (&env[0][0], 10, 10, x, y, move);

		DisplayField (&env[0][0], 10, 10);
	}

	return 0;
}
AMD Phenom QUAD 9950 Black Edition, 8GB


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] vprašanja (strani: 1 2 3 4 5 6 7 8 9 )

Oddelek: Programiranje
44727344 (11890) aljazko1995
»

C++ spiralno pisanje v array

Oddelek: Programiranje
101446 (1197) ghost
»

Nujna Pomoč ! C++

Oddelek: Programiranje
121226 (1025) BigWhale
»

Branje binarne datoteke v polje znakov - C++

Oddelek: Programiranje
81793 (1661) Tutankhamun
»

C++ programi

Oddelek: Programiranje
72521 (2117) ERGY

Več podobnih tem