diff --git a/edu.tictactoe/src/main/java/edu/tictactoe/Board.java b/edu.tictactoe/src/main/java/edu/tictactoe/Board.java index db51292..d4727b2 100644 --- a/edu.tictactoe/src/main/java/edu/tictactoe/Board.java +++ b/edu.tictactoe/src/main/java/edu/tictactoe/Board.java @@ -17,8 +17,6 @@ import java.awt.Frame; import java.awt.image.BufferedImage; public final class Board { - final static int PlayerUser = 1; - final static int PlayerSystem = 0; private static final BufferedImage xImage = ResourceImageLoader.loadImageFromResource("/x.png"); private static final BufferedImage naughtImage = ResourceImageLoader.loadImageFromResource("/naught.png"); @@ -27,7 +25,7 @@ public final class Board { final BoardButton[] buttons = new BoardButton[9]; - Integer player = Board.PlayerUser; + PlayerEnum player = PlayerEnum.PlayerUser; Frame frame = null; Logger logger = LoggerFactory.getLogger(Board.class); @@ -51,7 +49,7 @@ public final class Board { frame.add(button); } - this.setPlayer(Board.PlayerUser); + this.setPlayer(PlayerEnum.PlayerUser); } public BoardButton[] getButtons() { @@ -63,10 +61,9 @@ public final class Board { // Generate a random integer from 0 to 8. int position = random.nextInt(9); // Generate another guess if position played. - while (getButtons()[position].played) { + while (getButtons()[position].getPlayed()) { position = random.nextInt(9); } - ; return position; } @@ -77,81 +74,81 @@ public final class Board { protected void setPlayerTurnOnBoard() { // Set turn on board - if (player == Board.PlayerUser) { - player = Board.PlayerSystem; - } else if (player == Board.PlayerSystem) { - player = Board.PlayerUser; + if (player == PlayerEnum.PlayerUser) { + player = PlayerEnum.PlayerSystem; + } else if (player == PlayerEnum.PlayerSystem) { + player = PlayerEnum.PlayerUser; } } public ResultEnum checkGamePlay(BoardButton[] buttons) { - if ((buttons[0].played && buttons[4].played && buttons[8].played) + if ((buttons[0].getPlayed() && buttons[4].getPlayed() && buttons[8].getPlayed()) && - buttons[0].player == buttons[4].player - && buttons[4].player == buttons[8].player) { + buttons[0].getPlayer() == buttons[4].getPlayer() + && buttons[4].getPlayer() == buttons[8].getPlayer()) { return ResultEnum.winner; } - if ((buttons[2].played && buttons[4].played && buttons[6].played) + if ((buttons[2].getPlayed() && buttons[4].getPlayed() && buttons[6].getPlayed()) && - buttons[2].player == buttons[4].player - && buttons[4].player == buttons[6].player) { + buttons[2].getPlayer() == buttons[4].getPlayer() + && buttons[4].getPlayer() == buttons[6].getPlayer()) { return ResultEnum.winner; } - if ((buttons[0].played && buttons[1].played && buttons[2].played) + if ((buttons[0].getPlayed() && buttons[1].getPlayed() && buttons[2].getPlayed()) && - buttons[0].player == buttons[1].player - && buttons[1].player == buttons[2].player) { + buttons[0].getPlayer() == buttons[1].getPlayer() + && buttons[1].getPlayer() == buttons[2].getPlayer()) { return ResultEnum.winner; } - if ((buttons[3].played && buttons[4].played && buttons[5].played) + if ((buttons[3].getPlayed() && buttons[4].getPlayed() && buttons[5].getPlayed()) && - buttons[3].player == buttons[4].player - && buttons[4].player == buttons[5].player) { + buttons[3].getPlayer() == buttons[4].getPlayer() + && buttons[4].getPlayer() == buttons[5].getPlayer()) { return ResultEnum.winner; } - if ((buttons[6].played && buttons[7].played && buttons[8].played) + if ((buttons[6].getPlayed() && buttons[7].getPlayed() && buttons[8].getPlayed()) && - buttons[6].player == buttons[7].player - && buttons[7].player == buttons[8].player) { + buttons[6].getPlayer() == buttons[7].getPlayer() + && buttons[7].getPlayer() == buttons[8].getPlayer()) { return ResultEnum.winner; } - if ((buttons[0].played && buttons[3].played && buttons[6].played) + if ((buttons[0].getPlayed() && buttons[3].getPlayed() && buttons[6].getPlayed()) && - buttons[0].player == buttons[3].player - && buttons[3].player == buttons[6].player) { + buttons[0].getPlayer() == buttons[3].getPlayer() + && buttons[3].getPlayer() == buttons[6].getPlayer()) { return ResultEnum.winner; } - if ((buttons[1].played && buttons[4].played && buttons[7].played) + if ((buttons[1].getPlayed() && buttons[4].getPlayed() && buttons[7].getPlayed()) && - buttons[1].player == buttons[4].player - && buttons[4].player == buttons[7].player) { + buttons[1].getPlayer() == buttons[4].getPlayer() + && buttons[4].getPlayer() == buttons[7].getPlayer()) { return ResultEnum.winner; } - if ((buttons[2].played && buttons[5].played && buttons[8].played) + if ((buttons[2].getPlayed() && buttons[5].getPlayed() && buttons[8].getPlayed()) && - buttons[2].player == buttons[5].player - && buttons[5].player == buttons[8].player) { + buttons[2].getPlayer() == buttons[5].getPlayer() + && buttons[5].getPlayer() == buttons[8].getPlayer()) { return ResultEnum.winner; } int count = 0; for (BoardButton boardButton : buttons) { - if (boardButton.played) { + if (boardButton.getPlayed()) { count++; } } @@ -172,7 +169,7 @@ public final class Board { frame.setEnabled(false); // show Winner Dialog - String message = this.player == Board.PlayerUser ? String.format("You") : String.format("System"); + String message = this.player == PlayerEnum.PlayerUser ? String.format("You") : String.format("System"); frame.setTitle("TicTacToe - " + message + " won."); JOptionPane.showMessageDialog(frame, message + " won.", "Winner!", JOptionPane.WARNING_MESSAGE); @@ -199,23 +196,24 @@ public final class Board { //play continues setPlayerTurnOnBoard(); - if (this.player == Board.PlayerSystem) { + if (this.player == PlayerEnum.PlayerSystem) { delay = 1400L; frame.setEnabled(false); timer.schedule(new SystemPlayTask(this), delay); } } - public int getPlayer() { + // current player on board + public PlayerEnum getPlayer() { return this.player; } - public void setPlayer(int player) { + public void setPlayer(PlayerEnum player) { this.player = player; } public Icon setPlayerMark() { - return new ImageIcon(player == Board.PlayerUser ? xImage : naughtImage); + return new ImageIcon(player == PlayerEnum.PlayerUser ? xImage : naughtImage); } } diff --git a/edu.tictactoe/src/main/java/edu/tictactoe/BoardButton.java b/edu.tictactoe/src/main/java/edu/tictactoe/BoardButton.java index 1d4c8b5..45873ab 100644 --- a/edu.tictactoe/src/main/java/edu/tictactoe/BoardButton.java +++ b/edu.tictactoe/src/main/java/edu/tictactoe/BoardButton.java @@ -12,9 +12,10 @@ public class BoardButton extends JButton implements ActionListener { // Board private static final BufferedImage blankImage = ResourceImageLoader.loadImageFromResource("/blank.png"); - final Board board; - Boolean played = false; - Integer player = -1; + final private Board board; + private Boolean played = false; + // player that played as this position + private PlayerEnum player = null; public BoardButton(String label, ImageIcon imageIcon, Board board) { super(label, imageIcon); @@ -27,13 +28,30 @@ public class BoardButton extends JButton implements ActionListener { return blankImage; } + Boolean getPlayed() { + return played; + } + + private void setPlayer(final PlayerEnum boardPlayer) { + this.player = boardPlayer; + } + + public PlayerEnum getPlayer() { + return player; + } + + public Board getBoard(){ + return board; + } + @Override public void actionPerformed(ActionEvent e) { - if(this.played) return; - + if (this.played) + return; + + setPlayer(board.player); this.setIcon(board.setPlayerMark()); this.played = true; - this.player = board.player; board.PlayEventUpdate(); } diff --git a/edu.tictactoe/src/main/java/edu/tictactoe/PlayerEnum.java b/edu.tictactoe/src/main/java/edu/tictactoe/PlayerEnum.java new file mode 100644 index 0000000..bfc29d9 --- /dev/null +++ b/edu.tictactoe/src/main/java/edu/tictactoe/PlayerEnum.java @@ -0,0 +1,5 @@ +package edu.tictactoe; + +public enum PlayerEnum { + PlayerSystem, PlayerUser; +} diff --git a/edu.tictactoe/src/main/java/edu/tictactoe/Referee.aj b/edu.tictactoe/src/main/java/edu/tictactoe/Referee.aj index 76ed17f..c122beb 100644 --- a/edu.tictactoe/src/main/java/edu/tictactoe/Referee.aj +++ b/edu.tictactoe/src/main/java/edu/tictactoe/Referee.aj @@ -10,9 +10,9 @@ public aspect Referee { // call the plays. { ResultEnum oval = proceed(buttons); - Logger logger = LoggerFactory.getLogger(Board.class); + Logger logger = LoggerFactory.getLogger(Referee.class); - logger.info(String.format("Checking Board play: %s ", oval)); + logger.info(String.format("Checking Board play: %s. ", oval)); return oval; }