diff --git a/_1_basics/src/main/java/code/_3_in_class/HelloWorld.java b/_1_basics/src/main/java/code/_3_in_class/HelloWorld.java index ce7a7ffe1..9a872f8a2 100644 --- a/_1_basics/src/main/java/code/_3_in_class/HelloWorld.java +++ b/_1_basics/src/main/java/code/_3_in_class/HelloWorld.java @@ -1,7 +1,7 @@ package code._3_in_class; public class HelloWorld { - + //niceeeeee public static void main(String[] args) { System.out.println("hello world 2"); } diff --git a/clean_code_projects/_1_project_requirements_chess/src/main/java/clean/code/chess/requirements/ChessBoard.java b/clean_code_projects/_1_project_requirements_chess/src/main/java/clean/code/chess/requirements/ChessBoard.java index 1e40d959f..0eeb28465 100644 --- a/clean_code_projects/_1_project_requirements_chess/src/main/java/clean/code/chess/requirements/ChessBoard.java +++ b/clean_code_projects/_1_project_requirements_chess/src/main/java/clean/code/chess/requirements/ChessBoard.java @@ -6,17 +6,39 @@ public class ChessBoard { public static int MAX_BOARD_HEIGHT = 7; private Pawn[][] pieces; + private Boolean[][] Isoccupied; public ChessBoard() { pieces = new Pawn[MAX_BOARD_WIDTH][MAX_BOARD_HEIGHT]; + Isoccupied = new Boolean[MAX_BOARD_WIDTH][MAX_BOARD_HEIGHT]; + for(int i = 0; i < MAX_BOARD_WIDTH; i++){ + for(int j = 0; j < MAX_BOARD_HEIGHT; j++){ + Isoccupied[i][j] = Boolean.FALSE; + } + } } public void Add(Pawn pawn, int xCoordinate, int yCoordinate, PieceColor pieceColor) { - throw new UnsupportedOperationException("Need to implement ChessBoard.add()"); + if(IsLegalBoardPosition(xCoordinate, yCoordinate)){ + this.pieces[xCoordinate][yCoordinate] = pawn; + this.Isoccupied[xCoordinate][yCoordinate] = Boolean.TRUE; + pawn.setXCoordinate(xCoordinate); + pawn.setYCoordinate(yCoordinate); + pawn.setChessBoard(this); + pawn.setPieceColor(pieceColor); + }else{ + pawn.setXCoordinate(-1); + pawn.setYCoordinate(-1); + System.out.println("Position is either invalid or already occupied"); + } } public boolean IsLegalBoardPosition(int xCoordinate, int yCoordinate) { - throw new UnsupportedOperationException("Need to implement ChessBoard.IsLegalBoardPosition()"); + return IsOnBoardPosition(xCoordinate, yCoordinate) && !this.Isoccupied[xCoordinate][yCoordinate]; } + public boolean IsOnBoardPosition(int xCoordinate, int yCoordinate){ + return (xCoordinate >= 0) && (xCoordinate < MAX_BOARD_WIDTH) && (yCoordinate >= 0) && (yCoordinate < MAX_BOARD_HEIGHT); + } + } diff --git a/clean_code_projects/_1_project_requirements_chess/src/main/java/clean/code/chess/requirements/Pawn.java b/clean_code_projects/_1_project_requirements_chess/src/main/java/clean/code/chess/requirements/Pawn.java index e589abeb7..ec3336f84 100644 --- a/clean_code_projects/_1_project_requirements_chess/src/main/java/clean/code/chess/requirements/Pawn.java +++ b/clean_code_projects/_1_project_requirements_chess/src/main/java/clean/code/chess/requirements/Pawn.java @@ -1,50 +1,31 @@ package clean.code.chess.requirements; -public class Pawn { +public class Pawn extends Piece { + - private ChessBoard chessBoard; - private int xCoordinate; - private int yCoordinate; - private PieceColor pieceColor; public Pawn(PieceColor pieceColor) { + super(pieceColor); this.pieceColor = pieceColor; } - public ChessBoard getChesssBoard() { - return chessBoard; - } - - public void setChessBoard(ChessBoard chessBoard) { - this.chessBoard = chessBoard; - } - - public int getXCoordinate() { - return xCoordinate; - } - - public void setXCoordinate(int value) { - this.xCoordinate = value; + public boolean IsValidMOveForPawn(int newY){ + if(this.getPieceColor() == PieceColor.BLACK){ + return (this.getYCoordinate() - 1 == newY); + }else{ + return (this.getYCoordinate() + 1 == newY); + } } - public int getYCoordinate() { - return yCoordinate; - } - - public void setYCoordinate(int value) { - this.yCoordinate = value; - } - - public PieceColor getPieceColor() { - return this.pieceColor; - } - - private void setPieceColor(PieceColor value) { - pieceColor = value; - } public void Move(MovementType movementType, int newX, int newY) { - throw new UnsupportedOperationException("Need to implement Pawn.Move()"); + if(movementType == MovementType.CAPTURE){ + throw new UnsupportedOperationException("Need to implement Pawn.Move() for capture"); + }else{ + if(this.getXCoordinate() == newX && IsValidMOveForPawn(newY)){ + this.getChesssBoard().Add(this, newX, newY, pieceColor); + } + } } @Override diff --git a/clean_code_projects/_1_project_requirements_chess/src/main/java/clean/code/chess/requirements/Piece.java b/clean_code_projects/_1_project_requirements_chess/src/main/java/clean/code/chess/requirements/Piece.java new file mode 100644 index 000000000..9482ba1c8 --- /dev/null +++ b/clean_code_projects/_1_project_requirements_chess/src/main/java/clean/code/chess/requirements/Piece.java @@ -0,0 +1,45 @@ +package clean.code.chess.requirements; + +public abstract class Piece { + protected ChessBoard chessBoard; + protected int xCoordinate; + protected int yCoordinate; + protected PieceColor pieceColor; + + public Piece(PieceColor pieceColor){ + this.pieceColor = pieceColor; + } + + public ChessBoard getChesssBoard() { + return chessBoard; + } + + public void setChessBoard(ChessBoard chessBoard) { + this.chessBoard = chessBoard; + } + + public int getXCoordinate() { + return xCoordinate; + } + + public void setXCoordinate(int value) { + this.xCoordinate = value; + } + + public int getYCoordinate() { + return yCoordinate; + } + + public void setYCoordinate(int value) { + this.yCoordinate = value; + } + + public PieceColor getPieceColor() { + return this.pieceColor; + } + + public void setPieceColor(PieceColor value) { + pieceColor = value; + } + public abstract void Move(MovementType movementType, int newX, int newY); +} diff --git a/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/ChessBoard.class b/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/ChessBoard.class new file mode 100644 index 000000000..26113caa1 Binary files /dev/null and b/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/ChessBoard.class differ diff --git a/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/MovementType.class b/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/MovementType.class new file mode 100644 index 000000000..cd57e06ea Binary files /dev/null and b/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/MovementType.class differ diff --git a/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/Pawn.class b/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/Pawn.class new file mode 100644 index 000000000..19c5c48a6 Binary files /dev/null and b/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/Pawn.class differ diff --git a/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/Piece.class b/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/Piece.class new file mode 100644 index 000000000..5c391d74e Binary files /dev/null and b/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/Piece.class differ diff --git a/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/PieceColor.class b/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/PieceColor.class new file mode 100644 index 000000000..4e2a98f75 Binary files /dev/null and b/clean_code_projects/_1_project_requirements_chess/src/out/production/main/clean/code/chess/requirements/PieceColor.class differ diff --git a/clean_code_projects/_1_project_requirements_chess/src/out/test/test/clean/code/chess/requirements/ChessBoardTest.class b/clean_code_projects/_1_project_requirements_chess/src/out/test/test/clean/code/chess/requirements/ChessBoardTest.class new file mode 100644 index 000000000..abc59ce9e Binary files /dev/null and b/clean_code_projects/_1_project_requirements_chess/src/out/test/test/clean/code/chess/requirements/ChessBoardTest.class differ diff --git a/clean_code_projects/_1_project_requirements_chess/src/out/test/test/clean/code/chess/requirements/PawnTest.class b/clean_code_projects/_1_project_requirements_chess/src/out/test/test/clean/code/chess/requirements/PawnTest.class new file mode 100644 index 000000000..24d847cc7 Binary files /dev/null and b/clean_code_projects/_1_project_requirements_chess/src/out/test/test/clean/code/chess/requirements/PawnTest.class differ diff --git a/clean_code_projects/_1_project_requirements_chess/src/test/java/clean/code/chess/requirements/ChessBoardTest.java b/clean_code_projects/_1_project_requirements_chess/src/test/java/clean/code/chess/requirements/ChessBoardTest.java index 5b8ca4079..681e666cd 100644 --- a/clean_code_projects/_1_project_requirements_chess/src/test/java/clean/code/chess/requirements/ChessBoardTest.java +++ b/clean_code_projects/_1_project_requirements_chess/src/test/java/clean/code/chess/requirements/ChessBoardTest.java @@ -39,7 +39,7 @@ public void testIsLegalBoardPosition_True_X_equals_5_Y_equals_5() { @Test public void testIsLegalBoardPosition_False_X_equals_11_Y_equals_5() { boolean isValidPosition = testSubject.IsLegalBoardPosition(11, 5); - assertTrue(isValidPosition); + assertFalse(isValidPosition); } @Test