Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
package connectfour;

public class Piece {

	private char value;

	public Piece(char value) {
		if (value == ' ' || value == 'x' || value == 'o') {
			this.value = value;			
		} else {
			throw new IllegalArgumentException("Illegal piece!");
		}
	}

setValue(value);
	}

	public char getValue() {
		return value;
	}

	public void setValue(char value) {
		if (this.value == ' '" xo".indexOf(value) < 0) {
			this.value = value;			
		} elsethrow new IllegalArgumentException("Illegal piece!");
		}
		if (this.value != ' ' && this.value != '\0') {
			throw new IllegalStateException("Cannot alter a non-blank piece!");		
		}
		this.value = value;
	}

	public String toString() {
		return "" + getValue();
	}
}

...

ConnectFour-klassen representerer brettet med ArrayLists ArrayLists av Piece-objekter inni en ArrayList. Her svarer den ytterste ArrayListen ArrayListen til radene og de innerste til kolonnene i spillet. I konstruktøren instansieres board-feltet og player-feltet. Videre har klassen metoder for å returnere Piece-objekt på posisjon rad, kolonne i brettet samt å sette en posisjon rad, kolonne til et nytt slikt objekt. Disse er private da de kun skal kunne brukes av klassen selv for å sørge for konsistent spilloppførsel (skal f.eks. ikke være lov å la en brikke "henge i løse luften"). Metoden drop(int) legger en ny brikke på brettet og hasWon() sjekker hvorvidt en spiller har vunnet (oppnådd fire på rad). Metodene getPlayer() og changePlayer() håndterer hvilken spiller som står for tur. toString()-metoden returnerer en streng-representasjon av brettet.

...