更多:开源围棋…
掌中围棋2.4版本源码,包含一个完善的SGF棋谱文件解析器,速度快,内存占用低适合Android使用
https://github.com/uestccokey/HandsGo
SGFTree.java
package com.soyomaker.handsgo.go.sgf;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Vector;
/**
* This is a class wich contains a TreeNode. It used to store complete game
* trees.
*
*/
public class SGFTree {
protected TreeNode History; // the game history
private final int maxbuffer = 4096;
private char[] Buffer = new char[maxbuffer]; // the buffer for reading of
// files
private int BufferN;
private static int lastnl = 0;
/** initlialize with a specific Node */
public SGFTree(Node n) {
History = new TreeNode(n);
History.node().main(true);
}
/** return the top node of this game tree */
public TreeNode top() {
return History;
}
char readNext(BufferedReader in) throws IOException {
int c = readChar(in);
while (c == '\n' || c == '\t' || c == ' ') {
if (c == -1)
throw new IOException();
c = readChar(in);
}
return (char) c;
}
char readChar(BufferedReader in) throws IOException {
int c;
while (true) {
c = in.read();<