import java.util.*; /** * SgfOrder クラスは、SGF形式の手順データツリーから、実戦手順のみ抽出してString配列で返します。 * @author Jiro Suzuki */ public class SgfOrder{ private String[] order; /** * SGF形式の手順が空のインスタンスを生成します。 */ SgfOrder(){ } /** * SGF形式の手順データツリーから、実戦の手順のみ抽出してString配列で返す。 * @param sgfVectorTree SGF形式の手順データツリー(参考図含む) * @return SGF形式による実戦手順データ(参考図は含まない)。String配列 */ public String[] includeOrder(Vector sgfVectorTree){ //実戦手順作成 Vector wkTree=sgfVectorTree; int repeatMax=wkTree.size(); int ix=0; Vector<String> orderArray=new Vector<String>(); while(ix<repeatMax){ //実戦手順は配列に追加 if(wkTree.get(ix) instanceof String){ orderArray.add((String)wkTree.get(ix)); ix++; //参考図にぶら下がるデータは配列に追加しない。 //参考図以降はVector形式になっているので、それを頼りに判別している。 }else if(wkTree.get(ix) instanceof Vector){ wkTree=(Vector)wkTree.get(ix); repeatMax=wkTree.size(); ix=0; } } order=new String[orderArray.size()]; for(int i=0;i<orderArray.size();i++){ order[i]=(String)orderArray.get(i); } return order; } }