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

Allegro mapa sie nie wyswietla

Ostatnio zmodyfikowano 2011-03-16 20:12
Autor Wiadomość
malan
» 2011-03-14 22:52:04
Tego map_x++ itp nie ma bo to dopiero dam jak bede chcial poruszyc mapa.
A to wybacz ;p.

Potrzebne mi to a nie easykoder'a bo potem bede mial duzo obrazkow i roznej wielkosci itp.
Klasa. Rozwiązanie Twoich problemów. Klika nocek zarwanych, a klasa na pewno przyda Ci się w późniejszych, tego typu projektach.
P-29147
Bartaz
Temat założony przez niniejszego użytkownika
» 2011-03-15 20:17:24
Moze ktos to poprawic tak zeby dzialalo normalnie bo ja juz sil nie mam...
C/C++
short int mapa[ 4 ][ 2 ] =
{
    1, 1, 1, 1,
    1, 1, 1, 1
};
int map_x, map_y;


for( int x = 0; x < 10; x++ ) //Na osi x wyświetli 100 kafelków na raz
{
    for( int y = 0; y < 10; y++ ) //Na osi y wyświetli 100 kafelków na raz
    {
        if( mapa[ x ][ y ] == 1 ) blit( droga_pionowa, bufor, 0, 0, map_x + y * szerokosc_kafla, map_y + x * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
       
       
       
       
    }
}
P-29159
Bartaz
Temat założony przez niniejszego użytkownika
» 2011-03-16 16:52:14
Dobra dziala juz lepiej tylko jakos dziwnie mapa np jest taka

C/C++
short int mapa[ 5 ][ 5 ] =
{
    0, 0, 0, 0, 0,
    0, 0, 0, 0, 0,
    0, 0, 0, 0, 0,
    0, 0, 0, 0, 0,
    1, 0, 0, 0, 0
};
A wyswietla sie jako taka:
C/C++
short int mapa[ 5 ][ 5 ] =
{
    0, 0, 0, 0, 1,
    0, 0, 0, 0, 0,
    0, 0, 0, 0, 0,
    0, 0, 0, 0, 0,
    0, 0, 0, 0, 0
};

I caly kod:

C/C++
short int mapa[ 5 ][ 5 ] =
{
    0, 0, 0, 0, 0,
    0, 0, 0, 0, 0,
    0, 0, 0, 0, 0,
    0, 0, 0, 0, 0,
    1, 0, 0, 0, 0
};
int map_x = 0, map_y = 0;
for( int x = 0; x < 5; x++ )
{
    for( int y = 0; y < 5; y++ )
    {
        if( mapa[ x ][ y ] == 0 ) blit( droga_pionowa, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
       
        if( mapa[ x ][ y ] == 1 ) blit( droga_pozioma, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
       
    }
}
};
O co chodzi?
P-29197
kamillo121
» 2011-03-16 17:12:51
A nie 
mapa[ y ][ x ]
  ?
P-29205
Bartaz
Temat założony przez niniejszego użytkownika
» 2011-03-16 17:19:24
O dziala ;D
Dzieki ;p
P-29208
Bartaz
Temat założony przez niniejszego użytkownika
» 2011-03-16 20:07:02

EDIT********************************************* JUZ DZIALA POPROSTU ZMINNE MIALEM W ZLYM MIEJSCU I CIAGLE SIE POZYCJA MAPY ZEROWALA.




A wiec znowu mam problem ktory jest dzinwy bo to nie ma prawa nie dzialac xd a polega on na tym ze mapa sie nie przesuwa .
Tutaj kod odpowiedzialny za przesuwanie mapy:

void control_bus() //*************************STERUJE AUTOBUSEM*************************
{
if( key[ KEY_LEFT ] )
{
 kat -= 0.3;  
map_x--;
}
if( key[ KEY_RIGHT ] )
{
 kat += 0.3;
map_x++;
 
}
if( key[ KEY_UP] )
{
map_y--;
 class_autobus.v += 0.01;   

if( key[ KEY_DOWN ] )
{
map_y++;
 class_autobus.v -= 0.007; 
}   
if( class_autobus.v > 7  ) class_autobus.v = 7;      
if( class_autobus.v <- 3 )  class_autobus.v =- 3;
class_autobus.v *= 0.99;
class_autobus.x += class_autobus.v * cos(( kat * M_PI ) / 180.0 );
class_autobus.y += class_autobus.v * sin(( kat * M_PI ) / 180.0 );
};


Tutaj mapa:


short int  mapa[7][7]=
{
7,1,1,1,1,1,7,
0,2,2,2,2,2,0,
0,9,4,5,0,8,0,
7,1,1,1,1,1,7,
2,9,3,2,0,2,2,
2,2,2,2,0,2,2,
2,2,2,2,0,2,2,


};

int map_x=0, map_y=0;
int kaf1x=0;
int kaf1y=0;
for( int x = 0; x < 7; x++ )

for( int y = 0; y < 7; y++ )
{
if( mapa[ y ][ x ] == 0 ) blit( droga_pionowa, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
if( mapa[ y ][ x ] == 1 ) blit( droga_pozioma, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
if( mapa[ y ][ x ] == 2 ) blit( trawa, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
if( mapa[ y ][ x ] == 3 ) blit( przystanek, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
if( mapa[ y ][ x ] == 4 ) blit( bud_1_cz1,bufor,0,0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
if( mapa[ y ][ x ] == 5 ) blit( bud_1_cz2,bufor,0,0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
if( mapa[ y ][ x ] == 6 ) blit( dom, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
if( mapa[ y ][ x ] == 7 ) blit( droga, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
if( mapa[ y ][ x ] == 8 ) blit( parking, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
if( mapa[ y ][ x ] == 9 ) blit( drzewo, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );    

  
}
   
}
};

I caly kod:
C/C++
#include <allegro.h>
#include <math.h>


//**********************ZMIENNE********************************

double kat = 90.0;
int szerokosc_kafla = 130;
int wysokosc_kafla = 130;
int map_x = 0;
int map_y = 0;

//**********************BITMAPY*********************************

BITMAP * bufor = NULL;
BITMAP * autobus = NULL;
BITMAP * droga_pionowa = NULL;
BITMAP * droga_pozioma = NULL;
BITMAP * trawa = NULL;
BITMAP * przystanek = NULL;
BITMAP * bud_1_cz1 = NULL;
BITMAP * bud_1_cz2 = NULL;
BITMAP * dom = NULL;
BITMAP * droga = NULL;
BITMAP * parking = NULL;
BITMAP * drzewo = NULL;

//**********************KLASY***********************************

class cautobus
{
public:
    float x;
    float y;
    float v;
    cautobus();
};
cautobus::cautobus()
{
    x = 500;
    y = 300;
    v = 0;
}

cautobus class_autobus;
//**********************FUNKCJE*********************************

void allegro_start()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT, 1100, 700, 0, 0 );
    clear_to_color( screen, makecol( 7, 128, 128 ) );
};


void load_bitmaps() //*********************LADUJE BITMAPY***************************
{
    autobus = load_bitmap( "autobus.bmp", default_palette );
    droga_pionowa = load_bitmap( "droga_pionowo.bmp", default_palette );
    droga_pozioma = load_bitmap( "droga_poziomo.bmp", default_palette );
    trawa = load_bitmap( "trawa.bmp", default_palette );
    przystanek = load_bitmap( "przystanek.bmp", default_palette );
    bud_1_cz1 = load_bitmap( "bud_1_cz1.bmp", default_palette );
    bud_1_cz2 = load_bitmap( "bud_1_cz2.bmp", default_palette );
    dom = load_bitmap( "dom.bmp", default_palette );
    droga = load_bitmap( "droga.bmp", default_palette );
    parking = load_bitmap( "parking.bmp", default_palette );
    drzewo = load_bitmap( "drzewo.bmp", default_palette );
};

void create_bitmaps() //*******TWORZY BITMAPY******************
{
    bufor = create_bitmap( 1100, 700 );
};

void show_bitmaps() //************POKAZUJE BITMAPY*************
{
   
   
    rotate_sprite( bufor, autobus,( int ) round( class_autobus.x ),( int ) round( class_autobus.y ), ftofix(( kat * 256 ) / 360.0 ) );
    masked_blit( bufor, screen, 0, 0, 0, 0, 1100, 700 );
};
void clear_bufor() //********CZYSCI BUFOR***********************
{
    clear_to_color( bufor, makecol( 70, 70, 70 ) );
};

void control_bus() //*************************STERUJE AUTOBUSEM*************************
{
    if( key[ KEY_LEFT ] )
    {
        kat -= 0.3;
        map_x--;
    }
    if( key[ KEY_RIGHT ] )
    {
        kat += 0.3;
        map_x++;
       
    }
    if( key[ KEY_UP ] )
    {
        map_y--;
        class_autobus.v += 0.01;
    }
    if( key[ KEY_DOWN ] )
    {
        map_y++;
        class_autobus.v -= 0.007;
    }
    if( class_autobus.v > 7 ) class_autobus.v = 7;
   
    if( class_autobus.v <- 3 ) class_autobus.v =- 3;
   
    class_autobus.v *= 0.99;
    class_autobus.x += class_autobus.v * cos(( kat * M_PI ) / 180.0 );
    class_autobus.y += class_autobus.v * sin(( kat * M_PI ) / 180.0 );
};

void map_1() //*********************** WYSWIETLA MAPE 1 *****************************
{
   
    // *********** 0-DROGA PIONOWA *******
    // *********** 1-DROGA POZIOMA *******
    // *********** 2-TRAWA *******
    // *********** 3-PRZYSTANEK *******
    // *********** 4-bud_1_cz1  *******
    // *********** 5-bud_1_cz2  *******
    // *********** 6-DOM *******
    // *********** 7-DROGA *******
    // *********** 8-PARKING *******
    // *********** 9-DRZEWO *******
    short int mapa[ 7 ][ 7 ] =
    {
        7, 1, 1, 1, 1, 1, 7,
        0, 2, 2, 2, 2, 2, 0,
        0, 9, 4, 5, 0, 8, 0,
        7, 1, 1, 1, 1, 1, 7,
        2, 9, 3, 2, 0, 2, 2,
        2, 2, 2, 2, 0, 2, 2,
        2, 2, 2, 2, 0, 2, 2,
       
       
    };
   
    int map_x = 0, map_y = 0;
    int kaf1x = 0;
    int kaf1y = 0;
    for( int x = 0; x < 7; x++ )
    {
        for( int y = 0; y < 7; y++ )
        {
            if( mapa[ y ][ x ] == 0 ) blit( droga_pionowa, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
            if( mapa[ y ][ x ] == 1 ) blit( droga_pozioma, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
            if( mapa[ y ][ x ] == 2 ) blit( trawa, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
            if( mapa[ y ][ x ] == 3 ) blit( przystanek, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
            if( mapa[ y ][ x ] == 4 ) blit( bud_1_cz1, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
            if( mapa[ y ][ x ] == 5 ) blit( bud_1_cz2, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
            if( mapa[ y ][ x ] == 6 ) blit( dom, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
            if( mapa[ y ][ x ] == 7 ) blit( droga, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
            if( mapa[ y ][ x ] == 8 ) blit( parking, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
            if( mapa[ y ][ x ] == 9 ) blit( drzewo, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
           
        }
       
    }
};





int main()
{
    allegro_start();
    create_bitmaps();
    load_bitmaps();
   
   
   
    while( !key[ KEY_ESC ] )
    {
        control_bus();
       
       
        clear_bufor();
        map_1();
        map_x = map_x + 500;
        show_bitmaps();
       
       
       
       
    }
    allegro_exit();
    return 0;
}
END_OF_MAIN();









P-29233
ison
» 2011-03-16 20:10:03
w funkcji map_1 deklarujesz nowe zmienne, które od razu zerujesz
C/C++
int map_x = 0, map_y = 0;

poza tym czy jest sens pisać oddzielną funkcję do wyświetlania mapy dla każdego poziomu? Nie lepiej mieć jedną funkcję która wyświetla mapę wczytaną z pliku?
P-29234
Bartaz
Temat założony przez niniejszego użytkownika
» 2011-03-16 20:12:51
O ison byles szybszy xd
W tej grze bedzie i tak tylko jedna taka wieksza mapa wiec to wystarczy ;p
P-29236
1 « 2 »
Poprzednia strona Strona 2 z 2