Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Problem ze zwracaniem vectora

Ostatnio zmodyfikowano 2013-02-14 12:16
Autor Wiadomość
pjpeg_objected
Temat założony przez niniejszego użytkownika
[SFML] Problem ze zwracaniem vectora
» 2013-02-14 08:22:38
Witam. Piszę menadżer zasobów do mojej gry i utknąłem na zwracaniu vectora przechowującego sf::Image. Otóż przekazuje funkcje GetImage(string filename) do klasy gracza a potem do klasy mapy poprzez referencję. Problem tkwi w tym, że mam dostęp tylko do ostatniego elementu vectora. Czyli w tym przypadku

C/C++
player.Initialize( imageManager.GetImage( "Player.bmp" );
map.Initialize( imageManager.GetImage( "Tile.bmp" );

tylko mapa wyświetla dobry obraz. Mogę to źle rozumieć ale wydaje mi się, że skoro przy każdym ładowaniu obrazu zapisuję go do następnego elementu vectora to powinien on dalej istnieć i być dostępny z poziomu klasy gracza? Oto kod:

C/C++
#ifndef IMAGEMANAGER_H
#define IMAGEMANAGER_H
#include <SFML/Graphics.hpp>
#include <string>
#include <vector>

using namespace std;

class ImageManager
{
public:
    ImageManager() { c =- 1; }
    sf::Image & GetImage( string filename ) {
        c++;
        Image.LoadFromFile( filename );
        ImgVector.push_back( Image );
        return ImgVector[ c ];
    }
private:
    int c;
    vector < sf::Image > ImgVector;
    sf::Image Image;
};

#endif // IMAGEMANAGER_H

Czytałem, że można zastosować std::map ale czy nie da się zrobić za pomocą tylko vectora? Z góry dziękuje za odpowiedź.
P-76254
RazzorFlame
» 2013-02-14 10:08:05
Chociaż nie umiem zbytnio wytłumaczyć dlaczego vector szwankuje to powiem ci że miałem ostatnio taki sam problem, a w końcu przeniosłem się na std::map. Przydałoby się też w twoim menedżerze dodać opcje która sprawdza, czy już podany obrazek został załadowany.

c =- 1
(btw twój parser DejaVu znowu skleił znaki). po co na -1? Daj 0 i bedzie wiadomo że jest 0 elementów. A w ogóle, DejaVu podawał już przykładowy kod takowego menedżera (pisałem menadżera ale mnie google poprawia?) co prawda nie stosuje on tam klasy ale jest bardzo fajnie napisane, na którym się też wzorowałem (Nie bój sie DejaVu nic a nic nie skopiowałem ^^). Mam pytanko do Admininstratorów: std::map to element STL, nie ma go w dokumentacji ani w kursie STL, przydałoby sie. Jeśli to z braku czasu to sorki.
P-76257
pjpeg_objected
Temat założony przez niniejszego użytkownika
» 2013-02-14 12:14:30
Zmienna c przechowuje obecnie zwracany indeks, więc ustawiam ją na -1 żeby przy pierwszym pobraniu obrazu indeks był zerowy, chyba że o czymś nie wiem i w vectorze indeksy nie są liczone od 0. Chciałem to zrobić tylko za pomocą Vectora bo dopiero się zagłębiam w projektowanie gry z użyciem menadżerów itp. i nie chce sobię mieszać w głowie dodatkowymi pojęciami.
P-76261
RazzorFlame
» 2013-02-14 12:16:32
Offix zaraz edytne posta i dam ci link, który ci coś uświadomi.

EDIT:
Link: [SFML] Vector z obrazkami
P-76262
« 1 »
  Strona 1 z 1