#include <SDL/SDL.h>
#include "czas.hpp"
SDL_Surface * ekran = NULL;
SDL_Surface * grass = NULL;
SDL_Rect rPole, MapaDestination;
SDL_Surface * ziemia = NULL;
SDL_Surface * bufor = NULL;
SDL_Event zdarzenie;
//Tablica z mapą
int pole[ 10 ][ 19 ] = {
{ 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
};
const int FRAMES_PER_SECOND = 20;
int map_x = 0, map_y = 0, frame;
bool koniec = false, cap = true;
Uint8 * keystate = SDL_GetKeyState( NULL );
int x;
Timer fps;
//Funkcja rysująca mape
void ruch()
{
for( int i = 0 + x; i < 10 + x; i++ )
{
for( int j = 0; j < 19; j++ )
{
if( pole[ i ][ j ] == 0 )
{
SDL_BlitSurface( ziemia, NULL, bufor, & rPole );
}
if( pole[ i ][ j ] == 1 )
{
SDL_BlitSurface( grass, NULL, bufor, & rPole );
}
rPole.x = rPole.x + 50;
}
rPole.y = rPole.y + 50;
rPole.x = 0;
}
}
int main( int argc, char * args[] )
{
SDL_Init( SDL_INIT_EVERYTHING );
bufor = SDL_SetVideoMode (500, 500, 32, SDL_SWSURFACE);
ekran = SDL_SetVideoMode( 500, 500, 32, SDL_DOUBLEBUF | SDL_SWSURFACE );
grass = SDL_LoadBMP( "sprite/grass.bmp" );
ziemia = SDL_LoadBMP( "sprite/ziemia.bmp" );
while( koniec != true )
{
fps.start();
while( SDL_PollEvent( & zdarzenie ) )
{
if( zdarzenie.type == SDL_QUIT )
{
koniec = true;
}
}
if( fps.get_ticks() < 1000 / FRAMES_PER_SECOND )
{ SDL_Delay(( 1000 / FRAMES_PER_SECOND ) - fps.get_ticks() ); }
if( keystate[ SDLK_RIGHT ] ) {
MapaDestination.x--;
frame++;
}
//Moja mizerna, nieudana próba zrobienia scrolowanie
frame = 0;
if( frame == 50 ) { x++, frame = 0; }
if( frame == 0 ) { ruch(); }
SDL_BlitSurface( bufor, NULL, ekran, & MapaDestination );
SDL_Flip( ekran );
}
}