Closed joel-magnusson closed 8 years ago
Det stämmer, den interna representationen för brädet i board är en 2d array av int i 10x10. Denna array är inte tillgänglig utanför klassen. Man kan be om värdet för en enskild ruta, men då accepteras bara förfrågningar för x och y inom 1-8.
Det finns viss dokumentation i form av javadoc som inte är uppdaterad och som pratar om en 10x10 array. Tror den finns i gameBot.
Både reversi och Othello spelas på 8x8 bräden. Det är visserligen enkelt att välja vilket jämt tal som helst men jag ser inte nyttan med det.
Det finns idag en metod som låter en komma åt värdet för varje ruta. Är inte den tillräcklig? Då vi ändå inte vill ge tillgång till den interna representationen direkt får man antingen i board eller i sin bot loopa över alla rutor.
Det går att lägga till i board. Men det är nog enklare om var och en skapar sin egna representation i sin egen klass med hjälp av de metoder som redan finns i board.
public int getPieceInformation(int x, int y)
Fast, anledningen till varför jag tycker det vore rimligt att ha både
public int getPieceInformation(int x, int y)
och t.ex.
public int[][] getboardInformation()
är att vi annars kommer ha en kodsnutt likt
public int[][] getBlablabla(){
int[][] blablabla = ...
for(int i=1;i<9;i++){
for(int j=1;j<9;j++){
blablabla[i][j] = getPieceInformation(i, j)
}
}
return blablabla;
}
På 711 ställen i koden, då flera lär göra sin egen funktion för det. Därför kan vi minska lite på detta genom att helt enkelt tillhandahålla detta för samtliga redan från början. Så blir andras kod lite mer lättläst också, när det blir samma funktionsanrop som utnyttjas. Om du vill ha det som en separat funktion, ej i Board-klassen, så är det också okej. Bara vi slipper att alla gör var sin!
Så nu har jag fixat detta, en mycket vacker lösning.
Just nu är brädet 10x10, om jag förstått det hela korrekt? Vad är anledningen till detta? Antar att det endast är ett designval för att underlätta beräkning av antalet "flip" i diverse riktningar?
Så länge dessa extra element aldrig kan synas utanför klassen så kan jag dock acceptera det.
Also. Vill vi tillåta bräden i annan storlek än default?