/** * Muehlegame * Copyright (c) 2015, Thomas Ammann, Johannes Finckh * * @author Thomas Amann, Johannes Finckh * @version 1.0 */ package model.impl; import com.google.inject.Inject; import model.IGamefieldGraph; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class GamefieldGraph implements IGamefieldGraph { private static final int NUMBERVERTEX = 24; private List<List<Integer>> adjacencyList; private vertex vertexes[]; @Inject public GamefieldGraph() { adjacencyList = new ArrayList<List<Integer>>(NUMBERVERTEX); for (int i = 0; i < NUMBERVERTEX; i++) { adjacencyList.add(new LinkedList<Integer>()); } createEdges(); vertexes = new vertex[NUMBERVERTEX]; createVertexes(); } private void createVertexes() { for (int i = 0; i < NUMBERVERTEX; i++) { vertexes[i] = new vertex(); vertexes[i].color = 'n'; } } public List<Integer> getAdjacencyList(int vertex) { final int v = (vertex - 1); if ((v < 0) || (v >= NUMBERVERTEX)) { return new ArrayList<Integer>(); } return adjacencyList.get(v); } public boolean setStoneVertex(int v, char color) { final int vertex = v - 1; if ((vertex < 0) || (vertex >= NUMBERVERTEX)) { return false; } if ((color != 'n') && (color != 'w') && (color != 's')) { return false; } vertexes[vertex].color = color; return true; } public char getStoneColorVertex(int v) { final int vertex = v - 1; if ((vertex < 0) || (vertex >= NUMBERVERTEX)) { return 'n'; } return vertexes[vertex].color; } private void createEdges() { try { InputStream stream = getClass().getResourceAsStream("/GamefieldEdges.txt"); BufferedReader in = new BufferedReader(new InputStreamReader(stream)); String zeile = null; while ((zeile = in.readLine()) != null) { String splitresult[] = zeile.split(" "); int temp1 = Integer.parseInt(splitresult[0]); int temp2 = Integer.parseInt(splitresult[1]); adjacencyList.get(temp1).add(temp2); } in.close(); } catch (IOException e) { System.exit(1); } } class vertex { private char color; } }