From 634f932871d8a9442ec06018b709a59d503c710c Mon Sep 17 00:00:00 2001 From: Jacob Signorovitch Date: Mon, 19 May 2025 08:14:00 -0400 Subject: [PATCH] help --- chess/src/chess/Board.java | 11 ++++++++-- chess/src/chess/Game.java | 2 +- chess/src/chess/Player.java | 40 ++++++++++++++++++++++++++++++++----- 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/chess/src/chess/Board.java b/chess/src/chess/Board.java index 353fcc5..e5b3dfc 100644 --- a/chess/src/chess/Board.java +++ b/chess/src/chess/Board.java @@ -1,7 +1,6 @@ package chess; import java.awt.Color; -import java.awt.Rectangle; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -72,10 +71,18 @@ class Board { // Show the moves a piece can take. void displayMoves(Coord coord) { - ArrayList moves = this.get(coord).moves(coord); + Piece piece = this.get(coord); + if (piece == null) return; + ArrayList moves = piece.moves(coord); for (Coord move : moves) this.info.put(move, Info.CANMOVE); } + // Clear moves from screen. + void undisplayMoves(Coord coord) { + ArrayList moves = this.get(coord).moves(coord); + for (Coord move : moves) this.info.remove(move); + } + // Show which piece is selected. void displaySelected(Coord coord) { this.info.put(coord, Info.SELECTED); } diff --git a/chess/src/chess/Game.java b/chess/src/chess/Game.java index 73009f3..4de30cb 100644 --- a/chess/src/chess/Game.java +++ b/chess/src/chess/Game.java @@ -115,5 +115,5 @@ class Game extends World { this.activeActor.click(this.where(posn)); } - public void onKey(String key) { this.activeActor.key(key); } + public void onKeyEvent(String key) { this.activeActor.key(key); } } diff --git a/chess/src/chess/Player.java b/chess/src/chess/Player.java index 863ffbb..fc86c70 100644 --- a/chess/src/chess/Player.java +++ b/chess/src/chess/Player.java @@ -1,15 +1,45 @@ package chess; -// A human-controlled Actor. +import java.util.ArrayList; + +// A human-controlled Actor." class Player extends Actor { Coord selected; // The currently selected piece. Player(Util.Col col, Board board) { super(col, board); } void click(Coord coord) { - this.selected = coord; - this.board.displaySelected(this.selected); - this.board.displayMoves(this.selected); + if (this.board.get(coord) == null) { + this.board.unselect(this.selected); + this.board.undisplayMoves(this.selected); + this.selected = null; + return; + }; + + // Click while something selected. + if (this.selected != null) { + // Click on same piece -- unselect. + if (this.selected.equals(coord)) { + + } else if (this.board.getMoves(this.selected).contains(coord)) { + System.out.println("HHHHHHHHHHERE"); + this.board.move(this.selected, coord); + } + this.board.unselect(this.selected); + this.board.undisplayMoves(this.selected); + this.selected = null; + return; + } else { + this.selected = coord; + this.board.displaySelected(this.selected); + this.board.displayMoves(this.selected); + return; + } + } + + void key(String key) { + this.board.undisplayMoves(this.selected); + this.board.unselect(this.selected); + this.selected = null; } - void key(String key) { this.board.unselect(this.selected); } }