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

 接上次开发

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

}

最近更新

  1. TCP协议是安全的吗?

    2024-02-21 06:54:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-21 06:54:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-21 06:54:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-21 06:54:01       20 阅读

热门阅读

  1. 分布式场景怎么Join | 京东云技术团队

    2024-02-21 06:54:01       30 阅读
  2. 使用单元测试框架Junit的正确姿势

    2024-02-21 06:54:01       23 阅读
  3. SQL-2

    SQL-2

    2024-02-21 06:54:01      33 阅读
  4. 电商数据API接口

    2024-02-21 06:54:01       37 阅读
  5. 士兰微六轴陀螺仪SC7I22在AR/VR头显设备中的应用

    2024-02-21 06:54:01       25 阅读
  6. jupyter/scipy-notebook:python3.8 docker 镜像

    2024-02-21 06:54:01       29 阅读
  7. 云计算计算资源池与存储池访问逻辑

    2024-02-21 06:54:01       27 阅读
  8. pytorch和tensorflow比较以及安装使用tensorflow

    2024-02-21 06:54:01       31 阅读