`
aiquantong
  • 浏览: 112611 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

J2me 游戏点阵字库引擎(五)之部分汉字库

    博客分类:
  • J2ME
 
阅读更多

      最近有点忙,现在到今天才有时间继续我的博文!

 

1. 对于现流行的J2ME游戏开发而言,有美术、策划和程序。图片由美术完成,游戏控制脚本由策划撰写,实现是由程序负责编写。在三个分工中,会出现汉字部分就是程序(操作说明),还有脚本(人物对话和场景说明)。为此我们需要编写一个程序将游戏的代码部分和脚本过滤出来。在下面的代码中,我采用扩展名来标识:

 

	// 筛选出指定扩展名的文件
	public String[] filterFile(String directory, String[] extendFileName) {
		LinkedList<String> allFilePath = new LinkedList<String>();
		LinkedList<String> allFilterFilePath = new LinkedList<String>();
		searchFile(directory, allFilePath);

		for (int i = 0, size = allFilePath.size(); i < size; i++) {
			String path = allFilePath.get(i);
			if (getFileCodeFormate(path, extendFileName) != -1) {
				allFilterFilePath.add(path);
			}
		}
		String[] pathStr = new String[allFilterFilePath.size()];
		allFilterFilePath.toArray(pathStr);
		return pathStr;
	}

	// 查找出全部的文件
	public void searchFile(String directory, LinkedList<String> linkedList) {
		File file = new File(directory);
		if (file.isFile()) {
			linkedList.add(directory);
		} else {
			String[] subFiles = file.list();
			for (int i = 0; i < subFiles.length; i++) {
				searchFile(directory + "/" + subFiles[i], linkedList);
			}
		}
	}

 

 

  运行结果如图:

 

 

2.将文件中汉字提前出来,并作重复性校验 代码如下:

	//读取全部文件的内容
	public String getAllFileFont(String[] allFilePath, String[] extendFileName, String[] fileFormate) {
		String[] oneFileFont = new String[allFilePath.length];
		int tem;
		String allfileFont = "";

		for (int i = 0, len = oneFileFont.length; i < len; i++) {
			tem = getFileCodeFormate(allFilePath[i], extendFileName);
			oneFileFont[i] = getTextByFormate(allFilePath[i], fileFormate[tem]);
			oneFileFont[i] = getSoleWord(oneFileFont[i]);
		}

		for (int i = 0; i < allFilePath.length; i++) {
			allfileFont = oneFileFont[i] + allfileFont;
		}

		allfileFont = getSoleWord(allfileFont);
		return allfileFont;
       
	}
	
	// 由扩展名 得出对于的格式
	public int getFileCodeFormate(String path, String[] extendFileName) {
		if (extendFileName == null || extendFileName.length == 0) {
			return -1;
		} else {
			for (int i = 0, len = extendFileName.length; i < len; i++) {
				if ("".equals(extendFileName[i].trim())
						&& path.indexOf(".") == -1) {
					return i;
				} else if (!"".equals(extendFileName[i].trim())
						&& path.endsWith(extendFileName[i])) {
					return i;
				}
			}
			return -1;
		}
	}

	//将对应文件的扩展名应相应的格式读取出来。
	private String getTextByFormate(String name, String formate) {
		String strReturn = "";
		int ic;
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		DataOutputStream dos = new DataOutputStream(baos);
		FileInputStream fileInputStream;
		byte[] myData;
		byte[] buffer = new byte[1024];
		try {
			fileInputStream = new FileInputStream(new File(name));
			if (fileInputStream != null) {
				while ((ic = fileInputStream.read(buffer)) > 0) {
					dos.write(buffer, 0, ic);
				}
				myData = baos.toByteArray();

				// // ANSI:        无格式定义;
				// // Unicode:       前两个字节为FFFE;
				// // Unicode big endian: 前两字节为FEFF; 
				// // UTF-8:        前两字节为EFBB; 
				// if ((myData[0] ^ (byte) 0xFE) == 0
				// && (myData[1] ^ (byte) 0xFF) == 0) {
				// formate = "Unicode";
				// } else if ((myData[0] ^ (byte) 0xFF) == 0
				// && (myData[1] ^ (byte) 0xFE) == 0) {
				// formate = " Unicode big endian";
				// } else if ((myData[0] ^ (byte) 0xEF) == 0
				// && (myData[1] ^ (byte) 0xBB) == 0) {
				// formate = "UTF-8";
				// } else {
				// formate = "GBK";
				// }

				strReturn = new String(myData, formate);
				fileInputStream.close();
			}
			dos.close();
			baos.close();
		} catch (Exception e) {
			System.out.println("getTextByUTF Error:" + e.toString());
		} finally {
			myData = null;
			buffer = null;
			fileInputStream = null;
			dos = null;
			baos = null;
		}
		System.gc();
		return strReturn;
	}

	//进行不重复性校验
	private String getSoleWord(String str) {
		HashSet<String> ts = new HashSet();

		for (int i = 0; i < str.length(); i++) {
			String subStr = str.substring(i, i + 1);
			ts.add(subStr);
		}
		Iterator<String> entry = ts.iterator();
		StringBuffer sb = new StringBuffer();

		for (; entry.hasNext();) {
			sb.append((String) entry.next());
		}

		String ret = sb.toString();
		return ret;
	}

  

 

 

运行结果如图:

 

 3.此时我得到的只是汉字的机内码,现在我们将其排序一下,其作用以后再分析??

 

	//按机内码对字符串进行排序
	private String sortAsCodeSequence(String str) {
		int len = str.length();
		int codeSequence[] = new int[len];
		for (int i = 0; i < len; i++) {
			codeSequence[i] = str.charAt(i);
		}
		Arrays.sort(codeSequence);
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < len; i++) {
			sb.append((char) (codeSequence[i]));
		}

		return sb.toString();
	}

 

 

 

 

 

 

    

  • 大小: 22.2 KB
  • 大小: 15 KB
分享到:
评论

相关推荐

    j2me点阵字库

    点阵字库是J2ME应用中一种特殊的字体资源,尤其对于游戏开发来说,非常重要。这种字库以像素为单位描绘字符形状,适用于低内存和低分辨率的设备。 点阵字库的工作原理是将每个字符以二维数组的形式存储,数组的每个...

    j2me游戏引擎详解

    **J2ME游戏引擎详解** Java 2 Micro Edition(J2ME)是Oracle公司为小型设备和嵌入式系统设计的一种Java平台。它主要用于移动设备,如早期的智能手机和平板电脑,提供运行Java应用程序的能力。在J2ME的环境中,游戏...

    J2ME手机游戏开发引擎的分析与设计

    相比之下,J2ME作为早期的移动平台,其游戏引擎开发相对较少,但仍有大量的老旧设备和低端市场需要支持,因此开发J2ME游戏引擎仍具有一定的市场价值和技术挑战。 2.1 游戏引擎相关技术 2.1.1 编程语言技术要求 ...

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏下,上为另一部分

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏

    j2me游戏引擎(强大编辑器及光照效果)

    在本文中,我们将深入探讨"j2me游戏引擎",特别是其强大的编辑器和光照效果在2D游戏开发中的应用。 一、J2ME游戏引擎概述 J2ME游戏引擎是专门针对J2ME平台构建的游戏开发框架,它简化了游戏的编程工作,提供了丰富...

    一款 J2ME 的物理引擎

    **J2ME 物理引擎概述** ...总结,J2ME物理引擎如DyMiX_basic_0.1是移动游戏开发的重要组成部分,它为小型设备带来了丰富的动态体验。开发者可以通过深入研究和实践,掌握其使用方法,从而提升游戏的整体质量。

    J2ME小游戏J2ME小游戏J2ME小游戏上,下为另一部分

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏

    java j2me的游戏引擎

    Java J2ME游戏引擎是为在Java Micro Edition (J2ME)平台上开发移动游戏而设计的一种软件框架。J2ME是一种轻量级的Java平台,主要用于嵌入式设备,如早期的智能手机和平板电脑,它提供了运行Java应用程序的能力,包括...

    J2ME斜45度游戏引擎

    **J2ME斜45度游戏引擎** J2ME(Java 2 Micro Edition)是Java平台上的一种轻量级开发框架,主要用于移动设备和嵌入式系统的应用程序开发,其中包括游戏。在移动游戏领域,J2ME曾是开发手机游戏的重要工具,尤其是在...

    J2me 游戏原代码

    1. **MIDP GUI(图形用户界面)**: J2ME 游戏通常使用 MIDP 提供的 LCDUI(Limited Connected Device User Interface)库来创建用户界面。这包括使用 Form、ChoiceGroup、ImageItem 和 Alert 等组件。 2. **Canvas ...

    J2ME 游戏开发资源

    这个压缩包包含的“J2ME游戏开发资源”是一份宝贵的资料库,对于想要学习或从事J2ME游戏开发的人员来说极具价值。 在J2ME游戏开发中,以下几个核心知识点至关重要: 1. **基础环境搭建**:首先,开发者需要安装...

    j2me游戏开发 经典教程

    j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发

    j2ME游戏开发详解

    【j2ME游戏开发详解】 Java 2 Micro Edition(j2ME)是Oracle公司推出的用于开发和部署在小型设备、移动设备以及嵌入式系统上的应用程序的平台。它以其轻量级、跨平台的特性,成为了早期手机游戏开发的重要工具。本...

    J2ME游戏的基本结构

    J2ME 游戏的用户界面通常使用 Wireless Toolkit (WTK) 提供的 LCDUI(Limited Connected Device Configuration User Interface)库。LCDUI 包含了一系列组件,如 Form、ChoiceGroup、TextBox 等,用于创建简单的图形...

    J2ME游戏源代码

    本资源包含多款J2ME游戏的源代码,对于学习和理解移动游戏开发具有很高的价值。 1. **J2ME基础** J2ME由配置(Configurations)和 profiles 组成。配置定义了硬件和操作系统的基本特性,而profiles则进一步细化了...

    经典j2me游戏实例

    **J2ME游戏开发入门详解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门用于开发在移动设备和嵌入式系统上运行的应用程序,其中包括许多经典的游戏。本篇将通过分析提供的文件名来探讨J2ME游戏开发的...

    j2me游戏中文教程

    《J2ME游戏开发中文教程》是一本专为Java ME(J2ME)平台上的游戏开发而设计的详细指南。J2ME,全称为Java 2 Micro Edition,是Java技术的一个分支,主要用于移动设备和嵌入式系统的应用程序开发,包括手机、智能...

    我的第一个j2me游戏代码

    我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我...

Global site tag (gtag.js) - Google Analytics