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

Broń, strzelanie, platformówka

VPS Starter Arubacloud
0 głosów
319 wizyt
pytanie zadane 23 września 2017 w C i C++ przez DonTweaks Nowicjusz (120 p.)
edycja 24 września 2017 przez DonTweaks
Witam, próbuje zrobić strzelanie postaci. Gdy próbuje strzelić wyskakuje błąd, który mówi, że wyszedłem za range wektora.
Posiadam klasę Entity, która odpowiada za pozycje postaci itd., jak i za broń, a tak naprawdę kule. Klasa GameplayScreen odpowiada za to co się dzieje na mapie, wczytuje tile map, postacie i obrazy. Stworzyłem dwuwymiarowy wektor Entity std::vector<std::vector<Entity*>> vEntity; i metodę, która "tworzy broń". Tą metodę wywołuję w czasie, kiedy przycisnę dobry przycisk, w tym czasie gra się kraszuje i wyskakuje błąd.
Tak wygląda kod : https://pastebin.com/0DmUdsRd

System::getManager() zwraca klasę, która wczytuje np. menu, opcje, nową gre itd. ->getGame() zwraca instancje do GameplayScreen ->getGame()->getPosX() zwraca pozycje x mapy (mapa się rusza jeśli pozycja postaci jest większa niż pozycja ekranu). vEntity[i][j]->getBlockID() zwraca numer obrazka, w tym przypadku 4, ustawione w klasie PlayerGun oznacza grafikę kuli.

1 odpowiedź

–1 głos
odpowiedź 23 września 2017 przez Knayder Nałogowiec (37,640 p.)
Pewnie nie ma 4 elementu tego wektora.
komentarz 24 września 2017 przez DonTweaks Nowicjusz (120 p.)
Nie powinno być to zależne od tego. Elementem wektora powinna być (pozycja X postaci - pozycja X mapy ) /160. Daje to wartości od 0 do.... jakiejś liczby, 4 też jest tą liczbą. Powinno to działać, niezależnie czy będzie to 4 czy np. 0.
komentarz 24 września 2017 przez Knayder Nałogowiec (37,640 p.)
Z tego co napisałeś w poście, błąd pokawia się w metodzie addPlayerGun, a tam jest tylko jedno odwołanie do wektora, więc to ono musi powodować bład.
komentarz 24 września 2017 przez Knayder Nałogowiec (37,640 p.)
edycja 24 września 2017 przez Knayder

Poza tym, VEntity to wektor typu wektor, więc dlaczego dodajesz do elementu 4 wskaznik typu Player

VEntity[4].push_back()

komentarz 24 września 2017 przez DonTweaks Nowicjusz (120 p.)
bo playerGun dziedziczy z vEntity takie rzeczy jak np. pozycja czy moveSpeed. Więc playerGun = Entity, tak jakby. playerGun to nie klasa postaci, a tylko broni. W takim razie co powinienem tam wpisać?
komentarz 24 września 2017 przez Knayder Nałogowiec (37,640 p.)

Odwołuję tą wzmiankę: (Pisałem to w nocy, nie myślałem trzeźwo :D)

Poza tym, VEntity to wektor typu wektor, więc dlaczego dodajesz do elementu 4 wskaznik typu Player

VEntity[4].push_back()

Jednak nadal uważam, że skoro błąd wyskakuje w metodzie addPlayerGun(), to po prostu nie ma czwartego elementu.

komentarz 24 września 2017 przez DonTweaks Nowicjusz (120 p.)
W takim razie jak mam dodać ten argument? W innym projekcie zastosowanie takiego czegoś działa dobrze. Tylko nie da się tego jakoś porównać.
komentarz 24 września 2017 przez Knayder Nałogowiec (37,640 p.)
Nie rozumiem dokładnie na jakiej zasadzie to działa, sam musisz pokombinować.

Podobne pytania

+6 głosów
7 odpowiedzi 774 wizyt
0 głosów
1 odpowiedź 329 wizyt
pytanie zadane 5 października 2019 w C i C++ przez Jakub Chomicz 1 Użytkownik (840 p.)
0 głosów
0 odpowiedzi 176 wizyt
pytanie zadane 18 czerwca 2017 w C i C++ przez shout123131 Nowicjusz (120 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...