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

[Allegro] Co jest nie tak?

Ostatnio zmodyfikowano 2011-02-08 20:49
Autor Wiadomość
maciejo
Temat założony przez niniejszego użytkownika
[Allegro] Co jest nie tak?
» 2011-02-08 20:05:41
Mam problem w kodzie a konkretnie w tej linijce :
if( strzal == true ) { blit( pocisk, bufor, 0, 0, strzalka.x, strzalka.y, 32, 32 ); strzalka.x += 1; }
wszystko się kompiluje , wartość zmiennej strzalka.x się powiększa ale jest problem z funkcją blit :/ po prostu nic się nie wyświetla

PS. Jeśli znowu zrobiłem jakiś głupi błąd to sorry ale nie wiem co źle robie ... POMOCYY
P-28054
pekfos
» 2011-02-08 20:06:58
daj więcej kodu
P-28055
maciejo
Temat założony przez niniejszego użytkownika
» 2011-02-08 20:23:20
main.cpp
C/C++
#include <allegro.h>
#include "pliki.hpp"

BITMAP * bufor = NULL;
BITMAP * gracz = NULL;
BITMAP * n1 = NULL;
BITMAP * pocisk = NULL;

short int mapa[ 19 ][ 25 ] =
{
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};
void wys_mape()
{
    for( int x = 0; x < 25; x++ )
    {
        for( int y = 0; y < 19; y++ )
        {
            if( mapa[ y ][ x ] == 1 ) blit( n1, bufor, 0, 0, x * 32, y * 32, 32, 32 );
           
        }
    }
};

int main()
{
    allegro_init();
    install_keyboard();
   
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 608, 0, 0 );
   
    bufor = create_bitmap( 800, 608 );
    gracz = load_bmp( "gracz.bmp", default_palette );
    n1 = load_bmp( "1.bmp", default_palette );
    pocisk = load_bmp( "pocisk.bmp", default_palette );
   
    grcz player;
    pcsk strzalka;
   
    player.x = 50;
    player.y = 448;
    strzalka.x = 50;
    strzalka.y = 440;
    clear_to_color( bufor, makecol( 150, 150, 150 ) );
    bool skok = false;
    int skakanie = 0;
    bool strzal = false;
   
    while( !key[ KEY_ESC ] )
    {
        if( key[ KEY_LEFT ] && getpixel( bufor, player.x - 1, player.y ) != makecol( 128, 64, 0 ) && getpixel( bufor, player.x - 1, player.y + 31 ) != makecol( 128, 64, 0 ) ) player.x -= 2;
       
        if( key[ KEY_RIGHT ] && getpixel( bufor, player.x + 33, player.y ) != makecol( 128, 64, 0 ) && getpixel( bufor, player.x + 33, player.y + 31 ) != makecol( 128, 64, 0 ) ) player.x += 2;
       
        if( key[ KEY_UP ] && getpixel( bufor, player.x + 16, player.y + 33 ) == makecol( 128, 64, 0 ) ) { skok = true; skakanie = 20; }
        if( getpixel( bufor, player.x + 16, player.y + 33 ) != makecol( 128, 64, 0 ) && skok == false ) { player.y += 2; }
        if( skok == true ) { if( skakanie == 0 ) { skok = false; } else { player.y -= 5; skakanie -= 1; } }
        if( key[ KEY_S ] && strzal == false ) { strzal = true; strzalka.x = player.x + 16; strzalka.y = player.y + 16; }
        if( strzal == true ) { blit( pocisk, bufor, 0, 0, strzalka.x, strzalka.y, 32, 32 ); strzalka.x += 1; }
        if( strzal == true && getpixel( bufor, strzalka.x + 33, strzalka.y + 14 ) != makecol( 150, 150, 150 ) ) { strzal = false; }
       
        clear_to_color( bufor, makecol( 150, 150, 150 ) );
       
        wys_mape();
       
        blit( gracz, bufor, 0, 0, player.x, player.y, 32, 32 );
       
        textprintf_ex( bufor, font, 10, 10, makecol( 255, 0, 0 ), - 1, "player.x : %d", player.x );
        textprintf_ex( bufor, font, 10, 20, makecol( 255, 0, 0 ), - 1, "player.y : %d", player.y );
        textprintf_ex( bufor, font, 10, 30, makecol( 255, 0, 0 ), - 1, "strzalka.x : %d", strzalka.x );
        textprintf_ex( bufor, font, 10, 40, makecol( 255, 0, 0 ), - 1, "strzalka.y : %d", strzalka.y );
       
       
        blit( bufor, screen, 0, 0, 0, 0, 800, 608 );
        rest( 10 );
    }
    destroy_bitmap( bufor );
    destroy_bitmap( gracz );
    destroy_bitmap( n1 );
    destroy_bitmap( pocisk );
   
    return 0;
}
END_OF_MAIN();
pliki.hpp
C/C++
#ifndef pliki_hpp
#define pliki_hpp

class grcz
{
public:
    short x, y;
};
class pcsk
{
public:
    short x, y;
};

#endif
P-28056
WiecznyWem
» 2011-02-08 20:31:08
A może się wyświetla, tylko Ty nie masz prawa tego zdążyć dostrzec? Upewnij się, że zmienna strzał zmienia swoją wartość w zależności od tego jak ty chcesz.

Btw, a w dobrym miejscu czyścisz bufor? Ja bym to robił na początku pętli, albo zaraz PO wyświetleniu bufora
P-28058
maciejo
Temat założony przez niniejszego użytkownika
» 2011-02-08 20:49:29
Dzięki :D
Chyba nie powinno się kodzić jak się ma ferie bo wtedy takie proste błędy wychodzą :D
P-28061
« 1 »
  Strona 1 z 1