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

Funkcja ze zbieraniem przedmiotów nie działa

Object Storage Arubacloud
0 głosów
165 wizyt
pytanie zadane 1 listopada 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)
void Player::drop(RenderWindow &window, float what, float howMany, string name)
{
    RectangleShape items(Vector2f(20, 20));
    fstream file;

    window.draw(items);
    if(Mcollision(window, items))
    {
        if(Mouse::isButtonPressed(Mouse::Right))
        {
            what = what + howMany;

            file.open("C:/Game/" + login + "/Player/Saves/Items" + name);
            file << what;
            file.close();

            cout << what;
        }
    }
}

Nie wiem czemu nie wywala do pliku wartości "what" nie nie dodaje what do howMany. tylko wypisuje howMany

2 odpowiedzi

0 głosów
odpowiedź 1 listopada 2015 przez draghan VIP (106,230 p.)
Przy dodawaniu program powinien zachowywać się poprawnie, więc stawiam na błędne wywołanie tej funkcji.

Sprawdź sobie jeszcze wydrukiem testowym zaraz na początku kodu funkcji, jakie wartości parametrów dostajesz.
komentarz 1 listopada 2015 przez Avernis Nałogowiec (27,400 p.)
edycja 1 listopada 2015 przez Avernis

używam tego w taki sposób. najpierw konstruktor: 

Player p(Vector2f(0, 0), Vector2f(25, 25));

a potem funkcja: 

        else if(wolfStruct.WolfHP[0] < 0)
        {
            p.drop(window, playerStruct.talons, 12, "talons");
        }

 

komentarz 2 listopada 2015 przez draghan VIP (106,230 p.)

Daj przed wywołaniem metody drop() wydruk

cout<<playerStruct.talons<<endl;

i powiedz, co Ci się tam pokazało.

komentarz 2 listopada 2015 przez Avernis Nałogowiec (27,400 p.)
już to naprawiłem, wystarczyło aby zwracało wynik i przekazywało go do zmiennej talons.

Błąd był w tym że dodawało. np. kiedy talons = 0 how many 12 to po prostu zwiększało wartość talons o 12, ale nie zapisywało
komentarz 2 listopada 2015 przez draghan VIP (106,230 p.)

Nie zwiększało wartości talons, bo nie podawałeś do funkcji wskaźnika/referencji - modyfikowana była zmienna lokalna what w metodzie. ;)

Mogłeś od razu dokładnie napisać, o co Ci chodzi - ktoś zwróciłby na to uwagę i miałbyś szybciej rozwiązanie swojego problemu. :)

Anyway - cieszę się, że sam znalazłeś wyjście. Pozdrawiam. :)

0 głosów
odpowiedź 1 listopada 2015 przez adrian17 Ekspert (344,860 p.)
edycja 2 listopada 2015 przez adrian17

Nie otwierasz pliku w trybie zapisu.

komentarz 2 listopada 2015 przez draghan VIP (106,230 p.)

Obiekty fstream mają domyślny parametr

 ios_base::openmode mode = ios_base::in | ios_base::out

zarówno w konstruktorze, jak i w metodzie open(), więc ta opcja odpada. ;)

komentarz 2 listopada 2015 przez adrian17 Ekspert (344,860 p.)
Fakt, mój błąd, zawsze używałem tylko ifstream/ofstream i miałem złe wyobrażenia do domyślnego zachowania fstreama.

Edit: kurczę, nie tylko nie mogę usunąć odpowiedzi, ale nawet nie mogę sobie dać głosu w dół.
komentarz 2 listopada 2015 przez draghan VIP (106,230 p.)
Przestań, każdy ma prawo się pomylić. :)

Podobne pytania

0 głosów
2 odpowiedzi 111 wizyt
pytanie zadane 4 kwietnia 2017 w C i C++ przez Milesq Nałogowiec (32,020 p.)
+1 głos
3 odpowiedzi 194 wizyt
pytanie zadane 27 grudnia 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)
0 głosów
1 odpowiedź 170 wizyt
pytanie zadane 1 grudnia 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)

92,579 zapytań

141,429 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!

...