分类归档:Java

八款开源 Android 游戏引擎 (巨好的资源)

初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,一边自暴自弃的抱怨Android平台游戏开发难度太高,又连个像样的游 戏引擎也没有,甚至误以为使用Java语言开发游戏是一件费力不讨好且没有出路的事情。

事实上,这种想法完全是没有必要且不符合实际的,作为能和苹果iOS分庭抗礼的Android(各种意义上),当然也会有相当数量的游戏引擎存在。仅仅因为我们处于这个狭小的天地间,与外界接触不够,所以对它们的存在茫然不知罢了。

下面我就罗列出八款常见的Android游戏引擎,以供有需要者参考(收费,下载量过小,不公布源码,以及鄙人不知道(-_-)的引擎不在此列)。
1、Angle

Angle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现,缺陷在于文档不足,而且下载的代码中仅仅包含有少量的示例教程。

最低运行环境要求不详。

项目地址:http://code.google.com/p/angle/ 

阅读全文…

多种方法将诺基亚塞班S60V3/V5联系人同步到GPhone(Android平台)

一、利用“同步”工具同步

很多人应该知道,诺基亚S60V3/V5手机上自带的一个工具,叫做“同步”(Sync,FP1和MR机型上叫做“同步处理”),也许真正用过这个工具的人并不多,但小编要告诉你——它很有用!我们可以通过它,将我们的联系人(名片)同步到Google帐户上,然后再将这些联系人同步到GPhone上。下面小编以诺基亚5320XM为例为大家讲解具体的设置方法(S60V3/V5不同版本的设置方法不尽相同,但大体一致)。 阅读全文…

实现分词统计的源代码 开源

package test;
/**
*
* 分词每个词语,并且统计词频
*
*/

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import jeasy.analysis.MMAnalyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;

public class Segment {

public static void main(String args[]) throws IOException {
Segment s = new Segment();
String text = s.ReadFileByBufferdeReader(“F://test.txt”);
// System.out.println(text);
s.getWordByReader(text);
}

public String ReadFileByBufferdeReader(String readFileName) {
String temp = “”;
File f = new File(readFileName);

InputStreamReader read;
try {
read = new InputStreamReader(new FileInputStream(f), “gb2312”);
BufferedReader reader = new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null) {
temp += line + “\n”;
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return temp;
}

public Map getWordByReader(String text) {
// 采用正向最大匹配的中文分词算法
MMAnalyzer analyzer = new MMAnalyzer();
analyzer.addWord(“任家坪”);
Map<String, Integer> map = new HashMap<String, Integer>();
try {
System.out.println(“Length = ” + text.length());
Reader r = new StringReader(text);
TokenStream ts = analyzer.tokenStream(null, r);
//Creates a TokenStream which tokenizes all the text in the provided Reader.

System.out.println(“开始分词…\n”);
long begin = System.currentTimeMillis(); //返回以毫秒为单位的当前时间
for (Token t = ts.next(); t != null; t = ts.next()) {

String str = t.termText();     // Returns the Token’s term text.
//                System.out.println(str);
Object o = map.get(str);    // 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
if (o == null) {
map.put(str, new Integer(1));
} else {
Integer I = new Integer(((Integer) o).intValue() + 1);
map.put(str, I);         //将指定的值与此映射中的指定键关联
}
}

for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
Map.Entry entry = (Map.Entry) iter.next();    //映射项(键-值对)。
System.out.println(entry.getKey() + “:” + entry.getValue()); //输出词汇及频率
}
long end = System.currentTimeMillis();
//            System.out.println(“分词数量: ” + map.size() + ” 耗时 : ” + (end – begin)
//                    + “ms”);

return map;
} catch (IOException e) {
e.printStackTrace();
}
return map;
}

}