Devc++ 开发的 Easyx 瓦片地图编辑器之自定义贴图导入模块

Devc++ 开发的 Easyx 瓦片地图编辑器之自定义贴图导入模块接上次开发 Editing While Playing 使用 Easyx 开发的 RPG 地图编辑器 tilemap eaitor CSDN 博客 由于还不能导入自己绘制的贴图 所以还要增加自定义贴图的导入导出模块 这里就单独搓了一个自定义导入导出部分 之后再缝合进瓦片地图编辑器里 include stdio h stdio h

大家好,我是讯享网,很高兴认识大家。

 接上次开发

 Editing While Playing 使用 Easyx 开发的 RPG 地图编辑器 tilemap eaitor-CSDN博客

 由于还不能导入自己绘制的贴图,所以还要增加自定义贴图的导入导出模块


讯享网

这里就单独搓了一个自定义导入导出部分,之后再缝合进瓦片地图编辑器里

#include <stdio.h> #include <io.h> #include <direct.h> #include <graphics.h> // 按类型保存到当前目录指定文件夹下 void loadfile_scanf(char *dirname,char* next,char* kind,IMAGE penbrick) { //文件存储信息结构体 struct _finddata_t fileinfo; //保存文件句柄 long fHandle; //文件数记录器 char dirpath[100]; strcpy(dirpath,dirname); if(access(dirpath,0)==-1) // 检查文件夹是否存在,不存在为 -1 { mkdir(dirpath); return; } else { int i = 0; // 记录文件数量 char kindpath[100]; strcpy(kindpath,dirpath); strcat(kindpath,next); strcat(kindpath,kind); if( (fHandle=_findfirst( kindpath, &fileinfo )) == -1L ) // *是通配符,默认在当前文件夹内查找文件,这里查找 .png 文件 { printf( "当前目录: %s 下没有所需文件\n",dirname); return ; } else { char path[100]; do { i ++; printf("在%s下找到文件:%s,文件大小:%d bit\n", dirname,fileinfo.name,fileinfo.size); strcpy(path,dirname); strcat(path,next); strcat(path,fileinfo.name); loadimage(penbrick[i],path,30,30); // 根据名称读取文件 } while( _findnext(fHandle,&fileinfo)==0); } //关闭文件 _findclose( fHandle ); printf("文件数量:%d\n",i); } } // 从默认文件夹中读取自定义图片 void loadfile(IMAGE penbrick) { char brick[100]="birck_6_family"; // char ground[100]="ground_7_family"; // char change[100]="change_8_family"; // char trick[100]="trick_9_family"; char next[100]="./"; char png[100]="*.png"; loadfile_scanf(brick,next,png,penbrick); // 加载用于当砖头类型的图片 // loadfile_scanf(ground,next,png,msg); // loadfile_scanf(change,next,png,msg); // loadfile_scanf(trick,next,png,msg); } // 保存自定义文件 void savelocal(char* DLC,char *dirpath,char* next,char* kind,char filename); // 保存自定义瓦片贴图 void savepersonalfile(char*DLC,IMAGE penbrick); int main() { initgraph(700,700); IMAGE penbrick; // penbrick 变成 penbrick penbrick=new IMAGE*[10]; for(int i=0; i<10; i++) penbrick[i]=new IMAGE(30,30); setbkcolor(GREEN); cleardevice(); for(int i=0; i<10; i++) putimage(0,i*30,penbrick[i]); char DLC[100]= {}; strcpy(DLC,"DLC0"); loadfile(penbrick); for(int i=0; i<10; i++) putimage(0,i*30,penbrick[i]); savepersonalfile(DLC,penbrick); getchar(); return 0; } // 保存自定义文件 void savelocal(char* DLC,char *dirname,char* next,char* kind,char* sign,IMAGE files) { char dirpath[100]=""; strcpy(dirpath,DLC); // 字符串拼接出相对路径 strcat(dirpath,next); strcat(dirpath,dirname); if(access(dirpath,0)==-1) // 检查 DLC 内文件夹是否存在,不存在为 -1 { mkdir(dirpath); } else { char filepath[100]; char filepa[100]; char num[10]; strcpy(filepath,dirpath); // 字符串拼接出文件名 strcat(filepath,next); strcat(filepath,sign); for(int i=0; i<10; i++) { sprintf(num,"%d",i); strcpy(filepa,filepath); // 从头粘贴,可以覆盖之前的信息,不受上一次保存的影响 strcat(filepa,num); strcat(filepa,kind); saveimage(filepa,files[i]); printf("file save %s\n",filepa); } } } // 在目标 DLC 里创建四个文件夹并保存 void savepersonalfile(char *DLC,IMAGE penbrick) { char brick[100]="birck_6_family"; // char ground[100]="ground_7_family"; // char change[100]="change_8_family"; // char trick[100]="trick_9_family"; char next[100]="./"; char png[100]=".png"; if(access(DLC,0)==-1) // 检查文件夹是否存在,不存在为 -1 { mkdir(DLC); } char sign[10]= {}; strcpy(sign,"6"); savelocal(DLC,brick,next,png,sign,penbrick); // savelocal(DLC,ground,next,png,msg); // savelocal(DLC,change,next,png,msg); // savelocal(DLC,trick,next,png,msg); }

讯享网

小讯
上一篇 2025-01-07 22:13
下一篇 2025-02-15 14:35

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/49744.html