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);

}
相关推荐
jinhuazhe20135 小时前
如何解决vscode powershell乱码
ide·vscode·编辑器
paintstar8 小时前
vscode 快速切换cangjie版本
ide·vscode·编辑器·仓颉·cangjie
科协软件20188 小时前
vscode+latex快捷键
ide·vscode·编辑器
半糖11229 小时前
【VSCode】常用插件汇总
vscode·编辑器
cnnews9 小时前
在vscode中的ESP-IDF插件中使用Arduino框架作为组件
ide·vscode·编辑器
乐闻x10 小时前
VSCode 插件开发实战(三):插件配置项自定义设置
ide·vscode·编辑器
CSND74020 小时前
Ubuntu vi(vim)编辑器配置一键补全main函数
linux·c语言·ubuntu·编辑器·vim
C.L.L1 天前
vscode中同时运行两个python文件(不用安装插件)
ide·vscode·编辑器
千百元1 天前
windows自带16进制转10进制
编辑器
乐闻x1 天前
VSCode 插件开发实战(一):快速入门插件开发
ide·vscode·编辑器