• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Lokalizacja obiektu po segregacji tablicy obiektów

Object Storage Arubacloud
0 głosów
541 wizyt
pytanie zadane 30 lipca 2015 w C i C++ przez Nekronomik Użytkownik (600 p.)
Witam, mam tablice obiektów rekin[100] i teraz rekin[2] atakuje rekin[3]. Aby rekin[2] zlokalizował rekin[3] wystarczy że zapamięta jego numer tablicy czyli "3". W miedzy czasie rekin[1] umarł, gdy funkcja segregująca to wychwyci to w miejsce rekin[1] wpisze rekin[2] (rekin[1]=rekin[2]) a gdzie był rekin[2] będzie zapisany rekin[3]. Więc teraz mam rekin[1] i rekin[2], problem jest teraz taki że rekin[1] atakuje rekin[3] a rekin [2] może nawet uciekać przed samym sobą. chciałem to rozwiązać ze każdy rekin będzie miał indywidualny id. Ale żeby to zadziałało to muszę każdy obiekt ze sobą sprawdzić co jest mało wydajne przy setkach obiektów.

3 odpowiedzi

+2 głosów
odpowiedź 30 lipca 2015 przez nowyfolder Mądrala (7,250 p.)
Zamiast tablicy obiektów, zrób tablicę wskaźników na obiekty, dzięki temu możesz zapamiętywać wskaźnik na danego rekina(który się nie zmieni, nawet gdy skopiujesz/przenieszesz go do innego miejsca w tablicy), a nie jego pozycję w tablicy.
komentarz 30 lipca 2015 przez Patrycjerz Mędrzec (192,320 p.)
Nowyfolder, znowu mi pomagasz (teraz nieumyślnie)! Dzięki, bo miałem podobny problem.
komentarz 30 lipca 2015 przez nowyfolder Mądrala (7,250 p.)

Nie ma sprawy, jak coś to zawsze jestem chętny do zrobienia czegoś nieumyslnie laugh

0 głosów
odpowiedź 30 lipca 2015 przez Rogargol Pasjonat (16,600 p.)
Polecam użyć listy obiektów.

Ja robiłem swoją wersję węża, gdzie można było sterować kilkoma wężami na raz, rywalizujac miedzy soba. Uzylem wlasnie listy obiektow co pozwala dynamicznie dodawac jakis obiekt, lub go wywalac, segregowac itp. Mysle ze to bardziej uniwersalna metoda niż tablica wskaznikow. Mozna tez w razie potrzeby zastosowac liste wskaznikow do obiektu.

Polecam biblioteke list.h
0 głosów
odpowiedź 6 sierpnia 2015 przez Nekronomik Użytkownik (600 p.)

Czyli mam coś takiego zrobić

Rekin*rekin=new Rekin[ilosc];

Chociaż nie wiem jak mi to może pomóc.

komentarz 6 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)
Chodzi o stworzenie wektora (kontenera) ze wskaźnikami i tworzenie warunków za pomocą wskaźników, a nie indeksu tablicy.
komentarz 7 sierpnia 2015 przez Nekronomik Użytkownik (600 p.)

Dopiero pierwszy raz używam wskaźników.

Rozumiem to tak:

Rekin *w[10], rekin[10];

for(int i=0;i<10;i++)

{

    w[i]=&rekin[i];

}
komentarz 7 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)

Wiesz co, normalnymi tablicami dynamicznymi dałoby się to zrobić, ale po co sobie utrudniać życie?

Wykorzystaj kontener, który jest oferowany przez bibliotekę vector.

std::vector <Rekin*> tablica;
komentarz 7 sierpnia 2015 przez Nekronomik Użytkownik (600 p.)
Problem jest taki że nawet na tablicach dynamicznych (czy zwykłych) nie wiem jak to zrobić, tak aby po posegregowaniu obiektów obiekt dalej pamiętał co atakuje.
komentarz 7 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)

Wprowadź do klasy Rekin wskaźnik na obiekt, który dany obiekt atakuje, czyli coś takiego:

class Rekin
{
private:
//...
	Rekin* cel_ataku;
//...
}

 

Podobne pytania

+1 głos
1 odpowiedź 652 wizyt
pytanie zadane 4 grudnia 2016 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 676 wizyt
pytanie zadane 4 grudnia 2016 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 298 wizyt
pytanie zadane 20 kwietnia 2016 w C i C++ przez salvatoreone Początkujący (270 p.)

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...