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

Broń, strzelanie, platformówka

0 głosów
213 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,660 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,660 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,660 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,660 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,660 p.)
Nie rozumiem dokładnie na jakiej zasadzie to działa, sam musisz pokombinować.

Podobne pytania

+7 głosów
7 odpowiedzi 471 wizyt
0 głosów
0 odpowiedzi 82 wizyt
pytanie zadane 18 czerwca 2017 w C i C++ przez shout123131 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 109 wizyt
pytanie zadane 23 czerwca 2016 w C i C++ przez Jakub Chomicz Początkujący (380 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

66,503 zapytań

113,269 odpowiedzi

239,876 komentarzy

46,641 pasjonatów

Przeglądających: 268
Pasjonatów: 9 Gości: 259

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...