package useful; import java.util.*; import java.util.Map.Entry; import components.Figure; import util.ChessfigureConstants; public class TextChessField { private static final int[] fieldConversion = {57,58,59,60,61,62,63,64, 49,50,51,52,53,54,55,56, 41,42,43,44,45,46,47,48, 33,34,35,36,37,38,39,40, 25,26,27,28,29,30,31,32, 17,18,19,20,21,22,23,24, 9,10,11,12,13,14,15,16, 1, 2, 3, 4, 5, 6, 7, 8}; private TextChessField() { } /* * Gibt eine (Schachfeld)HashMap als Text "grafisch" aus * @param field Hashmap mit Schachfiguren * @return "grafischer" String, welcher ausgegeben werden kann */ public static String fieldToString(HashMap<Integer, Byte> field) { String fieldArray[] = new String [65]; for(int i=1;i<=64;i++) { fieldArray[i] = " "; } Iterator<Entry<Integer,Byte>> it = field.entrySet().iterator(); while(it.hasNext()) { Map.Entry<Integer, Byte> pair = (Map.Entry<Integer, Byte>) it.next(); String figure = new String(); Figure fig = ChessfigureConstants.makeFigureFromByte(pair.getValue()); figure = String.valueOf(fig.getFigureLetter()); switch(fig.getColor()) { case ChessfigureConstants.WHITE: figure+="W"; break; case ChessfigureConstants.BLACK: figure+="S"; } fieldArray[pair.getKey()] = figure; } //mal wieder konvertierung zwischen feldern...oben links ist hierdurch Feld1 String fieldArrayConvert[] = new String [65]; for(int i=1; i<=64; i++) { fieldArrayConvert[i]=fieldArray[fieldConversion[i-1]]; } String textChessField = ""; String borderH = " ---- ---- ---- ---- ---- ---- ---- ---- "+"\n"; String borderV[] = {"","","","","","","",""}; textChessField += borderH; for(int i=0;i<8;i++) { for(int j = ((i+1)*8-8)+1;j<=(i+1)*8;j++ ) { borderV[i] += "| "+fieldArrayConvert[j]+" "; } borderV[i] += "|"+"\n"; textChessField += borderV[i]; textChessField += borderH; } return textChessField; } }