iaaaaaaaaaaaaaa
This commit is contained in:
@@ -8,7 +8,6 @@ import chess.controller.commands.NewGameCommand;
|
|||||||
import chess.model.ChessBoard;
|
import chess.model.ChessBoard;
|
||||||
import chess.model.Game;
|
import chess.model.Game;
|
||||||
import chess.view.consolerender.Console;
|
import chess.view.consolerender.Console;
|
||||||
import chess.view.simplerender.Window;
|
|
||||||
|
|
||||||
public class App {
|
public class App {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ import chess.model.Coordinate;
|
|||||||
import chess.model.Game;
|
import chess.model.Game;
|
||||||
import chess.model.Piece;
|
import chess.model.Piece;
|
||||||
|
|
||||||
public class GetAllowedMovesCommand extends Command {
|
public class GetAllowedMovesPieceCommand extends Command {
|
||||||
|
|
||||||
private final Coordinate start;
|
private final Coordinate start;
|
||||||
private List<Coordinate> destinations;
|
private List<Coordinate> destinations;
|
||||||
|
|
||||||
public GetAllowedMovesCommand(Coordinate start) {
|
public GetAllowedMovesPieceCommand(Coordinate start) {
|
||||||
this.start = start;
|
this.start = start;
|
||||||
this.destinations = new ArrayList<>();
|
this.destinations = new ArrayList<>();
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package chess.controller.commands;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import chess.controller.Command;
|
||||||
|
import chess.controller.OutputSystem;
|
||||||
|
import chess.model.Game;
|
||||||
|
import chess.model.Move;
|
||||||
|
|
||||||
|
public class GetPlayerMovesCommand extends Command {
|
||||||
|
|
||||||
|
private List<Move> moves;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandResult execute(Game game, OutputSystem outputSystem) {
|
||||||
|
this.moves = game.getBoard().getAllowedMoves(game.getPlayerTurn());
|
||||||
|
return CommandResult.NotMoved;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Move> getMoves() {
|
||||||
|
return moves;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -137,21 +137,54 @@ public class ChessBoard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasAllowedMoves(Color player) {
|
public boolean hasAllowedMoves(Color player) {
|
||||||
for (int i = 0; i < Coordinate.VALUE_MAX; i++) {
|
// for (int i = 0; i < Coordinate.VALUE_MAX; i++) {
|
||||||
for (int j = 0; j < Coordinate.VALUE_MAX; j++) {
|
// for (int j = 0; j < Coordinate.VALUE_MAX; j++) {
|
||||||
Coordinate attackCoords = new Coordinate(i, j);
|
// Coordinate attackCoords = new Coordinate(i, j);
|
||||||
Piece attackPiece = pieceAt(attackCoords);
|
// Piece attackPiece = pieceAt(attackCoords);
|
||||||
if (attackPiece == null)
|
// if (attackPiece == null)
|
||||||
|
// continue;
|
||||||
|
|
||||||
|
// if (attackPiece.getColor() != player)
|
||||||
|
// continue;
|
||||||
|
|
||||||
|
// if (!getAllowedMoves(attackCoords).isEmpty())
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
return !getAllowedMoves(player).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Move> getAllowedMoves(Color player) {
|
||||||
|
List<Move> result = new ArrayList<>();
|
||||||
|
|
||||||
|
for (int x = 0; x < Coordinate.VALUE_MAX; x++) {
|
||||||
|
for (int y = 0; y < Coordinate.VALUE_MAX; y++) {
|
||||||
|
|
||||||
|
Coordinate start = new Coordinate(x, y);
|
||||||
|
|
||||||
|
Piece piece = pieceAt(start);
|
||||||
|
if (piece == null || piece.getColor() != player)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (attackPiece.getColor() != player)
|
for (int i = 0; i < Coordinate.VALUE_MAX; i++) {
|
||||||
continue;
|
for (int j = 0; j < Coordinate.VALUE_MAX; j++) {
|
||||||
|
Coordinate destination = new Coordinate(i, j);
|
||||||
|
Move move = new Move(start, destination);
|
||||||
|
|
||||||
if (!getAllowedMoves(attackCoords).isEmpty())
|
PiecePathChecker piecePathChecker = new PiecePathChecker(this,
|
||||||
return true;
|
move);
|
||||||
|
if (!piecePathChecker.isValid())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
applyMove(move);
|
||||||
|
if (!isKingInCheck(player))
|
||||||
|
result.add(move);
|
||||||
|
undoLastMove();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Coordinate> getAllowedMoves(Coordinate pieceCoords) {
|
public List<Coordinate> getAllowedMoves(Coordinate pieceCoords) {
|
||||||
@@ -256,7 +289,6 @@ public class ChessBoard {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Move getLastMove() {
|
public Move getLastMove() {
|
||||||
return this.lastMove;
|
return this.lastMove;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import java.awt.event.MouseAdapter;
|
|||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
@@ -20,8 +21,9 @@ import chess.controller.Command.CommandResult;
|
|||||||
import chess.controller.CommandExecutor;
|
import chess.controller.CommandExecutor;
|
||||||
import chess.controller.OutputSystem;
|
import chess.controller.OutputSystem;
|
||||||
import chess.controller.commands.CastlingCommand;
|
import chess.controller.commands.CastlingCommand;
|
||||||
import chess.controller.commands.GetAllowedMovesCommand;
|
import chess.controller.commands.GetAllowedMovesPieceCommand;
|
||||||
import chess.controller.commands.GetPieceAtCommand;
|
import chess.controller.commands.GetPieceAtCommand;
|
||||||
|
import chess.controller.commands.GetPlayerMovesCommand;
|
||||||
import chess.controller.commands.MoveCommand;
|
import chess.controller.commands.MoveCommand;
|
||||||
import chess.controller.commands.PromoteCommand;
|
import chess.controller.commands.PromoteCommand;
|
||||||
import chess.controller.commands.PromoteCommand.PromoteType;
|
import chess.controller.commands.PromoteCommand.PromoteType;
|
||||||
@@ -139,7 +141,7 @@ public class Window extends JFrame implements OutputSystem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean previewMoves(int x, int y) {
|
private boolean previewMoves(int x, int y) {
|
||||||
GetAllowedMovesCommand movesCommand = new GetAllowedMovesCommand(new Coordinate(x, y));
|
GetAllowedMovesPieceCommand movesCommand = new GetAllowedMovesPieceCommand(new Coordinate(x, y));
|
||||||
if (sendCommand(movesCommand) == CommandResult.NotAllowed)
|
if (sendCommand(movesCommand) == CommandResult.NotAllowed)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -196,6 +198,15 @@ public class Window extends JFrame implements OutputSystem {
|
|||||||
@Override
|
@Override
|
||||||
public void playerTurn(chess.model.Color color) {
|
public void playerTurn(chess.model.Color color) {
|
||||||
this.displayText.setText("Current turn: " + color);
|
this.displayText.setText("Current turn: " + color);
|
||||||
|
|
||||||
|
// dumb IA
|
||||||
|
if (color == chess.model.Color.Black) {
|
||||||
|
GetPlayerMovesCommand cmd = new GetPlayerMovesCommand();
|
||||||
|
sendCommand(cmd);
|
||||||
|
List<Move> moves = cmd.getMoves();
|
||||||
|
int random = new Random().nextInt(moves.size());
|
||||||
|
sendCommand(new MoveCommand(moves.get(random)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user