Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Bartaz

Strony: [1]
1
Matematyka i fizyka / Odp: C++ allegro mapa kafelkowa.
« dnia: Marzec 18, 2011, 19:59:37 »
Dobra udalo sie zeby to sie wogole kompilowalo ale jak ja mam ta mape teraz przesowac?
Tym?
view_x = SpriteMgr["autobus"].x - Video.getWidth()*0.5;
view_y = SpriteMgr["autobus"].y - Video.getHeight()*0.5;
Ale u mnie nie ma czegos takiego jak SpriteMgr["autobus"].
Nie jestem dobry z allegro ani z c++.

2
Matematyka i fizyka / Odp: C++ allegro mapa kafelkowa.
« dnia: Marzec 18, 2011, 16:12:19 »
Dobra to daje kod ktory zamiast ponad 300 linijek ma 60 w tym mozna sie raczejm doczytac jest tylko jeden kafelek do wyswietlenia i sterowanie autobusem bez innych rzeczy.

I jeszcze jeden na wklej.pl zeby mozna bylo lepiej sie doczytac..
http://wklej.org/id/495098/
I pliki exe i cpp do sciagniecia ale tego mniejszego kodu.
http://www.speedyshare.com/files/27469663/Mapa.rar

Wiec jak mozesz wklep tam ten swoj kod ;p
#include <allegro.h>
#include <math.h>




float autobus_x=300;
float autobus_y=300;
float autobus_v=0;




int map_x=0;
int map_y=0;
float kat=180.0;
BITMAP *bufor=NULL;
BITMAP *trawa=NULL;
BITMAP *autobus=NULL;

int main()
{
allegro_init();
install_keyboard();
set_color_depth( 32 );
set_gfx_mode( GFX_AUTODETECT, 1000, 700, 0, 0 );
clear_to_color( screen, makecol( 7, 128, 128 ) );


bufor=create_bitmap(1000,700);

trawa=load_bitmap("trawa.bmp",default_palette);
autobus=load_bitmap("autobus.bmp",default_palette);
int  mapa[5][5]=
{
0,0,0,0,0,
0,0,0,0,0,
0,0,0,0,0,
0,0,0,0,0,
0,0,0,0,0


};



int x;
int y;
int szerokosc_kafla=130;
int wysokosc_kafla=130;

while(!key[KEY_ESC])
{

//STEROWANIE AUTOBUSEM*************             
if( key[ KEY_LEFT ] ) kat -= 0.3;

if( key[ KEY_RIGHT ] )
{
 kat += 0.3;
}
if( key[KEY_UP] )  autobus_v += 0.007;

if( key[ KEY_DOWN ] ) autobus_v -= 0.007;
if( autobus_v > 15  ) autobus_v = 7;       
if( autobus_v <- 3 )  autobus_v =- 3;
autobus_v *= 0.99;
autobus_x += autobus_v * cos(( kat * M_PI ) / 180.0 );
autobus_y += autobus_v * sin(( kat * M_PI ) / 180.0 );

// **********************************
   
clear_to_color(bufor,makecol(70,70,70));



//*****************************
for(  x = 0; x < 5; x++ )

for(  y = 0; y < 5; y++ )
{
if( mapa[ y ][ x ] == 0 ) blit( trawa, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
}
}
//******************************


rotate_sprite( bufor, autobus,( int ) round( autobus_x ),( int ) round( autobus_y ),ftofix(( kat * 256 ) / 360.0 ) );
 
blit(bufor,screen,0,0,0,0,1000,700);

}
allegro_exit();
return 0;
}
END_OF_MAIN();

3
Matematyka i fizyka / Odp: C++ allegro mapa kafelkowa.
« dnia: Marzec 18, 2011, 13:05:14 »
Dziala znaczy kompiluje sie wszystko oprocz tego :
  canvas.draw( &camera, droga, 0, 0, x*szerokosc_kafla, y*wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); // Kafel
        // ...
        canvas.draw( &camera, autobus, (int)round(class_autobus.x), (int)round(class_autobus.y), ftofix(( kat*256 )/360.0) );// Autobus

Bledy to:
202 C:\Documents and Settings\Admninistrator\Pulpit\Bus simulator by bartaz\main.cpp `canvas' undeclared (first use this function)
i jakies warningi ale to juz nie wazne.

To nie jest czasem allegro 5?

A kod wyglada teraz tak :
#include <allegro.h>
#include <math.h>
namespace gfx
{
    class Camera
    {
    public:
        Camera() : m_viewx( 0 ), m_viewy( 0 ) {}

        __inline void setView( float x, float y )
       {
            m_viewx = x;
            m_viewy = y;
       }

        __inline float getViewX() const { return m_viewx; }
        __inline float getViewY() const { return m_viewy; }

    private:
        float m_viewx, m_viewy;
    };
}
// **********************************
namespace gfx
{
    class Canvas2D
    {
    public:
        Canvas2D( BITMAP *target ) : m_target( target ) {}

       void draw( const gfx::Camera *cam, BITMAP *src, int srcx, int srcy, int destx, int desty, int w, int h )
       {
            if( cam != 0 )
            {
                destx -= (int)cam->getViewX();
                desty -= (int)cam->getViewY();
            }

            masked_blit( src, m_target, srcx, srcy, destx, desty, w, h );
       }

       void draw( const gfx::Camera *cam, BITMAP *src, int destx, int desty, fixed angle )
       {
            if( cam != 0 )
            {
                destx -= (int)cam->getViewX();
                desty -= (int)cam->getViewY();
            }

            rotate_sprite( m_target, src, destx, desty, angle );
       }

        __inline void setTarget( BITMAP *target ) { m_target = target; }

        __inline BITMAP* getTarget() const { return m_target; }

    private:
        BITMAP *m_target;
    };
}

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

double kat = 90.0;
double kat_p= 90.0;
int szerokosc_kafla = 130;
int wysokosc_kafla = 130;
int  map_x=0, map_y=0;
bool drzwi=false;
float view_x = 0, view_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;
BITMAP *czlowiek=NULL;
BITMAP *przystanek_kolizja=NULL;
BITMAP *sam=NULL;
//**********************KLASY***********************************

class cautobus
{
public:
float x;
float y;
float v;
cautobus();
};
cautobus::cautobus()
{
x=500;
y=300;
v=0;
x = this->x - view_x;
y = this->y - view_y;

}

class pasazerowie
{
public:
float x;
float y;


pasazerowie();
};
pasazerowie::pasazerowie()
{
x=370;
y=570;
x = this->x - view_x;
y = this->y - view_y;

}                         
   
class pojazdy
{
public:
float x;
float y;
pojazdy();
};
pojazdy::pojazdy()
{
x=300;
y=10;
x = this->x - view_x;
y = this->y - view_y;

}             
                 

cautobus class_autobus;
pasazerowie pas;
pojazdy car;
//**********************FUNKCJE*********************************

void control_cars()
{
if(car.x>20)
{
car.x=car.x-0.9;
}
if(car.x<20)
{
kat_p=180;
car.y=car.y+0.7;



}
};


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);
czlowiek=load_bitmap("czlowiek.bmp",default_palette);
sam=load_bitmap("car.bmp",default_palette);
};

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

};

void show_bitmaps() //************POKAZUJE BITMAPY*************
{
masked_blit(przystanek_kolizja,bufor,0,0,260,520,130,130);
masked_blit(czlowiek,bufor,0,0,pas.x,pas.y,10,10);
rotate_sprite(bufor,sam,(int) round(car.x),( int ) round (car.y) , ftofix((kat_p *256 ) / 360.0));
 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 ] )
{
if(class_autobus.v>0)
{
                     
 kat -= 0.3; 
  if(class_autobus.v<0.05)
{
kat += 0.2;
}
}
}
if( key[ KEY_RIGHT ] )
{
if(class_autobus.v>0)
{
kat += 0.3;
if(class_autobus.v<0.05)
{
kat -= 0.2;
}
 
}
 
}


if( key[KEY_UP] )
{

 class_autobus.v += 0.007;   

if( key[ KEY_DOWN ] )
{

 class_autobus.v -= 0.007; 
}   
if(key[KEY_R])
{
drzwi=true;
class_autobus.v=0;
}
if(key[KEY_T])
{
drzwi=false;
}
if( class_autobus.v > 15  ) 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 *******
int  mapa[10][10]=
{
7,1,1,1,1,1,7,1,1,1,
0,2,2,2,2,2,0,2,2,2,
0,9,4,5,0,8,0,2,2,2,
7,1,1,1,1,1,7,1,1,1,
2,6,3,2,0,2,2,2,2,2,
2,2,2,2,0,2,2,2,2,2,
2,2,2,2,0,2,2,2,2,2,
2,2,2,2,0,2,2,2,2,2,
2,2,2,2,0,2,2,2,2,2


};


int kaf1x=0;
int kaf1y=0;
for( int x = 0; x < 10; x++ )

for( int y = 0; y < 10; 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 );     

   
}
   
}
};

void color_bitmap() //****************** KOLORUJE BITMAPY *******************
{
clear_to_color(przystanek_kolizja,makecol(255,0,255));
};

bool kolizja(int x1,int y1,int s1,int w1,int x2,int y2,int s2,int w2) // ******** KOLIZJA *********
{
     if( x2<=x1+s1 && x2>x1 && y2>=y1 && y2<=y1+w1) return true; else
     if( x2<=x1+s1 && x2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true; else
     if( x2+s2<=x1+s1 && x2+s2>x1 && y2>=y1 && y2<=y1+w1) return true; else
     if( x2+s2<=x1+s1 && x2+s2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true;
     else return false;
}; 

void check_collisions() // ********************** SPRAWDZA KOLIZJE MIEDZY OBIEKTAMI **************
{
if(kolizja(class_autobus.x,class_autobus.y,130,130,pas.x,pas.y,10,10)==true)
{
if(drzwi==true)
{
pas.x=pas.x+7000; //************ PASAZER WSIADL NA PRZYSTANKU 1 *******************************
}
}
if(kolizja(class_autobus.x,class_autobus.y,130,130,car.x,car.y,35,60)==true)
{
allegro_message("pierdolles w samochod ");
allegro_exit();
}
};
int main()
{
   
allegro_start();
create_bitmaps();
load_bitmaps();
przystanek_kolizja=create_bitmap(130,130);
color_bitmap();



while(!key[KEY_ESC])
{
       
    gfx::Canvas2D canvas( bufor );
    gfx::Camera camera;             
                 textprintf_ex( bufor, font, 20, 20, makecol( 200, 200, 200 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mouse_x, mouse_y,mouse_b );     
control_bus();
control_cars();
check_collisions();
clear_bufor();
#ifdef ALLEGRO5
        camera.setView( class_autobus.x - al_get_bitmap_width( bufor )/2, class_autobus.y - al_get_bitmap_height( bufor )/2 );
#else
        camera.setView( class_autobus.x - bufor->w/2, class_autobus.y - bufor->h/2 );
#endif
map_1();

show_bitmaps();




}
allegro_exit();
return 0;
}
END_OF_MAIN();


4
Matematyka i fizyka / Odp: C++ allegro mapa kafelkowa.
« dnia: Marzec 18, 2011, 12:09:55 »
Jakos zle chyba to dalem do kodu bo jest gorzej niz bylo ...
Jak by ci sie chcialo to wez to wklej dobrze do poprzedniego a jak nie to jakos inaczej to wytlumacz ;p

5
Matematyka i fizyka / Odp: C++ allegro mapa kafelkowa.
« dnia: Marzec 18, 2011, 11:22:32 »
No dobra ale tych linijek nie rozumie znaczy ze nie ma takich funkcji w allegro czy ja mam sam je napisac?
view_x = SpriteMgr["autobus"].x - Video.getWidth()*0.5;
view_y = SpriteMgr["autobus"].y - Video.getHeight()*0.5;

6
Matematyka i fizyka / C++ allegro mapa kafelkowa.
« dnia: Marzec 17, 2011, 13:32:23 »
Witam mam taki problem pisze sobie symulator autobusu 2d ,wszystko fajnie autobus jezdzi mapa sie wyswietla ale sie nie przesowa a przynajmniej tak jak ja bym tego chcial bo co innego mapa pod chodzacego ludka a samochod
Tutaj daje kod wyswietlajacy mape:
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,


};



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 );     

   
}
   
}

Tutaj sterowanie autobusem i mapa tyle ze mapa jest zle:
if( key[ KEY_LEFT ] )
{
map_x++; //********************************STEROWANIE MAPA*************************
if(class_autobus.v>0)
{
                     
 kat -= 0.3; 
  if(class_autobus.v<0.05)
{
kat += 0.2;
}
}
}
if( key[ KEY_RIGHT ] )
{
map_x--; //*************************** STEROWANIE MAPA***********************
if(class_autobus.v>0)
{
kat += 0.3;
if(class_autobus.v<0.05)
{
kat -= 0.2;
}
 
}
 
}


if( key[KEY_UP] )
{

 class_autobus.v += 0.007;   
 map_y++;

if( key[ KEY_DOWN ] )
{
map_y--; //************************** STEROWANIE MAPA *********************
 class_autobus.v -= 0.007; 
}   
if(key[KEY_R])
{
drzwi=true;
class_autobus.v=0;
}
if(key[KEY_T])
{
drzwi=false;
}
if( class_autobus.v > 15  ) 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 caly kod:
#include <allegro.h>
#include <math.h>


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

double kat = 90.0;
int szerokosc_kafla = 130;
int wysokosc_kafla = 130;
int  map_x=0, map_y=0;
bool drzwi=false;

//**********************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;
BITMAP *czlowiek=NULL;
BITMAP *przystanek_kolizja=NULL;
//**********************KLASY***********************************

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

class pasazerowie
{
public:
int x;
int y;
pasazerowie();
};
pasazerowie::pasazerowie()
{
x=370;
y=570;
}                         
                         

cautobus class_autobus;
pasazerowie pas;
//**********************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);
czlowiek=load_bitmap("czlowiek.bmp",default_palette);
};

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

};

void show_bitmaps() //************POKAZUJE BITMAPY*************
{
masked_blit(przystanek_kolizja,bufor,0,0,260,520,130,130);
masked_blit(czlowiek,bufor,0,0,pas.x,pas.y,10,10);
 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 ] )
{
map_x++; //********************************STEROWANIE MAPA*************************
if(class_autobus.v>0)
{
                     
 kat -= 0.3; 
  if(class_autobus.v<0.05)
{
kat += 0.2;
}
}
}
if( key[ KEY_RIGHT ] )
{
map_x--; //*************************** STEROWANIE MAPA***********************
if(class_autobus.v>0)
{
kat += 0.3;
if(class_autobus.v<0.05)
{
kat -= 0.2;
}
 
}
 
}


if( key[KEY_UP] )
{

 class_autobus.v += 0.007;   
 map_y++;

if( key[ KEY_DOWN ] )
{
map_y--; //************************** STEROWANIE MAPA *********************
 class_autobus.v -= 0.007; 
}   
if(key[KEY_R])
{
drzwi=true;
class_autobus.v=0;
}
if(key[KEY_T])
{
drzwi=false;
}
if( class_autobus.v > 15  ) 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 *******
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,


};



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 );     

   
}
   
}
};

void color_bitmap() //****************** KOLORUJE BITMAPY *******************
{
clear_to_color(przystanek_kolizja,makecol(255,0,255));
};

bool kolizja(int x1,int y1,int s1,int w1,int x2,int y2,int s2,int w2) // ******** KOLIZJA *********
{
     if( x2<=x1+s1 && x2>x1 && y2>=y1 && y2<=y1+w1) return true; else
     if( x2<=x1+s1 && x2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true; else
     if( x2+s2<=x1+s1 && x2+s2>x1 && y2>=y1 && y2<=y1+w1) return true; else
     if( x2+s2<=x1+s1 && x2+s2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true;
     else return false;
}; 

void check_collisions() // ********************** SPRAWDZA KOLIZJE MIEDZY OBIEKTAMI **************
{
if(kolizja(class_autobus.x,class_autobus.y,130,130,pas.x,pas.y,10,10)==true)
{
if(drzwi==true)
{
pas.x=pas.x+7000; //************ PASAZER WSIADL NA PRZYSTANKU 1 *******************************
}
}

};
int main()
{
   
allegro_start();
create_bitmaps();
load_bitmaps();
przystanek_kolizja=create_bitmap(130,130);
color_bitmap();



while(!key[KEY_ESC])
{
control_bus();
check_collisions();
clear_bufor();
map_1();

show_bitmaps();




}
allegro_exit();
return 0;
}
END_OF_MAIN();


I pliki cpp i exe do sciagniece z grafika.
http://www.speedyshare.com/files/27447861/Bus_simulator_by_bartaz.rar
Wiem ze duzo ale mecze sie od wczoraj i nic nie moge wykombinowac :(

Strony: [1]