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

接上次开发

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

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

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

cpp 复制代码
#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);

}
相关推荐
XiaoLiuLB1 小时前
ChatGPT Canvas:交互式对话编辑器
人工智能·自然语言处理·chatgpt·编辑器·aigc
五花肉村长16 小时前
数据结构-队列
c语言·开发语言·数据结构·算法·visualstudio·编辑器
嵌入式小能手17 小时前
开发环境搭建之VScode的安装及使用
vscode·编辑器
电子科技圈21 小时前
IAR全面支持国科环宇AS32X系列RISC-V车规MCU
人工智能·嵌入式硬件·mcu·编辑器
安冬的码畜日常2 天前
【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段
编辑器·html·typora·sublime text·代码片段·snippet
风竹夜2 天前
记录一次病毒启动脚本
c++·windows·安全·编辑器·batch·福昕阅读器
遮天华月2 天前
VS与VSCode的区别
ide·vscode·编辑器
佚明zj2 天前
VIM的使用总结
linux·编辑器·vim
四次元的lucly3 天前
vscode 内网不联网如何导入vscode插件
ide·vscode·编辑器
z.q.xiao3 天前
VScode 自定义代码配色方案
ide·vscode·编辑器