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

[C++][Allegro 5] Problemy ze zmienną statyczną.

Ostatnio zmodyfikowano 2014-07-28 19:55
Autor Wiadomość
Monika90
» 2014-07-28 16:14:43
chodziło o to że masz zastąpić wszystkie odwołania do BlokTekstura funkcją zwracającą teksturę
P-114576
frogi16
Temat założony przez niniejszego użytkownika
» 2014-07-28 16:15:23
(W main)
C/C++
for( int b = 0; b < IloscBlokowKolidujacych; b++ )
{
    TablicaWskBlokKolidujacy[ b ]->RysujSie();
}

C/C++
#ifndef BLOKKOLIDUJACY_H
#define BLOKKOLIDUJACY_H
#include <allegro5/allegro.h>
#include <allegro5/allegro_image.h>

class BlokKolidujacy
{
public:
    static ALLEGRO_BITMAP * BlokTekstura;
    BlokKolidujacy( int PoczatkowyX, int PoczatkowyY );
    ~BlokKolidujacy();
    void RysujSie();
protected:
private:
    ALLEGRO_BITMAP * Tekstura() const;
    int x;
    int y;
};

#endif // BLOKKOLIDUJACY_H

C/C++
#include "BlokKolidujacy.h"
#include <allegro5/allegro.h>
#include <allegro5/allegro_image.h>

BlokKolidujacy::BlokKolidujacy( int PoczatkowyX, int PoczatkowyY )
{
    x = PoczatkowyX;
    y = PoczatkowyY;
}

BlokKolidujacy::~BlokKolidujacy()
{
    //dtor
}

void BlokKolidujacy::RysujSie()
{
    al_draw_bitmap( BlokTekstura, x, y, 0 );
}

ALLEGRO_BITMAP * BlokKolidujacy::Tekstura() const
{
    static ALLEGRO_BITMAP * BlokTekstura = al_load_bitmap( "Bloczek.png" );
    return BlokTekstura;
}
P-114577
Monika90
» 2014-07-28 16:18:17
zamiast
al_draw_bitmap( BlokTekstura, x, y, 0 );
 daj
al_draw_bitmap( Tekstura(), x, y, 0 );
P-114578
pekfos
» 2014-07-28 16:20:46
C/C++
static ALLEGRO_BITMAP * BlokTekstura;
..i to wywal. O ile chcesz robić to na funkcjach, na samej zmiennej też się da i pisałem jak.
P-114580
frogi16
Temat założony przez niniejszego użytkownika
» 2014-07-28 16:30:44
Chyba rozumiem, zamiast odnosić się do zmiennej mam się odnosić do funkcji zwracającej tą zmienną. Ale za to mam ciemny ekran w aplikacji i nic nie działa, nawet esc normalnie wyłączający aplikację. Nie wiem czym to jest spowodowane, może po prostu zrobię to łatwiej, zmienna nie będzie statyczna i po prostu będzie się przypisywała do niej tekstura w konstruktorze. Będzie łatwiej.
P-114581
pekfos
» 2014-07-28 19:55:55
Nie prościej jak mówiłem..?
C/C++
class ABC
{
    //tak (1):
public:
    static bitmapa * texture;
   
    //lub tak (2):
   
private:
    static bitmapa * texture2;
public:
    static void loadTexture( const char * tex )
    {
        texture2 = load_texture( tex );
    }
};

bitmapa * ABC::texture;
bitmapa * ABC::texture2;

int main()
{
    //inicjacja allegro
   
    //sposob #1
    ABC::texture = load_texture( "abc.123" );
   
    //sposob #2
    ABC::loadTexture( "abc.123" );
}
Nazwy się ofc nie zgadzają. Wskaźniki na tekstury przed załadowaniem są wyzerowane, więc uważaj na to.
P-114587
1 « 2 »
Poprzednia strona Strona 2 z 2