1. 程式人生 > >windows下用mingw32+sdl進行簡單2d遊戲開發(c語言)

windows下用mingw32+sdl進行簡單2d遊戲開發(c語言)

#include<stdio.h>
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
SDL_Surface *screen;


void video_init(){  //遊戲圖形模式初始化
	if(SDL_Init(SDL_INIT_VIDEO)){
		fprintf(stderr,"Can't init SDL:%s\n",SDL_GetError());
		exit(1);
	}
	screen=SDL_SetVideoMode(640,480,16,SDL_SWSURFACE);
	if(screen==NULL){
		fprintf(stderr,"Can't set mode 640x480:%s\n",SDL_GetError());
		exit(1);
	}
	atexit(SDL_Quit);
	SDL_ShowCursor(0);//關閉滑鼠顯示
}

SDL_Surface *loadIMG(const char *fileName){
	SDL_Surface *img;
	img = IMG_Load(fileName);
	if(img == NULL)  
    {  
        fprintf(stderr,"Could not load %s: %s",fileName,SDL_GetError());  
        exit(1);  
    }  
    return img;  
}

SDL_Surface *loadBMP(char *fileName)            //載入bmp圖片  
{  
    SDL_Surface *bmp;  
    bmp = SDL_LoadBMP(fileName);  
    if(bmp == NULL)  
    {  
        fprintf(stderr,"Could not load %s: %s",fileName,SDL_GetError());  
        exit(1);  
    }  
    return bmp;  
}  

int main(int argc, char* argv[]){
	if(SDL_Init(SDL_INIT_EVERYTHING)==-1){
		printf("error..\n");
	}else{
		printf("ok\n");
		
		video_init();
		
		SDL_Surface *img;
		img=loadIMG("tt.png");
			
		while (1){
			// Poll for events, and handle the ones we care about.
			SDL_Rect dest;
			dest.x=100;
			dest.y=100;
			dest.w=200;
			dest.h=200;
			
			SDL_Color color;
			color.r=255;
			color.g=0;
			color.b=0;

			
			SDL_FillRect(screen, &screen->clip_rect, SDL_MapRGB(screen->format,0xFF,0xFF,0xFF));
			SDL_FillRect(screen, &dest, SDL_MapRGB(screen->format,0,0,0xFF));
			
			dest.x=200;
			dest.y=200;
			dest.w=200;
			dest.h=200;
			SDL_BlitSurface(img, &screen->clip_rect, screen,&dest);

			
			SDL_Flip(screen);
			SDL_Event event;
			while (SDL_PollEvent(&event)){
				if(event.type==SDL_KEYDOWN){
					int key = event.key.keysym.sym;
					printf("%d\n",key);
					if(key==SDLK_ESCAPE){
						printf("%d\n",1000);
						SDL_Quit();
						exit(1);
					}else if(key==SDLK_UP){
						printf("up\n");
					}else if(key==SDLK_DOWN){
						printf("down\n");
					}else if(key==SDLK_LEFT){
						printf("left\n");
					}else if(key==SDLK_RIGHT){
						printf("right\n");
					}
				}else if(event.type==SDL_QUIT){
					printf("%d\n",1000);
					SDL_Quit();
					exit(1);
				}
			}
		}
		
		
	}
	
	return 0;
}