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

Broń, strzelanie, platformówka

Object Storage Arubacloud
0 głosów
327 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 784 wizyt
0 głosów
1 odpowiedź 362 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 177 wizyt
pytanie zadane 18 czerwca 2017 w C i C++ przez shout123131 Nowicjusz (120 p.)

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

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

...