void HandleEvent(SDL_Event event) { srcCam.x = 0; srcCam.y = 0; switch (event.type) { /* close button clicked */ case SDL_QUIT: gameover = 1; break; /* handle the keyboard */ case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_ESCAPE: case SDLK_q: gameover = 1; break; case SDLK_a: if ( rcSrc.x == 192 ) rcSrc.x = 224; else rcSrc.x = 192; rcSprite.x -= speedplayer1*32; srcCam.x -= 1; break; case SDLK_d: if ( rcSrc.x == 64 ) rcSrc.x = 96; else rcSrc.x = 64; rcSprite.x += speedplayer1*32; srcCam.x += 1; break; case SDLK_w: if ( rcSrc.x == 0 ) rcSrc.x = 32; else rcSrc.x = 0; rcSprite.y -= speedplayer1*32; srcCam.y -= 1; break; case SDLK_s: if ( rcSrc.x == 128 ) rcSrc.x = 160; else rcSrc.x = 128; rcSprite.y += speedplayer1*32; srcCam.y += 1; break; } break; } } int main ( int argc, char *argv[] ) { SDL_Surface *screen, *temp, *lol, *sprite, *grass; SDL_Rect rcGrass; int colorkey; /* initialize SDL */ SDL_Init(SDL_INIT_VIDEO); /* set the title bar */ SDL_WM_SetCaption("Oxeria RPG", "MMORPG"); /* create window */ screen = SDL_SetVideoMode(640, 440, 0, 0); /* set keyboard repeat */ SDL_EnableKeyRepeat(20, 20); /* load sprite */ temp = SDL_LoadBMP("data//graphic//sprite.bmp"); sprite = SDL_DisplayFormat(temp); SDL_FreeSurface(temp); // Load a bmp file as the icon of the program SDL_WM_SetIcon(SDL_LoadBMP("data//graphic//icon.bmp"),NULL); /* setup sprite colorkey and turn on RLE */ colorkey = SDL_MapRGB(screen->format, 255, 0, 255); SDL_SetColorKey(sprite, SDL_SRCCOLORKEY | SDL_RLEACCEL, colorkey); /* set sprite position */ rcSprite.x = 150; rcSprite.y = 150; rcSrc.x = 128; rcSrc.y = 0; rcSrc.w = TILE_SIZE; rcSrc.h = TILE_SIZE; gameover = 0; /* message pump */ while (!gameover) { SDL_Event event; /* look for an event */ if (SDL_PollEvent(&event)) { HandleEvent(event); } /* collide with edges of screen */ if ( rcSprite.x < 0 ) { rcSprite.x = 0; } else if ( rcSprite.x > WORLD_SIZEY-TILE_SIZE ) { rcSprite.x = WORLD_SIZEY-TILE_SIZE; } if ( rcSprite.y < 0 ) { rcSprite.y = 0; } else if ( rcSprite.y > WORLD_SIZEX-TILE_SIZE ) { rcSprite.y = WORLD_SIZEX-TILE_SIZE; } /* draw the sprite */ SDL_BlitSurface(sprite, &rcSrc, screen, &rcSprite); /* update the screen */ SDL_UpdateRect(screen, 0, 0, 0, 0); } /* clean up */ SDL_FreeSurface(sprite); SDL_Quit(); return 0; }