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

2024-04-04 00:08

本文主要是介绍windows下用mingw32+sdl进行简单2d游戏开发(c语言),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、下载sdl库:http://www.libsdl.org/release/SDL-devel-1.2.15-mingw32.tar.gz
2、下载sdl_image库: http://www.libsdl.org/projects/SDL_image/release/SDL_image-devel-1.2.12-VC.zip
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;
}
 

这篇关于windows下用mingw32+sdl进行简单2d游戏开发(c语言)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/874339

相关文章

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i