added captures, movement, legalmoves hover, and basics of game
This commit is contained in:
61
Chess.java
61
Chess.java
@@ -1,9 +1,10 @@
|
||||
import java.awt.*;
|
||||
import java.awt.Color;
|
||||
import java.awt.event.*;
|
||||
import java.util.ArrayList;
|
||||
import javax.swing.*;
|
||||
|
||||
public class Chess extends JPanel implements ActionListener {
|
||||
public class Chess extends JPanel implements ActionListener, MouseListener {
|
||||
|
||||
// pieces stuff
|
||||
Board board;
|
||||
@@ -14,6 +15,10 @@ public class Chess extends JPanel implements ActionListener {
|
||||
Timer gameTimer;
|
||||
Color creme = new Color(254, 245, 218);
|
||||
Color brown = new Color(121, 92, 50);
|
||||
Piece selected;
|
||||
ArrayList<Position> legalMoves;
|
||||
Image hover;
|
||||
String turnColor;
|
||||
|
||||
public Chess(int boardWidth, int boardHeight) {
|
||||
this.boardWidth = boardWidth;
|
||||
@@ -21,11 +26,16 @@ public class Chess extends JPanel implements ActionListener {
|
||||
setPreferredSize(new Dimension(this.boardWidth, this.boardHeight));
|
||||
setBackground(Color.WHITE);
|
||||
setFocusable(true);
|
||||
addMouseListener(this);
|
||||
|
||||
board = new Board();
|
||||
|
||||
selected = null;
|
||||
legalMoves = null;
|
||||
turnColor = "White";
|
||||
gameTimer = new Timer(200, this);
|
||||
|
||||
hover = new ImageIcon("sprites/hover.png").getImage();
|
||||
|
||||
gameTimer.start();
|
||||
repaint();
|
||||
}
|
||||
@@ -44,6 +54,13 @@ public class Chess extends JPanel implements ActionListener {
|
||||
|
||||
// draw pieces
|
||||
board.draw(g);
|
||||
|
||||
// draw legalMoves
|
||||
if (legalMoves != null) {
|
||||
for (Position p : legalMoves) {
|
||||
g.drawImage(hover, (p.x + 1) * 40, (p.y + 1) * 40, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void paintComponent(Graphics g) {
|
||||
@@ -55,4 +72,44 @@ public class Chess extends JPanel implements ActionListener {
|
||||
gameLoop();
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void mouseEntered(MouseEvent e) {}
|
||||
|
||||
public void mousePressed(MouseEvent e) {}
|
||||
|
||||
public void mouseReleased(MouseEvent e) {}
|
||||
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
int col = (e.getX() / 40) - 1;
|
||||
int row = (e.getY() / 40) - 1;
|
||||
Position pos = new Position(col, row);
|
||||
Piece newSelected = board.getPiece(col, row);
|
||||
// if selecting one of our own pieces
|
||||
if (newSelected != null && newSelected.color.equals(turnColor)) {
|
||||
legalMoves = newSelected.getLegalMoves(board);
|
||||
selected = newSelected;
|
||||
return;
|
||||
}
|
||||
// if selecting an enemy piece -- must have one of ours selected
|
||||
else if (newSelected != null
|
||||
&& selected != null
|
||||
&& selected.color.equals(turnColor)
|
||||
&& !newSelected.color.equals(turnColor)
|
||||
&& legalMoves.contains(pos)) {
|
||||
board.capture(selected, newSelected);
|
||||
selected = null;
|
||||
legalMoves = null;
|
||||
turnColor = turnColor.equals("White") ? "Black" : "White";
|
||||
}
|
||||
// if selecting a blank square -- must have one of ours selected
|
||||
else if (selected != null && selected.color.equals(turnColor) && legalMoves.contains(pos)) {
|
||||
|
||||
board.move(selected, pos);
|
||||
selected = null;
|
||||
legalMoves = null;
|
||||
turnColor = turnColor.equals("White") ? "Black" : "White";
|
||||
}
|
||||
}
|
||||
|
||||
public void mouseExited(MouseEvent e) {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user