import java.util.Vector; /** * GameInformation クラスは対局情報を保持します。 */ public class GameInformation{ private String blackPlayer; private String whitePlayer; private String blackRank; private String whiteRank; private String event; private String gameName; private String date; private String timeLimit; private String komi; private String rule; private String result; private String place; private String gameComment; private String size; /** * 空のインスタンスを生成します。 */ public GameInformation(){ blackPlayer=""; whitePlayer=""; blackRank=""; whiteRank=""; event=""; gameName=""; date=""; timeLimit=""; komi=""; rule=""; result=""; place=""; gameComment=""; size=""; } /** * 対局情報を編集するときに呼び出します。SGF形式のデータツリーから、対局情報のみ抽出して保持します。 * @param vector SGF形式データ */ public void editGameInformation(Vector vector){ String gameInfo=""; for(int i=0;i<vector.size();i++){ if(vector.get(i) instanceof String){ String str=(String)vector.get(i); if(str.startsWith("B[")==false && str.startsWith("W[")==false){ gameInfo=str; break; } } } editPlayer(gameInfo); editEvent(gameInfo); editGameName(gameInfo); editDate(gameInfo); editTimeLimit(gameInfo); editKomi(gameInfo); editRule(gameInfo); editResult(gameInfo); editPlace(gameInfo); editGameComment(gameInfo); editSize(gameInfo); } /** * 対局情報を取得します。 * @return 対局情報をSGF形式に変換したString */ public String getSgfGameInformation(){ String sgfGameInformation=new String(editSgfBlackPlayer(blackPlayer) + editSgfWhitePlayer(whitePlayer) + editSgfBlackRank(blackRank) + editSgfWhiteRank(whiteRank) + editSgfEvent(event) + editSgfGameName(gameName) + editSgfDate(date) + editSgfTimeLimit(timeLimit) + editSgfKomi(komi) + editSgfRule(rule) + editSgfResult(result) + editSgfPlace(place) + editSgfGameComment(gameComment) + editSgfSize(size)); return sgfGameInformation; } /** * 黒番の対局者名を設定します。 * @param str 黒番の対局者名を表すString */ public void setBlackPlayer(String str){ blackPlayer=str; } /** * 黒番の対局者名を取得します。 * @return 黒番の対局者名を表すString */ public String getBlackPlayer(){ return blackPlayer; } /** * 白番の対局者名を設定します。 * @param str 白番の対局者名を表すString */ public void setWhitePlayer(String str){ whitePlayer=str; } /** * 白番の対局者名を取得します。 * @return 白番の対局者名を表すString */ public String getWhitePlayer(){ return whitePlayer; } /** * 黒番の段位を設定します。 * @param str 黒番の段位を表すString */ public void setBlackRank(String str){ blackRank=str; } /** * 黒番の段位を取得する。 * @return 黒番の段位を表すString */ public String getBlackRank(){ return blackRank; } /** * 白番の段位を設定します。 * @param str 白番の段位を表すString */ public void setWhiteRank(String str){ whiteRank=str; } /** * 白番の段位を取得します。 * @return 白番の段位を表すString */ public String getWhiteRank(){ return whiteRank; } /** * 大会名を設定します。 * @param str 大会名を表すString */ public void setEvent(String str){ event=str; } /** * 大会名を取得します。 * @return 大会名を表すString */ public String getEvent(){ return event; } /** * 対局名を設定します。 * @param str 対局名を表すString */ public void setGameName(String str){ gameName=str; } /** * 対局名を取得します。 * @return 対局名を表すString */ public String getGameName(){ return gameName; } /** * 対局日を設定します。 * @param str 対局日を表すString */ public void setDate(String str){ date=str; } /** * 対局日を取得します。 * @return 対局日を表すString */ public String getDate(){ return date; } /** * 持ち時間を設定します。 * @param str 持ち時間を表すString */ public void setTimeLimit(String str){ timeLimit=str; } /** * 持ち時間を取得します。 * @return 持ち時間を表すString */ public String getTimeLimit(){ return timeLimit; } /** * コミを設定します。 * @param str コミを表すString */ public void setKomi(String str){ komi=str; } /** * コミを取得します。 * @return コミを表すString */ public String getKomi(){ return komi; } /** * ルールを設定します。 * @param str ルールを表すString */ public void setRule(String str){ rule=str; } /** * ルールを取得します。 * @return ルールを表すString */ public String getRule(){ return rule; } /** * 結果を設定します。 * @param str 結果を表すString */ public void setResult(String str){ result=str; } /** * 結果を取得します。 * @return 結果を表すString */ public String getResult(){ return result; } /** * 対局場所を設定します。 * @param str 対局場所を表すString */ public void setPlace(String str){ place=str; } /** * 対局場所を取得します。 * @return 対局場所を表すString */ public String getPlace(){ return place; } /** * 対局コメントを設定します。 * @param str 対局コメントを表すString */ public void setGameComment(String str){ gameComment=str; } /** * 対局コメントを取得します。 * @return 対局コメントを表すString */ public String getGameComment(){ return gameComment; } /** * 路数を設定します。 * @param str 路数を表すString */ public void setSize(String str){ size=str; } /** * 路数を取得します。 * @return 路数を表すString */ public String getSize(){ return size; } //------------------------------------------------------------------------ private void editPlayer(String str){ int startIx=str.indexOf("PB["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ blackPlayer=str.substring(startIx+3,endIx); } } startIx=str.indexOf("PW["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ whitePlayer=str.substring(startIx+3,endIx); } } startIx=str.indexOf("BR["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ blackRank=str.substring(startIx+3,endIx); } } startIx=str.indexOf("WR["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ whiteRank=str.substring(startIx+3,endIx); } } } //------------------------------------------------------------------------ private void editEvent(String str){ int startIx=str.indexOf("EV["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ event=str.substring(startIx+3,endIx); } } } //------------------------------------------------------------------------ private void editGameName(String str){ int startIx=str.indexOf("GN["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ gameName=str.substring(startIx+3,endIx); } } } //------------------------------------------------------------------------ private void editDate(String str){ int startIx=str.indexOf("DT["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ date=str.substring(startIx+3,endIx); } } } //------------------------------------------------------------------------ private void editTimeLimit(String str){ int startIx=str.indexOf("TM["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ timeLimit=str.substring(startIx+3,endIx); } } } //------------------------------------------------------------------------ private void editKomi(String str){ int startIx=str.indexOf("KM["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ komi=str.substring(startIx+3,endIx); } } } //------------------------------------------------------------------------ private void editRule(String str){ int startIx=str.indexOf("RU["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ rule=str.substring(startIx+3,endIx); } } } //------------------------------------------------------------------------ private void editResult(String str){ int startIx=str.indexOf("RE["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ result=str.substring(startIx+3,endIx); } } } //------------------------------------------------------------------------ private void editPlace(String str){ int startIx=str.indexOf("PC["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ place=str.substring(startIx+3,endIx); } } } //------------------------------------------------------------------------ private void editGameComment(String str){ int startIx=str.indexOf("GC["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ gameComment=str.substring(startIx+3,endIx); } } } //------------------------------------------------------------------------ private void editSize(String str){ int startIx=str.indexOf("SZ["); if(startIx!=-1){ int endIx=str.indexOf("]",startIx); if(endIx!=-1){ size=str.substring(startIx+3,endIx); } } } //------------------------------------------------------------------------ private String editSgfBlackPlayer(String str){ return new String("PB[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfWhitePlayer(String str){ return new String("PW[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfBlackRank(String str){ return new String("BR[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfWhiteRank(String str){ return new String("WR[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfEvent(String str){ return new String("EV[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfGameName(String str){ return new String("GN[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfDate(String str){ return new String("DT[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfTimeLimit(String str){ return new String("TM[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfKomi(String str){ return new String("KM[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfRule(String str){ return new String("RU[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfResult(String str){ return new String("RE[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfPlace(String str){ return new String("PC[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfGameComment(String str){ return new String("GC[" + str + "]"); } //------------------------------------------------------------------------ private String editSgfSize(String str){ return new String("SZ[" + str + "]"); } }