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

Tablica obiektów C++ (Snake)

Object Storage Arubacloud
+2 głosów
356 wizyt
pytanie zadane 6 października 2018 w C i C++ przez Dominik Kostencki Użytkownik (650 p.)

Witam zabrałem się za kodowanie snake w C++ Builder i natknąłem się na pewien problem. Chciałbym stworzyć tablice obiektów, w tym przypadków klocków, które składają się na węża, ponieważ nie chce załadowywać od razu dajmy na to 30 obiektów i ustawiać ich Visible=false; tylko tworzyć/dodawać nowy obiekt na koniec węża z każdym zdobytym punktem. Próbowałem stworzyć tylko jeden obiekt Image1 i kopiować go do tablicy obrazów, ale nie przyniosło to efektu. Prosiłbym o jakaś pomoc i z góry bardzo dziękuję :D

 
  TImage* Image[30];
   Image[0]=Image1;
   Image[0]->Visible=true;
   Image[1]=Image1
   Image[1]->Visible=true;

 

2 odpowiedzi

+1 głos
odpowiedź 6 października 2018 przez mokrowski Mędrzec (155,460 p.)
wybrane 7 października 2018 przez Dominik Kostencki
 
Najlepsza
Jeśli chcesz dodawać coś na koniec jakiegokolwiek kontenera to "prosta znana z C tablica" jest najgorszym możliwym wyborem. Najlepiej zdecydować się na std::vector który posiada wszystko czego potrzebujesz i w sposób cywilizowany traktuje obiekty.

Moja rada, jak najszybciej porzuć tablicę na rzecz std::vector. Jeśli później (dla sportu) będziesz chciał poćwiczyć i odpowiedzieć sobie na pytanie "a jak to zrobić na tablicy", zrozumiesz ile będzie to wymagało zachodu (realokacja, zapewnienie trywialnej kopiowalności obiektu, konieczność konstruktora bez parametrów dla obiektów w prostej formie inicjalizacji).

Na std::vector masz od problemów o których piszesz, metodę push_back() lub emplace_back().
komentarz 7 października 2018 przez Dominik Kostencki Użytkownik (650 p.)
Dzięki za chwilę poświęconego czasu i przybliżeniu mi tego zagadnienia. :)
+1 głos
odpowiedź 6 października 2018 przez j23 Mędrzec (194,920 p.)

Jeśli dobrze rozumiem twój problem, każdy element powinien wskazywać na inną instancję klasy TImage. Coś w ten deseń:

TImage* Image[30] = { nullptr };
/* ... */

Image[0] = new TImage(Form1);
Image[0]->Visible = true;
/* ... itd. */

Image[1] = new TImage(Form1);
Image[1]->Visible = true;
/* ... itd. */

 

Podobne pytania

+1 głos
1 odpowiedź 591 wizyt
pytanie zadane 20 kwietnia 2021 w C i C++ przez Dawidziu Bywalec (2,610 p.)
0 głosów
2 odpowiedzi 1,323 wizyt
pytanie zadane 30 grudnia 2020 w C# przez j.cob_21 Początkujący (350 p.)
0 głosów
1 odpowiedź 542 wizyt
pytanie zadane 9 stycznia 2019 w C i C++ przez A$AP_Becari Nowicjusz (170 p.)

92,548 zapytań

141,391 odpowiedzi

319,511 komentarzy

61,932 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!

...