`
沙舟狼客
  • 浏览: 162309 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

windows下用mingw32+sdl进行简单2d游戏开发(c语言)

阅读更多
1、下载sdl库:http://www.libsdl.org/release/SDL-devel-1.2.15-mingw32.tar.gz
3、在mingw32/include下建立SDL文件夹。把sdl库include中的文件全部copy到这里
4、把sdl的lib下文件全部copy到mingw32的lib下
5、把sdl_image库中的inlcude/sdl_image.h放到刚才建立的文件夹下
6、把sdl_image库中的lib中的dll文件全部copy到mingw32d的lib中
7、把sdl_imagelib中的dll和sdl中的sdl.dll放到你编译的exe文件目录
8、编译指令
gcc -o demo4.exe(输出文件名) demo4.c(源文件名)  -lmingw32 -lSDL_image -lSDLmain -lSDL
测试代码(请在该目录放一个tt.png图片,随便。 自己网上找了):
#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;
}
 
分享到:
评论
3 楼 沙舟狼客 2015-06-08  
为了方便使用可以配置到环境变量里面
MINGW_HOME=C:\MinGW

C_INCLUDE_PATH=%MINGW_HOME%\include;

CPLUS_INCLUDE_PATH=%MINGW_HOME%\lib\gcc\i686-w64-mingw32\4.8.1;%MINGW_HOME%\lib\gcc\i686-w64-mingw32\4.8.1\include;%MINGW_HOME%\lib\gcc\i686-w64-mingw32\4.8.1\include\c++;%MINGW_HOME%\lib\gcc\i686-w64-mingw32\4.8.1\include\c++\backward;%MINGW_HOME%\include;

LIBRARY_PATH=%MINGW_HOME%\lib;

PATH=%MINGW_HOME%\bin;%MINGW_HOME%\i686-w64-mingw32\lib;%PATH%;
2 楼 沙舟狼客 2015-06-08  
如果安装autotools时不用gcc
cc相当于gcc的链接

notepadplus下编译命令

cc -o $(NAME_PART).exe $(FILE_NAME) -Wall   -lmingw32  -lSDLmain  -lSDL  -lSDL_image   -mwindows  -lgcc  -fstack-check=no

运行命令:
$(CURRENT_DIRECTORY)/$(NAME_PART).exe

开发过程中sdl_image
请使用x86里的
把SDL_image-devel-1.2.12-VC (1).zip\SDL_image-1.2.12\lib\x86下的所有文件复制到C:\MinGW\lib


1 楼 沙舟狼客 2013-11-07  
非常适合想写windows游戏的菜鸟

相关推荐

    SDL2开发静态库mingw版本

    "SDL2开发静态库mingw版本" 这个标题表明我们讨论的是一个用于开发的静态库,具体来说是SDL2库的特定版本,针对MinGW编译环境进行了优化。SDL2是一个跨平台的开发库,主要用于处理图形、音频、输入设备等多媒体功能...

    MinGW32+insight+bochs调试linux-0.11

    标题中的“MinGW32+insight+bochs调试linux-0.11”涉及到的是在Windows环境下使用MinGW32、insight源代码调试器和Bochs模拟器来调试早期版本Linux(这里是Linux内核0.11)的过程。这个主题涵盖了多个IT领域的知识点...

    msys+mingw64+mingw32 2

    msys+mingw64+mingw32, 集成32位和64位c,c++程序开发

    基于QT5.10MingW32+opencv3.40(已编译)

    基于QT5.10MingW32+opencv3.40(已编译), 本人亲自编译通过,并且能够使用,希望给碰到想同困难的朋友下提供帮助。 基于QT5.10MingW32+opencv3.40(已编译), 本人亲自编译通过,并且能够使用,希望给碰到想同...

    qt+mingw32+windows+ffmpeg+rtsp保证编译可用

    4:精简代码,在windows下是可以完整编译通过并运行的.linux下要将对应ffmpeg库文件替换. 5:支持三通道同步显示一个视频流,可以单击截图按钮截图放在最后一个通道. 6: 支持单个通道双击最大化显示. 7:代码处理并不够...

    SDL开发环境之MinGW集成篇 -- 是人就能用

    标题中的“SDL开发环境之MinGW集成篇 -- 是人就能用”表明了本文将介绍如何在Windows环境下使用MinGW编译器集成Simple DirectMedia Layer(SDL)库,以创建图形和多媒体应用程序。SDL是一个跨平台的开发库,主要用于...

    Windows下MinGW +MSYS +GTK+GLADE+Eclipse 环境搭建

    ### Windows下MinGW + MSYS + GTK + GLADE + Eclipse 环境搭建详解 #### 一、选择此IDE环境的理由 在选择开发环境时,考虑的因素很多,其中包括成本、可移植性、效率等。本篇文章详细介绍了一种适用于Windows系统...

    msys+mingw64+mingw32 6

    msys+mingw64+mingw32, 集成32位和64位c,c++程序开发

    windows 环境下使用 cmake+mingw-w64+qt5.10 编译 opencv3.4...

    windows 环境下使用 cmake+mingw-w64+qt5.10 编译 opencv3.4... windows 环境下使用 cmake+mingw-w64+qt5.10 编译 opencv3.4... windows 环境下使用 cmake+mingw-w64+qt5.10 编译 opencv3.4... vvvv windows 环境...

    SDL(MinGW)

    MinGW,即 Minimalist GNU for Windows,是一个将GNU工具集移植到Windows上的项目,它包括了GCC编译器、GDB调试器等,使开发者能够在Windows下使用命令行工具进行C/C++编程。将SDL库与MinGW结合,可以实现跨平台的...

    Windows下Eclipse + MinGW + Qt安裝及設置

    ### Windows下Eclipse + MinGW + Qt安装及设置 #### 安装步骤 **1. 安装Qt** - **下载Qt**: 访问Qt官方网站(http://trolltech.com/developer/downloads/qt),下载适用于Windows的Qt安装包,例如qt-win-open...

    msys+mingw64+mingw32 3

    msys+mingw64+mingw32, 集成32位和64位c,c++程序开发

    msys+mingw64+mingw32 11

    msys+mingw64+mingw32, 集成32位和64位c,c++程序开发

    Windows下MSYS+MinGW+GTK+GLADE+Eclipse环境搭建

    ### Windows下MSYS+MinGW+GTK+GLADE+Eclipse环境搭建详解 #### 一、为何选择此环境 选择在Windows环境下搭建MSYS+MinGW+GTK+GLADE+Eclipse的开发环境,主要基于以下几个理由: 1. **免费性**:无需在开发工具上...

    msys+mingw64+mingw32 13

    msys+mingw64+mingw32, 集成32位和64位c,c++程序开发

    vscode+lvgl+sdl+MingW64全部资料

    vscode+lvgl+sdl+MingW64全部资料

    mingw64+gcc-9.3.0

    在64位的Windows 10系统上,用户可以通过解压并配置环境变量,将Mingw64集成到开发环境中,从而能在Windows环境下使用开源的GNU工具链进行跨平台开发。 总之,这个软件包是针对Windows 10 x64开发者的强大工具集,...

    windows下用MinGW编译ffmpeg+x265库

    在整个编译过程中,需要注意命令行的操作,特别是相对路径的使用,因为Windows下的相对路径和在MSYS下的使用略有不同。另外,对于Windows 8.1系统,由于其特定的安全设置,可能还会遇到一些特定的错误提示,需要根据...

Global site tag (gtag.js) - Google Analytics