Jump to content
  • Advertisement
Sign in to follow this  

Problems with scrolling maps and SDL

This topic is 5161 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello... im trying to make a scrolling map with SDL... i get no errors the problem is that the pictures just dosnt show... heres the code: SDL_Surface *screen; int game_state; int i; int x; int y; int bytecount; SDL_Surface *tiles[3]; int world[100*100];//map is 100x100 void load() { tiles[0] = SDL_LoadBMP("gfx/water.bmp"); tiles[1] = SDL_LoadBMP("gfx/desert.bmp"); tiles[2] = SDL_LoadBMP("gfx/grass.bmp"); long size; int bytecount; int count; FILE *f; f=fopen("maps/desert.map","r"); if (f==NULL) perror ("Error opening file desert.map"); else { fseek (f, 0, SEEK_END); size=ftell (f); fclose (f); bytecount = size; } int world_index = 0;//stores our position in the world array while(i<bytecount) { int temp = fgetc(f);//read a tile index from the file world[world_index] = temp;//store value from file in our world map array ++world_index;//move to next position in array i=i+1; } } //this is to be called from your game loop //this is the same code from the earlier example int world_x;//player's x position in the world int world_y;//player's y position in the wolrd //...insert code that get player input and updates world_x and world_y based on player input. void draw() { int x, y; //assume player character is at center of screen //find start position to draw from in tile array int start_x = world_x-10;//assume tiles are 32x32 and screen width is 640. int start_y = world_y-7;//assume tiles are 32x32 and screen height is 480. for(y = start_y; y < start_y+15; ++y)//again, assumes 15 rows { for(x = start_x; x < start_x+20; ++x)//assumes 20 columns { //find out which tile we are currently looking for int tile_index = world[y*20+x]; //use that value to get the tile from the tile set array SDL_Surface *curr_tile = tiles[tile_index]; //draw the current tile. sorry, dont know real funtion name ShowBMP(curr_tile, screen, 0, 0); } } SDL_Delay(1000); }

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!