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

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl