Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "SDL/SDL.h"
- #include "classes.h"
- SDL_Surface *tileset = SDL_LoadBMP("data/images/tileset.bmp");
- SDL_Surface *background = SDL_LoadBMP("data/images/background.bmp");
- SDL_Surface *screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
- void apply_surface(int x, int y, SDL_Surface *source, SDL_Surface *destination) {
- SDL_Rect rect;
- rect.x = x;
- rect.y = y;
- SDL_BlitSurface(source, NULL, destination, &rect);
- }
- void load_sprite(int x, int y, SDL_Surface *source, SDL_Surface *destination, int bx, int by, int width, int height) {
- SDL_Rect rect;
- SDL_Rect offset;
- offset.x = x;
- offset.y = y;
- rect.x = bx;
- rect.y = by;
- rect.w = width;
- rect.h = height;
- SDL_BlitSurface(source, &rect, destination, &offset);
- }
- int main(int argc, char *args[]) {
- SDL_Init(SDL_INIT_EVERYTHING);
- bool gameLoop = true;
- int currentTick = SDL_GetTicks();
- Uint8 *key;
- int maxFps = 30;
- int i, i2;
- Uint32 colorkey = SDL_MapRGB( tileset->format, 255, 0, 255);
- SDL_SetColorKey( tileset, SDL_SRCCOLORKEY, colorkey );
- cPlayer.x = 0;
- cPlayer.y = 0;
- int map[15][20] = {
- {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
- };
- while(gameLoop) {
- SDL_PumpEvents();
- key = SDL_GetKeyState(NULL);
- currentTick = SDL_GetTicks();
- apply_surface(0, 0, background, screen);
- //fps
- if(SDL_GetTicks() - currentTick < 1000 / maxFps) {
- SDL_Delay(((1000/maxFps)-(SDL_GetTicks() - currentTick)));
- }
- if(key[SDLK_LEFT] || key[SDLK_a]) {
- cPlayer.x -= 32;
- }
- else if(key[SDLK_RIGHT] || key[SDLK_d]) {
- cPlayer.x += 32;
- }
- else if(key[SDLK_DOWN] || key[SDLK_s]) {
- cPlayer.y += 32;
- }
- else if(key[SDLK_UP] || key[SDLK_w]) {
- cPlayer.y -= 32;
- }
- if(key[SDLK_ESCAPE]) {
- gameLoop = false;
- }
- for(i=0; i<15; i++) {
- for(i2=0; i2<20; i2++) {
- switch(map[i][i2]) {
- case 0:
- load_sprite(i2*32, i*32, tileset, screen, 2+32, 1, 32, 32);
- break;
- case 1:
- load_sprite(i2*32, i*32, tileset, screen, 4+(32*4), 1, 32, 32);
- break;
- case 2:
- load_sprite(i2*32, i*32, tileset, screen, 3+(32*3), 1, 32, 32);
- break;
- case 3:
- load_sprite(i2*32, i*32, tileset, screen, 3+(32*2), 1, 32, 32);
- break;
- case 4:
- load_sprite(i2*32, i*32, tileset, screen, 5+(32*5), 1, 32, 32);
- }
- if(i2 == cPlayer.x / 32 && i == cPlayer.y / 32) {
- map[i][i2] = 0;
- }
- }
- }
- load_sprite(cPlayer.x, cPlayer.y, tileset, screen, 1, 1, 32, 32);
- SDL_Flip(screen);
- }
- SDL_FreeSurface(tileset);
- SDL_FreeSurface(background);
- SDL_Quit();
- }
Advertisement
Add Comment
Please, Sign In to add comment