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

[SFML, C++] Problem z kafelkami i zapisywanie koordów obiektów

Ostatnio zmodyfikowano 2011-08-19 11:31
Autor Wiadomość
Thud
» 2011-08-18 17:09:46
@Dark:
Nie do końca rozumiem Twoje pytanie. Chcesz po prostu aby obiekt pewnej klasy posiadał jakieś koordynaty?
C/C++
class Class
{
private:
    Coordinate CoordinateOfObject;
public:
    void DoSth();
};
P-39430
Dark
Temat założony przez niniejszego użytkownika
» 2011-08-18 17:15:33
Mam obrazek i chcę go gdzieś umieścić aby później wykorzystać to do kolizji itp.
P-39431
Thud
» 2011-08-18 17:20:23
No to tworzysz specjalną klasę posiadającą koordynaty i jakiś wskaźnik do obrazka, żeby nie ładować go milion razy.
P-39432
Dark
Temat założony przez niniejszego użytkownika
» 2011-08-18 17:37:08
Z wieloma obiektami też da radę z klasą?, np. chcę zrobić wiele kafelków po których będzie skakał obiekt lub kilka obiektów( przeciwnicy i ludzik).

@edit myślę że też trzeba zrobić wtedy obiekt klasy jako tablicę
P-39434
Thud
» 2011-08-18 18:05:28
Mam jeszcze lepszy pomysł.
Zara wyjaśnię.
P-39435
Dark
Temat założony przez niniejszego użytkownika
» 2011-08-18 18:21:15
Dalej mam tą przestrzeń między sprite'ami, co tu począć :\
P-39439
Thud
» 2011-08-18 18:25:13
Masz tu:
C/C++
#include <iostream>
#include <vector>
struct Point
{
    int X, Y;
};
class Coordinate
{
    int Width;
    int Height;
public:
    Point ObjectPoint;
    Coordinate( int X, int Y, int W, int H )
    {
        Width = W;
        Height = H;
        ObjectPoint.X = X;
        ObjectPoint.Y = Y;
    }
};
class Image
{
    //Sth
};
class Class
{
private:
    Image ImageOfObject;
    std::vector < Coordinate >* VectorPointer;
public:
    void SetVector( std::vector < Coordinate >* Pointer )
    {
        VectorPointer = Pointer;
    }
    void DrawAll()
    {
        //...
    }
    void AddImage( Coordinate CoordinateOfImage )
    {
        VectorPointer->push_back( CoordinateOfImage );
    }
    //etc...
};
int main()
{
    Class Object;
    std::vector < Coordinate > Coordinates;
    Object.SetVector( & Coordinates );
    Object.AddImage( Coordinate( 0, 0, 0, 0 ) );
    Object.AddImage( Coordinate( 1, 1, 1, 1 ) );
    Object.AddImage( Coordinate( 2, 2, 2, 2 ) );
    std::vector < Coordinate >::iterator Iterator;
    for( Iterator = Coordinates.begin(); Iterator != Coordinates.end(); Iterator++ )
    {
        std::cout << Iterator->ObjectPoint.X << std::endl; //Je¿eli to dzia³a to reszta te¿
    }
}
Zastosowałem tutaj klasę zawierającą wskaźnik do vectora a także obrazek. Więc możesz teraz przypisać jednemu Sprite'owi wiele różnych punktów. Możesz też zastosować zwykłe tablice ja chcesz.

Co do kafli być może nad tym pomyślę.

//Edit...
Mały błąd komplikujący kod. Zara poprawka.
//Edit...
Poprawiłem.
P-39440
Dark
Temat założony przez niniejszego użytkownika
» 2011-08-18 18:54:38
Kod działa( chociaż to czysty C++ ), lecz dalej nie mam rozwiązanego problemu z 1px przestrzenią.

@edit
Nie ustawiałem żadnej ramki więc powinna tablica się wyświetlić bez żadnych odstępów :\

@edit
A jak w tym kodzie dodawać obrazy i sprite'y?
P-39442
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona