Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hello, I need help I\'m coding a checker game. I need help with the GUI. Here is

ID: 644665 • Letter: H

Question

Hello, I need help I'm coding a checker game. I need help with the GUI. Here is the code

/**
A class designed to play checkers, when a move is available to clic
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Checkers{
//variables
private CheckersButton[][] checkerboard;
private boolean dejaVu;
private CheckersButton jumped, selected;
private boolean jumpUL, jumpUR, jumpLR, jumpLL, up, right, p1Turn, firstClick;

public Checkers(){
jumped = new CheckersButton();
selected = new CheckersButton();
dejaVu = false;
jumpUL = false;
jumpUR = false;
jumpLR = false;
jumpLL = false;
up = false;
right = false;
checkerboard = new CheckersButton[8][8];
firstClick=true;
p1Turn=true;
  
  
//build 8x8 array
boolean crosspattern = true;
for(int i=0;i<8;i++){
crosspattern = !crosspattern;
for(int o=0;i<8;i++){
  
if((crosspattern)&&(i<2)){
CheckersButton temp = new CheckersButton(2, i, o);
temp.addActionListener(temp);
temp.disable();
checkerboard[o][i] = temp;
}else if((crosspattern)&&(i>5)){
CheckersButton temp = new CheckersButton(1, i, o);
temp.addActionListener(temp);
temp.disable();
checkerboard[o][i] = temp;
}else{
checkerboard[o][i] = new CheckersButton(0, i, o);
}
crosspattern = !crosspattern;
}
}
//build GUI in here
  
  
}

//listener for buttons, checks if the piece is valid then highlights other valid locations
public void buttonClick(int x, int y){
if(firstClick){
disableAllButtons();
checkerboard[x][y].enable();
checkUpperLeft(x,y,checkerboard[x][y].getPlayer());
checkUpperRight(x,y,checkerboard[x][y].getPlayer());
checkLowerLeft(x,y,checkerboard[x][y].getPlayer());
checkLowerRight(x,y,checkerboard[x][y].getPlayer());
selected.setxValue(x);
selected.setyValue(y);
firstClick=false;
}
if(!firstClick){
if((x==selected.getxValue())||(y==selected.getyValue())){
disableAllButtons();
enablePlayersButtons(checkerboard[x][y].getPlayer());
return;
}
else if((x>selected.getxValue())||(y>selected.getyValue())){
right=true;
up=true;
}
else if((x<selected.getxValue())||(y>selected.getyValue())){
right=true;
up=true;
}
else if((x>selected.getxValue())||(y<selected.getyValue())){
right=true;
up=true;
}
else if((x<selected.getxValue())||(y<selected.getyValue())){
right=true;
up=true;
}
setAdjacentPiece(x,y);
p1Turn = !p1Turn;
disableAllButtons();
if(p1Turn==true){
enablePlayersButtons(1);
}else{
enablePlayersButtons(2);
}
firstClick=true;
}
}

//disables all buttons so specific ones can be enabled solely
public void disableAllButtons(){
for(int i = 0;i<8;i++){
for(int o=0;o<8;o++){
checkerboard[i][o].disable();
}
}
}

//enables an entire player's buttons, for when they start their turn
public void enablePlayersButtons(int p){
for(int i = 0;i<8;i++){
for(int o=0;o<8;o++){
if(checkerboard[i][o].getPlayer()==p){
checkerboard[i][o].enable();
}
}
}
}

//check for possible move to piece's upper left
public void checkUpperLeft(int x, int y, int player){
if ((x==0)||(y==0)){
return;
}
else if((checkerboard[x-1][y-1].getPlayer() ==0)&&(dejaVu)){
jumpUL = true;
dejaVu = false;
}
else if(checkerboard[x-1][y-1].getPlayer() == 0){
checkerboard[x-1][y-1].enable();
return;
}
else if((checkerboard[x-1][y-1].getPlayer() == player)&&(!dejaVu)){
return;
}
else if((checkerboard[x-1][y-1].getPlayer() != player)&&(!dejaVu)){
dejaVu=true;
checkUpperLeft(x-1,y-1,player);
}
dejaVu=false;
}

//check for possible move to piece's upper right
public void checkUpperRight(int x, int y, int player){
if ((x==7)||(y==0)){
return;
}
else if((checkerboard[x+1][y-1].getPlayer() ==0)&&(dejaVu)){
jumpUR = true;
dejaVu = false;
}
else if(checkerboard[x+1][y-1].getPlayer() == 0){
checkerboard[x+1][y-1].enable();
return;
}
else if((checkerboard[x+1][y-1].getPlayer() == player)&&(!dejaVu)){
return;
}
else if((checkerboard[x+1][y-1].getPlayer() != player)&&(!dejaVu)){
dejaVu=true;
checkUpperRight(x+1,y-1,player);
}
dejaVu = false;
}

//check for possible move to piece's bottom left
public void checkLowerLeft(int x, int y, int player){
if ((x==0)||(y==7)){
return;
}
else if((checkerboard[x-1][y+1].getPlayer() ==0)&&(dejaVu)){
jumpLL = true;
dejaVu = false;
}
else if(checkerboard[x-1][y+1].getPlayer() == 0){
checkerboard[x-1][y+1].enable();
return;
}
else if((checkerboard[x-1][y+1].getPlayer() == player)&&(!dejaVu)){
return;
}
else if((checkerboard[x-1][y+1].getPlayer() != player)&&(!dejaVu)){
dejaVu=true;
checkLowerLeft(x-1,y+1,player);
}
dejaVu=false;
}

//check for possible move to piece's bottom right
public void checkLowerRight(int x, int y, int player){
if ((x==7)||(y==0)){
return;
}
else if((checkerboard[x+1][y+1].getPlayer() ==0)&&(dejaVu)){
jumpLR = true;
dejaVu = false;
}
else if(checkerboard[x+1][y+1].getPlayer() == 0){
checkerboard[x+1][y+1].enable();
return;
}
else if((checkerboard[x+1][y+1].getPlayer() == player)&&(!dejaVu)){
return;
}
else if((checkerboard[x+1][y+1].getPlayer() != player)&&(!dejaVu)){
dejaVu=true;
checkUpperRight(x+1,y+1,player);
}
dejaVu = false;
}

//check for win after move
public void checkWin(){
int p1=0;
int p2=0;
for(int i=0;i<8;i++){
for(int o=0;o<8;o++){
if(checkerboard[i][o].getPlayer()==1){
p1++;
}
else if(checkerboard[i][o].getPlayer()==2){
p2++;
}
}
}
int winner = 0;
winner = Math.max(p1,p2);
if((p1==0)||(p2==0)){
JOptionPane.showMessageDialog(null,"Congratulations! Player "+winner+" has won.");
}
}
//move a piece to adjacent square
public void setAdjacentPiece(int x, int y){
if(jumpUL || jumpUR || jumpLL || jumpLR){
jumpPiece(x,y);
checkWin();
return;
}
else if((up==true)&&(right==true)){
checkerboard[x+1][y-1].setPlayer(checkerboard[x][y].getPlayer());
checkerboard[x][y].setPlayer(0);
}
else if((up==false)&&(right==true)){
checkerboard[x+1][y+1].setPlayer(checkerboard[x][y].getPlayer());
checkerboard[x][y].setPlayer(0);
}
else if((up==true)&&(right==false)){
checkerboard[x-1][y-1].setPlayer(checkerboard[x][y].getPlayer());
checkerboard[x][y].setPlayer(0);
}
else if((up==false)&&(right==false)){
checkerboard[x-1][y+1].setPlayer(checkerboard[x][y].getPlayer());
checkerboard[x][y].setPlayer(0);
}
}

//move a piece to far square and jump a piece
public void jumpPiece(int x, int y){
if((up==true)&&(right==true)){
checkerboard[x+2][y-2].setPlayer(checkerboard[x][y].getPlayer());
removePiece(x+1,y-1);
checkerboard[x][y].setPlayer(0);
}
else if((up==false)&&(right==true)){
checkerboard[x+2][y+2].setPlayer(checkerboard[x][y].getPlayer());
removePiece(x+1,y+1);
checkerboard[x][y].setPlayer(0);
}
else if((up==true)&&(right==false)){
checkerboard[x-2][y-2].setPlayer(checkerboard[x][y].getPlayer());
removePiece(x-1,y-1);
checkerboard[x][y].setPlayer(0);
}
else if((up==false)&&(right==false)){
checkerboard[x-2][y+2].setPlayer(checkerboard[x][y].getPlayer());
removePiece(x-1,y+1);
checkerboard[x][y].setPlayer(0);
}
checkWin();
}

//remove a jumped piece
public void removePiece(int x, int y){
checkerboard[x][y].setPlayer(0);
}

class CheckersButton extends JButton implements ActionListener{
private boolean selected;
private int player, xValue, yValue;
JButton button;
public CheckersButton(int _player, int _xValue, int _yValue){
player = _player;
xValue = _xValue;
yValue = _yValue;
}
public CheckersButton(){
player = 0;
xValue = 0;
yValue = 0;
}
public void disable(){
button.setEnabled(false);
}
public void enable(){
button.setEnabled(true);
}
public int getxValue(){
return xValue;
}
public int getyValue(){
return yValue;
}
public void actionPerformed(ActionEvent ae){
buttonClick(xValue,yValue);
}
public int getPlayer(){
return player;
}
public void setPlayer(int _player){
player=_player;
}
public void setxValue(int x){
xValue=x;
}
public void setyValue(int y){
yValue=y;
}
}

}

Explanation / Answer

GUI

FULL CODE

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote