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

相关文章

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ