Wywołanie elementu klasy wewnątrz vectora.
Ostatnio zmodyfikowano 2013-04-29 20:54
sinoo Temat założony przez niniejszego użytkownika |
Wywołanie elementu klasy wewnątrz vectora. » 2013-04-29 19:26:33 Witam, problem wygląda tak: W jaki sposób mogę użyć zmiennej, lub funkcji w obiekcie, których zbiór jest wewnątrz vectora? Dla wyjaśnienia kod, w którym chcę to użyć(klasa Obiekt w vectorze vObiekty w klasie World): #include <SFML\Graphics.hpp> #include <vector>
class Obiekt { protected: int xPosition; int yPosition; int ID; sf::Sprite Sprajt; public: Obiekt( int id, int xPos, int yPos, sf::Image & img ) : xPosition( xPos ) , yPosition( yPos ) { Sprajt.SetImage( img ); } bool Colision( int ID ) { } };
class Hero : public Obiekt { public: Hero( int id, int xPos, int yPos, sf::Image & img ) : Obiekt( id, xPos, yPos, img ) { } void GoLeft() { } void GoRight() { } void GoUp() { } void GoDown() { } };
class World { public: unsigned char MapID; std::vector < Obiekt > vObiekty; World( unsigned char mapID ) : MapID( mapID ) { LoadMap( MapID ); } void AddObiect( int xPos, int yPos, sf::Image & IMG ) { vObiekty.push_back( Obiekt( vObiekty.size() - 1, xPos, yPos, IMG ) ); } void DelObiect( int ID ) { vObiekty.erase( vObiekty.begin() + ID ); } void LoadMap( unsigned char MapID ) { switch( MapID ) { case 1: break; default: break; } } };
int main() { sf::RenderWindow AppWin( sf::VideoMode( 800, 600, 32 ), "Game window title" ); sf::Image blok1; sf::Image heroIMG; blok1.LoadFromFile( "blok1.jpg" ); heroIMG.LoadFromFile( "hero.png" ); Hero hero( 0, 100, 200, heroIMG ); World world1( 1 ); world1.LoadMap( 1 ); while( AppWin.IsOpened() ) { sf::Event Event; while( AppWin.GetEvent( Event ) ) { if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::W ) hero.GoUp(); if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::S ) hero.GoDown(); if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::A ) hero.GoLeft(); if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::D ) hero.GoRight(); if( Event.Type == sf::Event::Closed ) AppWin.Close(); } AppWin.Clear(); AppWin.Display(); } } Konkretnie chodzi mi o wyrysowanie funkcją AppWin.Draw() Sprajta znajdującego się w klasie Obiekt, która z kolei jest zadeklarowana w vectorze vObiekty klasy World. |
|
pekfos |
» 2013-04-29 19:39:03 Pętlą. |
|
sinoo Temat założony przez niniejszego użytkownika |
» 2013-04-29 19:53:40 Tak, wiem - w pętl wywołam wszystkie, ale jak wywołać jakikolwiek? WinApp.Draw( world1.vObiekty.Sprajt )
chodzi mi tu ogólnie o użycie jakiejś metody, lub zmiennej obiektu, który jest wewnątrz vectora. |
|
pekfos |
» 2013-04-29 20:02:34 wektor[ indeks ].zmienna; wektor.at( indeks ).zmienna; iterator->zmienna;
|
|
sinoo Temat założony przez niniejszego użytkownika |
» 2013-04-29 20:54:22 O to mi właśnie chodziło. Wielkie dzięki :) |
|
« 1 » |