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

allegro - tworzenie bitmap

Ostatnio zmodyfikowano 2009-03-31 20:49
Autor Wiadomość
steckel
Temat założony przez niniejszego użytkownika
allegro - tworzenie bitmap
» 2009-03-31 17:00:20
Witam! Rozpocząłem naukę biblioteki graficznej allegro i już mam pierwszy problem:

C/C++
#include <allegro.h>

const int szerokosc = 70;
const int wysokosc = 50;
const int krawedz = 10;

BITMAP ** plansza_bitmap;
int ** plansza_int;

void allegro();
void inicjalizacja();

int main()
{
    allegro();
    readkey();
    allegro_exit();
    return 0;
}
END_OF_MAIN();

void allegro()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 8 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
    set_palette( default_palette );
    clear_to_color( screen, 0 );
}

void inicjalizacja()
{
    plansza_bitmap = new BITMAP *[ szerokosc ];
    for( int a = 0; a < szerokosc; a++ ) plansza_bitmap[ a ] = new BITMAP[ wysokosc ];
   
    for( int a = 0; a < szerokosc; a++ )
    {
        for( int b = 0; b < wysokosc; b++ )
        {
            plansza_bitmap[ a ][ b ] = create_bitmap( krawedz, krawedz );
        }
    }
}
Błędy:

 C:\Users\Patryk\main.cpp In function `void inicjalizacja()':

40 C:\Users\Patryk\main.cpp no match for 'operator=' in '*((*((+(((unsigned int)a) * 4u)) + plansza_bitmap)) + (+(((unsigned int)b) * 64u))) = create_bitmap(10, 10)'

 note C:\Dev-Cpp\include\allegro\gfx.h:262 candidates are: BITMAP& BITMAP::operator=(const BITMAP&)

 C:\Users\Patryk\Makefile.win [Build Error]  [main.o] Error 1
 
//Nie rób 2 takich samych tematów
Patzick
P-5189
Patzick
» 2009-03-31 17:11:20
hmm tak na pierwszy rzut oka z tego co pamiętam bitmapę tworzyło się tak
plansza_bitmap = create_bitmap( szerokosc, wysokosc );
Dodatkowo na początku jak definiujesz bitmapę powinno być (zalecane)
BITMAP * plansza_bitmap = NULL;
Wszystko w kursie jest więc najpierw przestudiuj teorię :)
P-5191
steckel
Temat założony przez niniejszego użytkownika
» 2009-03-31 17:24:11
plansza_bitmap = create_bitmap(szerokosc,wysokosc);
Zamiast 'szerokosc' i 'wysokosc' dałem 'krawedz' i 'krawedz', więc nie powinno być problemów.
BITMAP *plansza_bitmap = NULL;
To też nie działa, poza tym od razu tworzę bitmap. Może ma to jakiś związek z tablicowaniem zmiennych 'BITMAP'?

//edit

Już sobie z tym poradziłem :)
Zamieszczę rozwiązanie, aby inni nie mieli tego samego problemu:
C/C++
//....

BITMAP *** plansza_bitmap;

//....

void inicjalizacja()
{
   
    //....
   
    plansza_bitmap = new BITMAP **[ szerokosc ];
    for( int a = 0; a < szerokosc; a++ ) plansza_bitmap[ a ] = new BITMAP *[ wysokosc ];
   
    //....
   
}

//.....
P-5193
steckel
Temat założony przez niniejszego użytkownika
» 2009-03-31 19:46:38
Teraz mam problem z funkcją wyświetl:
C/C++
#include <allegro.h>

const int szerokosc = 70;
const int wysokosc = 50;
const int krawedz = 10;

BITMAP *** plansza_bitmap;
int ** plansza_int;
BITMAP * kolko;
BITMAP * krzyzyk;
BITMAP * nic;

void allegro();
void inicjalizacja();
void wyswietl();

int main()
{
    allegro();
    inicjalizacja();
    wyswietl();
    readkey();
    allegro_exit();
    return 0;
}
END_OF_MAIN();

void allegro()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 8 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
    set_palette( default_palette );
    clear_to_color( screen, 0 );
}

void inicjalizacja()
{
    kolko = load_bmp( "grafika\kolko.bmp", default_palette );
    nic = load_bmp( "grafika\nic.bmp", default_palette );
    krzyzyk = load_bmp( "grafika\krzyzyk.bmp", default_palette );
    plansza_bitmap = new BITMAP **[ szerokosc ];
    plansza_int = new int *[ szerokosc ];
    for( int a = 0; a < szerokosc; a++ )
    {
        plansza_bitmap[ a ] = new BITMAP *[ wysokosc ];
        plansza_int[ a ] = new int[ wysokosc ];
    }
    for( int a = 0; a < szerokosc; a++ )
    {
        for( int b = 0; b < wysokosc; b++ )
        {
            plansza_bitmap[ a ][ b ] = nic;
            plansza_int[ a ][ b ] = 0;
        }
    }
}

void wyswietl()
{
    for( int a = 0; a < szerokosc; a++ )
    {
        for( int b = 0; b < wysokosc; b++ )
        {
            blit( plansza_bitmap[ a ][ b ], screen, 0, 0, 50 + a * krawedz, 50 + b * krawedz, krawedz, krawedz );
        }
    }
}

Błędy:


40:18 C:\Users\Patryk\Documents\C++\projekty\allegro\kolko i krzyzyk\main.cpp [Warning] unknown escape sequence '\k'

42:20 C:\Users\Patryk\Documents\C++\projekty\allegro\kolko i krzyzyk\main.cpp [Warning] unknown escape sequence '\k'



//edit

To był taki głupi błąd, że aż śmieszny <lol>
C/C++
kolko = load_bmp( "grafika/kolko.bmp", default_palette );
wystarczyło dać
/
 zamiast tej drugiej kreski :P

PS: Pietrzuch, przypomnij mi jak się formatowało post w kod z c++?
P-5201
pekfos
» 2009-03-31 20:01:02
kolko = load_bmp( "grafika\kolko.bmp", default_palette );
zamień na
kolko = load_bmp( "grafika/kolko.bmp", default_palette );
to przynajmniej warningów nie będzie:)
P-5203
steckel
Temat założony przez niniejszego użytkownika
» 2009-03-31 20:18:17
Wiem, warningi to mały pikuś, gorzej, że z pliku wtedy nie czytał :P
P-5207
DeBugger
» 2009-03-31 20:49:23
[ code src="c++" ] [ / code ]
P-5211
« 1 »
  Strona 1 z 1