Zapamiętanie pozycji znaku

0

Witam.
Mam do zrobienia mały projekt na studia. Chodzi się po konsoli znakiem "@" i należy zbierać "", aby zdobyć energię na następne rundy. Pojawianie się "" na ekranie wykonałem losowo w ten sposób

 
		l = rand() % 100;
		if (l>0 && l<6)
		{
			la = rand() % 80;
			lb = rand() % 25;
			k->putxy(la, lb, r, FOREGROUND_GREEN);
		}

Następnie chciałem zrobić, aby "@" po najechaniu na "~" zdobywał 10 pkt energii. Wykonałem to w ten sposób (x oraz y to obecne położenie "@"):

 
if ( x==la && y==lb)
			energia = energia + 10;

Niestety działa to tylko dla ostatniego "" jakie się pojawiło na ekranie, a nie dla wszystkich poprzednich, które już na nim sa. I tu moje pytanie do Was. Jak mogę zrobić, aby program zapamiętywał wszystkie położenia "" na ekranie, a nie tylko to ostatnie?

0

Możliwości są dwie:

  1. Możesz po prostu zapisać gdzieś informacje o tym gdzie leżą ~
  2. Możesz przechowywać w pamięci stan planszy w jakimś obiekcie i sprawdzać co leży na planszy pod współrzędnymi @ i czy nie jest to czasem ~
    Wydaje mi się że opcja 2 jest dużo sensowniejsza, szczególnie że podejście obiektowe tutaj może być bardzo eleganckie.
0
  1. No niby pozycja ~ zapisuje w la oraz lb, ale co pojawienie się nowego ~ te pozycje się nadpisują. Nie mam pojęcia jak zapisać każdą pozycję z osobna.
  2. A możesz podać mi jakiś namiar albo nazwę funkcji, którą mam się zainteresować i nauczyć, żeby to ogarnąć? Bo dopiero od miesiąca siedzę w cpp i na chwilę obecną nie wiem jak sie za to zabrac.
0

Ad.1. ? Zrób tablicę / vector / listę / set z taką informacją po prostu i dokładaj tam nowe pozycje i kasuj stare.
Ad.2. Zacząłbym od słowa kluczowego "class" ;]

0

Nie wiem czy w taki sposób miałem to zrobić, ale zdefiniowałem tablicę int o 2 kolumnach i przykładowo 80 wierszach.
Następnie chciałem zrobić, aby po pokazaniu się ~ na ekranie zapisało tę pozycję w pierwszym wierszu i przeszło do następnego wiersza.

 
pol[o,2] = {la, lb};
o++;

Ale niestety kompilator mi wysypuje błędy na tę linijkę (o brakujących ";").
Poza tym gdyby udało mi się to zmusić do działania to czy wtedy położenie @ też bym musiał zrobić za pomocą tablicy, aby następnie porównać ze sobą wartosci położenia @ oraz ~?

0
  1. Nie możesz tak tego zapisać. Ja bym zrobił tablicę dwuwymiarową jednak...
bool tablica[100][100]={}
//
tablica[la][lb]=true;

A potem sprawdzał:

if (tablica[x][y] == true){
  //trafiiśmy!
  tablica[x][y] = false;
}
  1. Nie.

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