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

相关文章

windows下安装Nginx全过程

《windows下安装Nginx全过程》文章介绍了HTTP和反向代理服务器的概念,包括正向代理和反向代理的区别,并详细描述了如何安装和配置Nginx作为反向代理服务器... 目录概念代理正向代理反向代理安装基本属性nginx.conf查询结构属性使用运行重启停止总结概念是一个高性能的HTTP和反向代理we

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

SpringBoot整合Apache Spark实现一个简单的数据分析功能

《SpringBoot整合ApacheSpark实现一个简单的数据分析功能》ApacheSpark是一个开源的大数据处理框架,它提供了丰富的功能和API,用于分布式数据处理、数据分析和机器学习等任务... 目录第一步、添加android依赖第二步、编写配置类第三步、编写控制类启动项目并测试总结ApacheS

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp