Create comments for the following sections of code. import java.awt.event.*; imp
ID: 3832651 • Letter: C
Question
Create comments for the following sections of code.
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class ConnectFour extends JFrame implements ActionListener {
JLabel label1, label2, label3, label4, label5, label6, label7, label8, label9, label10, label11, label12, label13, label14, label15, label16, label17, label18, label19, label20, label21, label22, label23, label24, label25, statsLabel;
JButton button1, button2, button3, button4, button5, playAgain;
boolean whoseTurn = false;
JLabel nextLabelColumn1, nextLabelColumn2, nextLabelColumn3,
nextLabelColumn4, nextLabelColumn5;
int counter=0;
JButton computer;
public ConnectFour() {
super("Connect Five");
pack();
setVisible(true);
initGUI();
setSize(700,700);
}
public void initGUI() {
JPanel panel = new JPanel(null);
label1 = new JLabel("1", JLabel.CENTER);
label1.setBounds(100,100,100,20);
panel.add(label1);
label2 = new JLabel("2", JLabel.CENTER);
label2.setBounds(200,100,100,20);
panel.add(label2);
label3 = new JLabel("3", JLabel.CENTER);
label3.setBounds(300,100,100,20);
panel.add(label3);
label4 = new JLabel("4", JLabel.CENTER);
label4.setBounds(400,100,100,20);
panel.add(label4);
label5 = new JLabel("5", JLabel.CENTER);
label5.setBounds(500,100,100,20);
panel.add(label5);
label6 = new JLabel("6", JLabel.CENTER);
label6.setBounds(100,150,100,20);
panel.add(label6);
label7 = new JLabel("7", JLabel.CENTER);
label7.setBounds(200,150,100,20);
panel.add(label7);
label8 = new JLabel("8", JLabel.CENTER);
label8.setBounds(300,150,100,20);
panel.add(label8);
label9 = new JLabel("9", JLabel.CENTER);
label9.setBounds(400,150,100,20);
panel.add(label9);
label10 = new JLabel("10", JLabel.CENTER);
label10.setBounds(500,150,100,20);
panel.add(label10);
label11 = new JLabel("11", JLabel.CENTER);
label11.setBounds(100,200,100,20);
panel.add(label11);
label12 = new JLabel("12", JLabel.CENTER);
label12.setBounds(200,200,100,20);
panel.add(label12);
label13 = new JLabel("13", JLabel.CENTER);
label13.setBounds(300,200,100,20);
panel.add(label13);
label14 = new JLabel("14", JLabel.CENTER);
label14.setBounds(400,200,100,20);
panel.add(label14);
label15 = new JLabel("15", JLabel.CENTER);
label15.setBounds(500,200,100,20);
panel.add(label15);
label16 = new JLabel("16", JLabel.CENTER);
label16.setBounds(100,250,100,20);
panel.add(label16);
label17 = new JLabel("17", JLabel.CENTER);
label17.setBounds(200,250,100,20);
panel.add(label17);
label18 = new JLabel("18", JLabel.CENTER);
label18.setBounds(300,250,100,20);
panel.add(label18);
label19 = new JLabel("19", JLabel.CENTER);
label19.setBounds(400,250,100,20);
panel.add(label19);
label20 = new JLabel("20", JLabel.CENTER);
label20.setBounds(500,250,100,20);
panel.add(label20);
label21 = new JLabel("21", JLabel.CENTER);
label21.setBounds(100,300,100,20);
panel.add(label21);
label22 = new JLabel("22", JLabel.CENTER);
label22.setBounds(200,300,100,20);
panel.add(label22);
label23 = new JLabel("23", JLabel.CENTER);
label23.setBounds(300,300,100,20);
panel.add(label23);
label24 = new JLabel("24", JLabel.CENTER);
label24.setBounds(400,300,100,20);
panel.add(label24);
label25 = new JLabel("25", JLabel.CENTER);
label25.setBounds(500,300,100,20);
panel.add(label25);
button1 = new JButton("Column 1");
button1.setBounds(100,50,100,25);
panel.add(button1);
button1.addActionListener(this);
button2 = new JButton("Column 2");
button2.setBounds(200,50,100,25);
panel.add(button2);
button2.addActionListener(this);
button3 = new JButton("Column 3");
button3.setBounds(300,50,100,25);
panel.add(button3);
button3.addActionListener(this);
button4 = new JButton("Column 4");
button4.setBounds(400,50,100,25);
panel.add(button4);
button4.addActionListener(this);
button5 = new JButton("Column 5");
button5.setBounds(500,50,100,25);
panel.add(button5);
button5.addActionListener(this);
statsLabel = new JLabel("Press the Computer Move button to begin.", JLabel.CENTER);
statsLabel.setBounds(100,350,500,25);
panel.add(statsLabel);
playAgain = new JButton("Play Again");
playAgain.setBounds(400,400,200,25);
panel.add(playAgain);
playAgain.addActionListener(this);
computer = new JButton ("Computer Move");
computer.setBounds(100,400,200,25);
panel.add(computer);
computer.addActionListener(this);
nextLabelColumn1=label21;
nextLabelColumn2=label22;
nextLabelColumn3=label23;
nextLabelColumn4=label24;
nextLabelColumn5=label25;
add(panel);
}
public JLabel nextLabelMethod(JLabel label){
if(label==label21){
return label16;
}
else if(label==label16){
return label11;
}
else if(label==label11){
return label6;
}
else if(label==label6){
return label1;
}
else if(label==label22){
return label17;
}
else if(label==label17){
return label12;
}
else if(label==label12){
return label7;
}
else if(label==label7){
return label2;
}
else if(label==label23){
return label18;
}
else if(label==label18){
return label13;
}
else if(label==label13){
return label8;
}
else if(label==label8){
return label3;
}
else if(label==label24){
return label19;
}
else if(label==label19){
return label14;
}
else if(label==label14){
return label9;
}
else if(label==label9){
return label4;
}
else if(label==label25){
return label20;
}
else if(label==label20){
return label15;
}
else if(label==label15){
return label10;
}
else if(label==label10){
return label5;
}
else{
}
return null;
}
public String checkWinner(){
if (label1.getText() == "red" && label6.getText() == "red" && label11.getText() == "red" && label16.getText() == "red"){
return "red";
}
else if (label1.getText() == "black" && label6.getText() == "black" && label11.getText() == "black" && label16.getText() == "black"){
return "black";
}
else if (label6.getText() == "red" && label11.getText() == "red" && label16.getText() == "red" && label21.getText() == "red"){
return "red";
}
else if (label6.getText() == "black" && label11.getText() == "black" && label16.getText() == "black" && label21.getText() == "black"){
return "black";
}
else if (label2.getText() == "red" && label7.getText() == "red" && label12.getText() == "red" && label17.getText() == "red"){
return "red";
}
else if (label2.getText() == "black" && label7.getText() == "black" && label12.getText() == "black" && label17.getText() == "black"){
return "black";
}
else if (label7.getText() == "red" && label12.getText() == "red" && label17.getText() == "red" && label22.getText() == "red"){
return "red";
}
else if (label7.getText() == "black" && label12.getText() == "black" && label17.getText() == "black" && label22.getText() == "black"){
return "black";
}
else if (label3.getText() == "red" && label8.getText() == "red" && label13.getText() == "red" && label18.getText() == "red"){
return "red";
}
else if (label3.getText() == "black" && label8.getText() == "black" && label13.getText() == "black" && label18.getText() == "black"){
return "black";
}
else if (label8.getText() == "red" && label13.getText() == "red" && label18.getText() == "red" && label23.getText() == "red"){
return "red";
}
else if (label8.getText() == "black" && label13.getText() == "black" && label18.getText() == "black" && label23.getText() == "black"){
return "black";
}
else if (label4.getText() == "red" && label9.getText() == "red" && label14.getText() == "red" && label19.getText() == "red"){
return "red";
}
else if (label4.getText() == "black" && label9.getText() == "black" && label14.getText() == "black" && label19.getText() == "black"){
return "black";
}
else if (label9.getText() == "red" && label14.getText() == "red" && label19.getText() == "red" && label24.getText() == "red"){
return "red";
}
else if (label9.getText() == "black" && label14.getText() == "black" && label19.getText() == "black" && label24.getText() == "black"){
return "black";
}
else if (label5.getText() == "red" && label10.getText() == "red" && label15.getText() == "red" && label20.getText() == "red"){
return "red";
}
else if (label5.getText() == "black" && label10.getText() == "black" && label15.getText() == "black" && label20.getText() == "black"){
return "black";
}
else if (label10.getText() == "red" && label15.getText() == "red" && label20.getText() == "red" && label25.getText() == "red"){
return "red";
}
else if (label10.getText() == "black" && label15.getText() == "black" && label20.getText() == "black" && label25.getText() == "black"){
return "black";
}
else if (label21.getText() == "red" && label22.getText() == "red" && label23.getText() == "red" && label24.getText() == "red"){
return "red";
}
else if (label21.getText() == "black" && label22.getText() == "black" && label23.getText() == "black" && label24.getText() == "black"){
return "black";
}
else if (label22.getText() == "red" && label23.getText() == "red" && label24.getText() == "red" && label25.getText() == "red"){
return "red";
}
else if (label22.getText() == "black" && label23.getText() == "black" && label24.getText() == "black" && label25.getText() == "black"){
return "black";
}
else if (label16.getText() == "red" && label17.getText() == "red" && label18.getText() == "red" && label19.getText() == "red"){
return "red";
}
else if (label16.getText() == "black" && label17.getText() == "black" && label18.getText() == "black" && label19.getText() == "black"){
return "black";
}
else if (label17.getText() == "red" && label18.getText() == "red" && label19.getText() == "red" && label20.getText() == "red"){
return "red";
}
else if (label17.getText() == "black" && label18.getText() == "black" && label19.getText() == "black" && label20.getText() == "black"){
return "black";
}
else if (label11.getText() == "red" && label12.getText() == "red" && label13.getText() == "red" && label14.getText() == "red"){
return "red";
}
else if (label11.getText() == "black" && label12.getText() == "black" && label13.getText() == "black" && label14.getText() == "black"){
return "black";
}
else if (label12.getText() == "red" && label13.getText() == "red" && label14.getText() == "red" && label15.getText() == "red"){
return "red";
}
else if (label12.getText() == "black" && label13.getText() == "black" && label14.getText() == "black" && label15.getText() == "black"){
return "black";
}
else if (label6.getText() == "red" && label7.getText() == "red" && label8.getText() == "red" && label9.getText() == "red"){
return "red";
}
else if (label6.getText() == "black" && label7.getText() == "black" && label8.getText() == "black" && label9.getText() == "black"){
return "black";
}
else if (label7.getText() == "red" && label8.getText() == "red" && label9.getText() == "red" && label10.getText() == "red"){
return "red";
}
else if (label7.getText() == "black" && label8.getText() == "black" && label9.getText() == "black" && label10.getText() == "black"){
return "black";
}
else if (label1.getText() == "red" && label2.getText() == "red" && label3.getText() == "red" && label4.getText() == "red"){
return "red";
}
else if (label1.getText() == "black" && label2.getText() == "black" && label3.getText() == "black" && label4.getText() == "black"){
return "black";
}
else if (label2.getText() == "red" && label3.getText() == "red" && label4.getText() == "red" && label5.getText() == "red"){
return "red";
}
else if (label2.getText() == "black" && label3.getText() == "black" && label4.getText() == "black" && label5.getText() == "black"){
return "black";
}
else if (label16.getText() == "red" && label12.getText() == "red" && label8.getText() == "red" && label4.getText() == "red"){
return "red";
}
else if (label16.getText() == "black" && label12.getText() == "black" && label8.getText() == "black" && label4.getText() == "black"){
return "black";
}
else if (label21.getText() == "red" && label17.getText() == "red" && label13.getText() == "red" && label9.getText() == "red"){
return "red";
}
else if (label21.getText() == "black" && label17.getText() == "black" && label13.getText() == "black" && label9.getText() == "black"){
return "black";
}
else if (label17.getText() == "red" && label13.getText() == "red" && label9.getText() == "red" && label5.getText() == "red"){
return "red";
}
else if (label17.getText() == "black" && label13.getText() == "black" && label9.getText() == "black" && label5.getText() == "black"){
return "black";
}
else if (label22.getText() == "red" && label18.getText() == "red" && label14.getText() == "red" && label10.getText() == "red"){
return "red";
}
else if (label22.getText() == "black" && label18.getText() == "black" && label14.getText() == "black" && label10.getText() == "black"){
return "black";
}
else if (label1.getText() == "red" && label7.getText() == "red" && label13.getText() == "red" && label19.getText() == "red"){
return "red";
}
else if (label1.getText() == "black" && label7.getText() == "black" && label13.getText() == "black" && label19.getText() == "black"){
return "black";
}
else if (label7.getText() == "red" && label13.getText() == "red" && label19.getText() == "red" && label25.getText() == "red"){
return "red";
}
else if (label7.getText() == "black" && label13.getText() == "black" && label19.getText() == "black" && label25.getText() == "black"){
return "black";
}
else if (label2.getText() == "red" && label8.getText() == "red" && label14.getText() == "red" && label20.getText() == "red"){
return "red";
}
else if (label2.getText() == "black" && label8.getText() == "black" && label14.getText() == "black" && label20.getText() == "black"){
return "black";
}
else if (label6.getText() == "red" && label12.getText() == "red" && label18.getText() == "red" && label24.getText() == "red"){
return "red";
}
else if (label6.getText() == "black" && label12.getText() == "black" && label18.getText() == "black" && label24.getText() == "black"){
return "black";
}
else if (counter==25){
return "stale";
}
else{
return "none";
}
}
boolean computerTurn(){
boolean answer = false;
do{
Random rand = new Random();
int randNum = rand.nextInt(25);
if ((randNum==1)&&(nextLabelColumn1==label1)){
answer=true;
label1.setText("red");
nextLabelColumn1=nextLabelMethod(label1);
}
else if ((randNum==2)&&(nextLabelColumn2==label2)){
answer=true;
label2.setText("red");
nextLabelColumn2=nextLabelMethod(label2);
}
else if ((randNum==3)&&(nextLabelColumn3==label3)){
answer=true;
label3.setText("red");
nextLabelColumn3=nextLabelMethod(label3);
}
else if ((randNum==4)&&(nextLabelColumn4==label4)){
answer=true;
label4.setText("red");
nextLabelColumn4=nextLabelMethod(label4);
}
else if ((randNum==5)&&(nextLabelColumn5==label5)){
answer=true;
label5.setText("red");
nextLabelColumn5=nextLabelMethod(label5);
}
else if ((randNum==6)&&(nextLabelColumn1==label6)){
answer=true;
label6.setText("red");
nextLabelColumn1=nextLabelMethod(label6);
}
else if ((randNum==7)&&(nextLabelColumn2==label7)){
answer=true;
label7.setText("red");
nextLabelColumn2=nextLabelMethod(label7);
}
else if ((randNum==8)&&(nextLabelColumn3==label8)){
answer=true;
label8.setText("red");
nextLabelColumn3=nextLabelMethod(label8);
}
else if ((randNum==9)&&(nextLabelColumn4==label9)){
answer=true;
label9.setText("red");
nextLabelColumn4=nextLabelMethod(label9);
}
else if ((randNum==10)&&(nextLabelColumn5==label10)){
answer=true;
label10.setText("red");
nextLabelColumn5=nextLabelMethod(label10);
}
else if ((randNum==11)&&(nextLabelColumn1==label11)){
answer=true;
label11.setText("red");
nextLabelColumn1=nextLabelMethod(label11);
}
else if ((randNum==12)&&(nextLabelColumn2==label12)){
answer=true;
label12.setText("red");
nextLabelColumn2=nextLabelMethod(label12);
}
else if ((randNum==13)&&(nextLabelColumn3==label13)){
answer=true;
label13.setText("red");
nextLabelColumn3=nextLabelMethod(label13);
}
else if ((randNum==14)&&(nextLabelColumn4==label14)){
answer=true;
label14.setText("red");
nextLabelColumn4=nextLabelMethod(label14);
}
else if ((randNum==15)&&(nextLabelColumn5==label15)){
answer=true;
label15.setText("red");
nextLabelColumn5=nextLabelMethod(label15);
}
else if ((randNum==16)&&(nextLabelColumn1==label16)){
answer=true;
label16.setText("red");
nextLabelColumn1=nextLabelMethod(label16);
}
else if ((randNum==17)&&(nextLabelColumn2==label17)){
answer=true;
label17.setText("red");
nextLabelColumn2=nextLabelMethod(label17);
}
else if ((randNum==18)&&(nextLabelColumn3==label18)){
answer=true;
label18.setText("red");
nextLabelColumn3=nextLabelMethod(label18);
}
else if ((randNum==19)&&(nextLabelColumn4==label19)){
answer=true;
label19.setText("red");
nextLabelColumn4=nextLabelMethod(label19);
}
else if ((randNum==20)&&(nextLabelColumn5==label20)){
answer=true;
label20.setText("red");
nextLabelColumn5=nextLabelMethod(label20);
}
else if ((randNum==21)&&(nextLabelColumn1==label21)){
answer=true;
label21.setText("red");
nextLabelColumn1=nextLabelMethod(label21);
}
else if ((randNum==22)&&(nextLabelColumn2==label22)){
answer=true;
label22.setText("red");
nextLabelColumn2=nextLabelMethod(label22);
}
else if ((randNum==23)&&(nextLabelColumn3==label23)){
answer=true;
label23.setText("red");
nextLabelColumn3=nextLabelMethod(label23);
}
else if ((randNum==24)&&(nextLabelColumn4==label24)){
answer=true;
label24.setText("red");
nextLabelColumn4=nextLabelMethod(label24);
}
else if ((randNum==25)&&(nextLabelColumn5==label25)){
answer=true;
label25.setText("red");
nextLabelColumn5=nextLabelMethod(label25);
}
}
while (answer==false);
return (answer);
}
public void actionPerformed(ActionEvent ae){
String gameOver = checkWinner();
if (gameOver != "none"){
statsLabel.setText(checkWinner() + " is the winner.");
}
else{
if ((ae.getActionCommand().equals("Computer Move"))&&(counter!=25)){
if (whoseTurn == false){
computerTurn();
statsLabel.setText("Red just placed a checker.");
counter++;
whoseTurn = true;
}
else if (whoseTurn == true){
statsLabel.setText("It is not the computer's turn. Please choose a column.");
}
}
else if ((ae.getActionCommand().equals("Column 1")) && (nextLabelColumn1!=null)){
if (whoseTurn == false){
statsLabel.setText("It is not your turn. Please press the Computer Move button.");
}
else if (whoseTurn == true){
statsLabel.setText("Black just placed a checker in " + ae.getActionCommand());
nextLabelColumn1.setText("black");
counter++;
whoseTurn = false;
nextLabelColumn1=nextLabelMethod(nextLabelColumn1);
}
}
else if ((ae.getActionCommand().equals("Column 2")) && (nextLabelColumn2!=null)){
if (whoseTurn == false){
statsLabel.setText("It is not your turn. Please press the Computer Move button.");
}
else if (whoseTurn == true){
statsLabel.setText("Black just placed a checker in " + ae.getActionCommand());
nextLabelColumn2.setText("black");
counter++;
whoseTurn = false;
nextLabelColumn2=nextLabelMethod(nextLabelColumn2);
}
}
else if ((ae.getActionCommand().equals("Column 3")) && (nextLabelColumn3!=null)){
if (whoseTurn == false){
statsLabel.setText("It is not your turn. Please press the Computer Move button.");
}
else if (whoseTurn == true){
statsLabel.setText("Black just placed a checker in " + ae.getActionCommand());
nextLabelColumn3.setText("black");
counter++;
whoseTurn = false;
nextLabelColumn3=nextLabelMethod(nextLabelColumn3);
}
}
else if ((ae.getActionCommand().equals("Column 4")) && (nextLabelColumn4!=null)){
if (whoseTurn == false){
statsLabel.setText("It is not your turn. Please press the Computer Move button.");
}
else if (whoseTurn == true){
statsLabel.setText("Black just placed a checker in " + ae.getActionCommand());
nextLabelColumn4.setText("black");
counter++;
whoseTurn = false;
nextLabelColumn4=nextLabelMethod(nextLabelColumn4);
}
}
else if ((ae.getActionCommand().equals("Column 5")) && (nextLabelColumn5!=null)){
if (whoseTurn == false){
statsLabel.setText("It is not your turn. Please press the Computer Move button.");
}
else if (whoseTurn == true){
statsLabel.setText("Black just placed a checker in " + ae.getActionCommand());
nextLabelColumn5.setText("black");
counter++;
whoseTurn = false;
nextLabelColumn5=nextLabelMethod(nextLabelColumn5);
}
}
else if ((ae.getActionCommand().equals("Column 1")) && (nextLabelColumn1==null)){
statsLabel.setText("There are no more moves in that column. You loose your turn.");
whoseTurn = false;
}
else if ((ae.getActionCommand().equals("Column 2")) && (nextLabelColumn2==null)){
statsLabel.setText("There are no more moves in that column. You loose your turn.");
whoseTurn = false;
}
else if ((ae.getActionCommand().equals("Column 3")) && (nextLabelColumn3==null)){
statsLabel.setText("There are no more moves in that column. You loose your turn.");
whoseTurn = false;
}
else if ((ae.getActionCommand().equals("Column 4")) && (nextLabelColumn4==null)){
statsLabel.setText("There are no more moves in that column. You loose your turn.");
whoseTurn = false;
}
else if ((ae.getActionCommand().equals("Column 5")) && (nextLabelColumn5!=null)){
statsLabel.setText("There are no more moves in that column. You loose your turn.");
whoseTurn = false;
}
}
if (ae.getActionCommand().equals("Play Again")){
statsLabel.setText("The game was reset. Please press the Computer Move button to begin.");
label1.setText("1");
label2.setText("2");
label3.setText("3");
label4.setText("4");
label5.setText("5");
label6.setText("6");
label7.setText("7");
label8.setText("8");
label9.setText("9");
label10.setText("10");
label11.setText("11");
label12.setText("12");
label13.setText("13");
label14.setText("14");
label15.setText("15");
label16.setText("16");
label17.setText("17");
label18.setText("18");
label19.setText("19");
label20.setText("20");
label21.setText("21");
label22.setText("22");
label23.setText("23");
label24.setText("24");
label25.setText("25");
nextLabelColumn1=label21;
nextLabelColumn2=label22;
nextLabelColumn3=label23;
nextLabelColumn4=label24;
nextLabelColumn5=label25;
counter = 0;
}
}
public static void main(String[] args) {
new ConnectFour();
}
}
Explanation / Answer
The code is very big so cannot paste it here like that, So I have removed tabs and added the code here. Please indentation tools to make it proper.
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
/**
* ConnectFour is a single player game played with computer where we want to
* connect 4 same type of dots whoever get 4 of his kind in a row or diagonally,
* wins the game
*
* ClassFour class is the main class extending JFrame and ActionListner to
* create GUI and event handling
*/
/**
* @author Salil_Bansal
*
*/
public class ConnectFour extends JFrame implements ActionListener {
JLabel label1, label2, label3, label4, label5, label6, label7, label8, label9, label10, label11, label12, label13,
label14, label15, label16, label17, label18, label19, label20, label21, label22, label23, label24, label25,
statsLabel; // Declaring labels to show on screen
JButton button1, button2, button3, button4, button5, playAgain; // Declaring
// Buttons
boolean whoseTurn = false; // True if its your chance, false if its
// computer's chance
JLabel nextLabelColumn1, nextLabelColumn2, nextLabelColumn3, nextLabelColumn4, nextLabelColumn5; // Column
// headers
int counter = 0; // no. of moves
JButton computer; // Button to play computer's move
/**
* Constructor Call init method to initialize game components
*/
public ConnectFour() {
super("Connect Five");
pack();
setVisible(true); // making game visible
initGUI(); // calling init method
setSize(700, 700); // setting size
}
/**
* method to initialize all components - labels,buttons etc of the GUI
*/
public void initGUI() {
JPanel panel = new JPanel(null); // Initializing Panel to organize the
// elements
// Initializing All Labels and setting the position , and then adding to
// panel
label1 = new JLabel("1", JLabel.CENTER);
label1.setBounds(100, 100, 100, 20);
panel.add(label1);
label2 = new JLabel("2", JLabel.CENTER);
label2.setBounds(200, 100, 100, 20);
panel.add(label2);
label3 = new JLabel("3", JLabel.CENTER);
label3.setBounds(300, 100, 100, 20);
panel.add(label3);
label4 = new JLabel("4", JLabel.CENTER);
label4.setBounds(400, 100, 100, 20);
panel.add(label4);
label5 = new JLabel("5", JLabel.CENTER);
label5.setBounds(500, 100, 100, 20);
panel.add(label5);
label6 = new JLabel("6", JLabel.CENTER);
label6.setBounds(100, 150, 100, 20);
panel.add(label6);
label7 = new JLabel("7", JLabel.CENTER);
label7.setBounds(200, 150, 100, 20);
panel.add(label7);
label8 = new JLabel("8", JLabel.CENTER);
label8.setBounds(300, 150, 100, 20);
panel.add(label8);
label9 = new JLabel("9", JLabel.CENTER);
label9.setBounds(400, 150, 100, 20);
panel.add(label9);
label10 = new JLabel("10", JLabel.CENTER);
label10.setBounds(500, 150, 100, 20);
panel.add(label10);
label11 = new JLabel("11", JLabel.CENTER);
label11.setBounds(100, 200, 100, 20);
panel.add(label11);
label12 = new JLabel("12", JLabel.CENTER);
label12.setBounds(200, 200, 100, 20);
panel.add(label12);
label13 = new JLabel("13", JLabel.CENTER);
label13.setBounds(300, 200, 100, 20);
panel.add(label13);
label14 = new JLabel("14", JLabel.CENTER);
label14.setBounds(400, 200, 100, 20);
panel.add(label14);
label15 = new JLabel("15", JLabel.CENTER);
label15.setBounds(500, 200, 100, 20);
panel.add(label15);
label16 = new JLabel("16", JLabel.CENTER);
label16.setBounds(100, 250, 100, 20);
panel.add(label16);
label17 = new JLabel("17", JLabel.CENTER);
label17.setBounds(200, 250, 100, 20);
panel.add(label17);
label18 = new JLabel("18", JLabel.CENTER);
label18.setBounds(300, 250, 100, 20);
panel.add(label18);
label19 = new JLabel("19", JLabel.CENTER);
label19.setBounds(400, 250, 100, 20);
panel.add(label19);
label20 = new JLabel("20", JLabel.CENTER);
label20.setBounds(500, 250, 100, 20);
panel.add(label20);
label21 = new JLabel("21", JLabel.CENTER);
label21.setBounds(100, 300, 100, 20);
panel.add(label21);
label22 = new JLabel("22", JLabel.CENTER);
label22.setBounds(200, 300, 100, 20);
panel.add(label22);
label23 = new JLabel("23", JLabel.CENTER);
label23.setBounds(300, 300, 100, 20);
panel.add(label23);
label24 = new JLabel("24", JLabel.CENTER);
label24.setBounds(400, 300, 100, 20);
panel.add(label24);
label25 = new JLabel("25", JLabel.CENTER);
label25.setBounds(500, 300, 100, 20);
panel.add(label25);
// Initializing all buttons- Columns and other buttons , setting its
// positions and then adding to panel. Also adding actionListner to
// handle the event on the buttons
button1 = new JButton("Column 1");
button1.setBounds(100, 50, 100, 25);
panel.add(button1);
button1.addActionListener(this);
button2 = new JButton("Column 2");
button2.setBounds(200, 50, 100, 25);
panel.add(button2);
button2.addActionListener(this);
button3 = new JButton("Column 3");
button3.setBounds(300, 50, 100, 25);
panel.add(button3);
button3.addActionListener(this);
button4 = new JButton("Column 4");
button4.setBounds(400, 50, 100, 25);
panel.add(button4);
button4.addActionListener(this);
button5 = new JButton("Column 5");
button5.setBounds(500, 50, 100, 25);
panel.add(button5);
button5.addActionListener(this);
// Label to show the game status or Hint the next move.
statsLabel = new JLabel("Press the Computer Move button to begin.", JLabel.CENTER);
statsLabel.setBounds(100, 350, 500, 25);
panel.add(statsLabel);
// Play again button to restart the game
playAgain = new JButton("Play Again");
playAgain.setBounds(400, 400, 200, 25);
panel.add(playAgain);
playAgain.addActionListener(this);
// button to initiate computer's move
computer = new JButton("Computer Move");
computer.setBounds(100, 400, 200, 25);
panel.add(computer);
computer.addActionListener(this);
nextLabelColumn1 = label21;
nextLabelColumn2 = label22;
nextLabelColumn3 = label23;
nextLabelColumn4 = label24;
nextLabelColumn5 = label25;
add(panel);
}
/**
* @param label
* @return Jlabel Purpose: - function to return the next status label based
* on current move from computer as well as player.
*/
public JLabel nextLabelMethod(JLabel label) {
// Selecting the label which is on top of current label. For eg. if 16
// is current label,then return label with value 11.
if (label == label21) {
return label16;
} else if (label == label16) {
return label11;
} else if (label == label11) {
return label6;
} else if (label == label6) {
return label1;
} else if (label == label22) {
return label17;
} else if (label == label17) {
return label12;
} else if (label == label12) {
return label7;
} else if (label == label7) {
return label2;
} else if (label == label23) {
return label18;
} else if (label == label18) {
return label13;
} else if (label == label13) {
return label8;
} else if (label == label8) {
return label3;
} else if (label == label24) {
return label19;
} else if (label == label19) {
return label14;
} else if (label == label14) {
return label9;
} else if (label == label9) {
return label4;
} else if (label == label25) {
return label20;
} else if (label == label20) {
return label15;
} else if (label == label15) {
return label10;
} else if (label == label10) {
return label5;
}
else {
}
return null;
}
/**
* @return String - winner label black or red method to check the winner.
*/
public String checkWinner() {
// checking diagonally,horizontally and vertically if for any labels 4
// continuous same colors are found then return it as winner.
if (label1.getText() == "red" && label6.getText() == "red" && label11.getText() == "red"
&& label16.getText() == "red") {
return "red";
} else if (label1.getText() == "black" && label6.getText() == "black" && label11.getText() == "black"
&& label16.getText() == "black") {
return "black";
}
else if (label6.getText() == "red" && label11.getText() == "red" && label16.getText() == "red"
&& label21.getText() == "red") {
return "red";
} else if (label6.getText() == "black" && label11.getText() == "black" && label16.getText() == "black"
&& label21.getText() == "black") {
return "black";
}
else if (label2.getText() == "red" && label7.getText() == "red" && label12.getText() == "red"
&& label17.getText() == "red") {
return "red";
} else if (label2.getText() == "black" && label7.getText() == "black" && label12.getText() == "black"
&& label17.getText() == "black") {
return "black";
}
else if (label7.getText() == "red" && label12.getText() == "red" && label17.getText() == "red"
&& label22.getText() == "red") {
return "red";
} else if (label7.getText() == "black" && label12.getText() == "black" && label17.getText() == "black"
&& label22.getText() == "black") {
return "black";
}
else if (label3.getText() == "red" && label8.getText() == "red" && label13.getText() == "red"
&& label18.getText() == "red") {
return "red";
} else if (label3.getText() == "black" && label8.getText() == "black" && label13.getText() == "black"
&& label18.getText() == "black") {
return "black";
}
else if (label8.getText() == "red" && label13.getText() == "red" && label18.getText() == "red"
&& label23.getText() == "red") {
return "red";
} else if (label8.getText() == "black" && label13.getText() == "black" && label18.getText() == "black"
&& label23.getText() == "black") {
return "black";
}
else if (label4.getText() == "red" && label9.getText() == "red" && label14.getText() == "red"
&& label19.getText() == "red") {
return "red";
} else if (label4.getText() == "black" && label9.getText() == "black" && label14.getText() == "black"
&& label19.getText() == "black") {
return "black";
}
else if (label9.getText() == "red" && label14.getText() == "red" && label19.getText() == "red"
&& label24.getText() == "red") {
return "red";
} else if (label9.getText() == "black" && label14.getText() == "black" && label19.getText() == "black"
&& label24.getText() == "black") {
return "black";
}
else if (label5.getText() == "red" && label10.getText() == "red" && label15.getText() == "red"
&& label20.getText() == "red") {
return "red";
} else if (label5.getText() == "black" && label10.getText() == "black" && label15.getText() == "black"
&& label20.getText() == "black") {
return "black";
}
else if (label10.getText() == "red" && label15.getText() == "red" && label20.getText() == "red"
&& label25.getText() == "red") {
return "red";
} else if (label10.getText() == "black" && label15.getText() == "black" && label20.getText() == "black"
&& label25.getText() == "black") {
return "black";
}
else if (label21.getText() == "red" && label22.getText() == "red" && label23.getText() == "red"
&& label24.getText() == "red") {
return "red";
} else if (label21.getText() == "black" && label22.getText() == "black" && label23.getText() == "black"
&& label24.getText() == "black") {
return "black";
}
else if (label22.getText() == "red" && label23.getText() == "red" && label24.getText() == "red"
&& label25.getText() == "red") {
return "red";
} else if (label22.getText() == "black" && label23.getText() == "black" && label24.getText() == "black"
&& label25.getText() == "black") {
return "black";
}
else if (label16.getText() == "red" && label17.getText() == "red" && label18.getText() == "red"
&& label19.getText() == "red") {
return "red";
} else if (label16.getText() == "black" && label17.getText() == "black" && label18.getText() == "black"
&& label19.getText() == "black") {
return "black";
}
else if (label17.getText() == "red" && label18.getText() == "red" && label19.getText() == "red"
&& label20.getText() == "red") {
return "red";
} else if (label17.getText() == "black" && label18.getText() == "black" && label19.getText() == "black"
&& label20.getText() == "black") {
return "black";
}
else if (label11.getText() == "red" && label12.getText() == "red" && label13.getText() == "red"
&& label14.getText() == "red") {
return "red";
} else if (label11.getText() == "black" && label12.getText() == "black" && label13.getText() == "black"
&& label14.getText() == "black") {
return "black";
}
else if (label12.getText() == "red" && label13.getText() == "red" && label14.getText() == "red"
&& label15.getText() == "red") {
return "red";
} else if (label12.getText() == "black" && label13.getText() == "black" && label14.getText() == "black"
&& label15.getText() == "black") {
return "black";
}
else if (label6.getText() == "red" && label7.getText() == "red" && label8.getText() == "red"
&& label9.getText() == "red") {
return "red";
} else if (label6.getText() == "black" && label7.getText() == "black" && label8.getText() == "black"
&& label9.getText() == "black") {
return "black";
}
else if (label7.getText() == "red" && label8.getText() == "red" && label9.getText() == "red"
&& label10.getText() == "red") {
return "red";
} else if (label7.getText() == "black" && label8.getText() == "black" && label9.getText() == "black"
&& label10.getText() == "black") {
return "black";
}
else if (label1.getText() == "red" && label2.getText() == "red" && label3.getText() == "red"
&& label4.getText() == "red") {
return "red";
} else if (label1.getText() == "black" && label2.getText() == "black" && label3.getText() == "black"
&& label4.getText() == "black") {
return "black";
}
else if (label2.getText() == "red" && label3.getText() == "red" && label4.getText() == "red"
&& label5.getText() == "red") {
return "red";
} else if (label2.getText() == "black" && label3.getText() == "black" && label4.getText() == "black"
&& label5.getText() == "black") {
return "black";
}
else if (label16.getText() == "red" && label12.getText() == "red" && label8.getText() == "red"
&& label4.getText() == "red") {
return "red";
} else if (label16.getText() == "black" && label12.getText() == "black" && label8.getText() == "black"
&& label4.getText() == "black") {
return "black";
}
else if (label21.getText() == "red" && label17.getText() == "red" && label13.getText() == "red"
&& label9.getText() == "red") {
return "red";
} else if (label21.getText() == "black" && label17.getText() == "black" && label13.getText() == "black"
&& label9.getText() == "black") {
return "black";
}
else if (label17.getText() == "red" && label13.getText() == "red" && label9.getText() == "red"
&& label5.getText() == "red") {
return "red";
} else if (label17.getText() == "black" && label13.getText() == "black" && label9.getText() == "black"
&& label5.getText() == "black") {
return "black";
}
else if (label22.getText() == "red" && label18.getText() == "red" && label14.getText() == "red"
&& label10.getText() == "red") {
return "red";
} else if (label22.getText() == "black" && label18.getText() == "black" && label14.getText() == "black"
&& label10.getText() == "black") {
return "black";
}
else if (label1.getText() == "red" && label7.getText() == "red" && label13.getText() == "red"
&& label19.getText() == "red") {
return "red";
} else if (label1.getText() == "black" && label7.getText() == "black" && label13.getText() == "black"
&& label19.getText() == "black") {
return "black";
}
else if (label7.getText() == "red" && label13.getText() == "red" && label19.getText() == "red"
&& label25.getText() == "red") {
return "red";
} else if (label7.getText() == "black" && label13.getText() == "black" && label19.getText() == "black"
&& label25.getText() == "black") {
return "black";
}
else if (label2.getText() == "red" && label8.getText() == "red" && label14.getText() == "red"
&& label20.getText() == "red") {
return "red";
} else if (label2.getText() == "black" && label8.getText() == "black" && label14.getText() == "black"
&& label20.getText() == "black") {
return "black";
}
else if (label6.getText() == "red" && label12.getText() == "red" && label18.getText() == "red"
&& label24.getText() == "red") {
return "red";
} else if (label6.getText() == "black" && label12.getText() == "black" && label18.getText() == "black"
&& label24.getText() == "black") {
return "black";
}
else if (counter == 25) { // If max moves reached then game draw/stale
return "stale";
} else {
return "none";// else game is still on ..
}
}
/**
* @return boolean function to decide computer's next move
*/
boolean computerTurn() {
boolean answer = false;
do {// loop till answer is false. i.e. till valid move is found.
Random rand = new Random(); // choosing a random no. till 25 and
// setting it red
int randNum = rand.nextInt(25);
if ((randNum == 1) && (nextLabelColumn1 == label1)) {
answer = true;// on each valid move found, make answer true and
// stop the loop.
label1.setText("red"); // set the label to red
nextLabelColumn1 = nextLabelMethod(label1);
}
else if ((randNum == 2) && (nextLabelColumn2 == label2)) {
answer = true;
label2.setText("red");
nextLabelColumn2 = nextLabelMethod(label2);
}
else if ((randNum == 3) && (nextLabelColumn3 == label3)) {
answer = true;
label3.setText("red");
nextLabelColumn3 = nextLabelMethod(label3);
}
else if ((randNum == 4) && (nextLabelColumn4 == label4)) {
answer = true;
label4.setText("red");
nextLabelColumn4 = nextLabelMethod(label4);
}
else if ((randNum == 5) && (nextLabelColumn5 == label5)) {
answer = true;
label5.setText("red");
nextLabelColumn5 = nextLabelMethod(label5);
}
else if ((randNum == 6) && (nextLabelColumn1 == label6)) {
answer = true;
label6.setText("red");
nextLabelColumn1 = nextLabelMethod(label6);
}
else if ((randNum == 7) && (nextLabelColumn2 == label7)) {
answer = true;
label7.setText("red");
nextLabelColumn2 = nextLabelMethod(label7);
}
else if ((randNum == 8) && (nextLabelColumn3 == label8)) {
answer = true;
label8.setText("red");
nextLabelColumn3 = nextLabelMethod(label8);
}
else if ((randNum == 9) && (nextLabelColumn4 == label9)) {
answer = true;
label9.setText("red");
nextLabelColumn4 = nextLabelMethod(label9);
}
else if ((randNum == 10) && (nextLabelColumn5 == label10)) {
answer = true;
label10.setText("red");
nextLabelColumn5 = nextLabelMethod(label10);
}
else if ((randNum == 11) && (nextLabelColumn1 == label11)) {
answer = true;
label11.setText("red");
nextLabelColumn1 = nextLabelMethod(label11);
}
else if ((randNum == 12) && (nextLabelColumn2 == label12)) {
answer = true;
label12.setText("red");
nextLabelColumn2 = nextLabelMethod(label12);
}
else if ((randNum == 13) && (nextLabelColumn3 == label13)) {
answer = true;
label13.setText("red");
nextLabelColumn3 = nextLabelMethod(label13);
}
else if ((randNum == 14) && (nextLabelColumn4 == label14)) {
answer = true;
label14.setText("red");
nextLabelColumn4 = nextLabelMethod(label14);
}
else if ((randNum == 15) && (nextLabelColumn5 == label15)) {
answer = true;
label15.setText("red");
nextLabelColumn5 = nextLabelMethod(label15);
}
else if ((randNum == 16) && (nextLabelColumn1 == label16)) {
answer = true;
label16.setText("red");
nextLabelColumn1 = nextLabelMethod(label16);
}
else if ((randNum == 17) && (nextLabelColumn2 == label17)) {
answer = true;
label17.setText("red");
nextLabelColumn2 = nextLabelMethod(label17);
}
else if ((randNum == 18) && (nextLabelColumn3 == label18)) {
answer = true;
label18.setText("red");
nextLabelColumn3 = nextLabelMethod(label18);
}
else if ((randNum == 19) && (nextLabelColumn4 == label19)) {
answer = true;
label19.setText("red");
nextLabelColumn4 = nextLabelMethod(label19);
}
else if ((randNum == 20) && (nextLabelColumn5 == label20)) {
answer = true;
label20.setText("red");
nextLabelColumn5 = nextLabelMethod(label20);
}
else if ((randNum == 21) && (nextLabelColumn1 == label21)) {
answer = true;
label21.setText("red");
nextLabelColumn1 = nextLabelMethod(label21);
}
else if ((randNum == 22) && (nextLabelColumn2 == label22)) {
answer = true;
label22.setText("red");
nextLabelColumn2 = nextLabelMethod(label22);
}
else if ((randNum == 23) && (nextLabelColumn3 == label23)) {
answer = true;
label23.setText("red");
nextLabelColumn3 = nextLabelMethod(label23);
}
else if ((randNum == 24) && (nextLabelColumn4 == label24)) {
answer = true;
label24.setText("red");
nextLabelColumn4 = nextLabelMethod(label24);
}
else if ((randNum == 25) && (nextLabelColumn5 == label25)) {
answer = true;
label25.setText("red");
nextLabelColumn5 = nextLabelMethod(label25);
}
}
while (answer == false);
return (answer);
}
/*
* @see
* java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
* Method to handle all the action events on buttons. Takes in ActionEvent
* object which defines the current event
*/
public void actionPerformed(ActionEvent ae) {
String gameOver = checkWinner(); // to check if winner is found
if (gameOver != "none") { // if checkWinner is not none, it means game
// is over and we have the winner
statsLabel.setText(checkWinner() + " is the winner.");
}
else {
if ((ae.getActionCommand().equals("Computer Move")) && (counter != 25)) {
// If it is computer move and Computer button is pressed, and
// already number of moves is not the limit, then decide the
// move and change the label. After changing it, check for
// winner.
if (whoseTurn == false) { // If whoseTurn is false then decide
// the mvoe.
computerTurn();
statsLabel.setText("Red just placed a checker.");
counter++;
whoseTurn = true;
} else if (whoseTurn == true) { // If whoseTurn is true, then
// pressing computer button
// changes status label
statsLabel.setText("It is not the computer's turn. Please choose a column.");
}
}
else if ((ae.getActionCommand().equals("Column 1")) && (nextLabelColumn1 != null)) {
// If column1 is selected(player's turn) then place the black at
// the lowest label which is not black. That can be obtained
// using nextLabelColumn1 method.
if (whoseTurn == false) {
statsLabel.setText("It is not your turn. Please press the Computer Move button.");
} else if (whoseTurn == true) {
statsLabel.setText("Black just placed a checker in " + ae.getActionCommand());
nextLabelColumn1.setText("black");
counter++;
whoseTurn = false;
nextLabelColumn1 = nextLabelMethod(nextLabelColumn1);
}
}
else if ((ae.getActionCommand().equals("Column 2")) && (nextLabelColumn2 != null)) {
if (whoseTurn == false) {
statsLabel.setText("It is not your turn. Please press the Computer Move button.");
} else if (whoseTurn == true) {
statsLabel.setText("Black just placed a checker in " + ae.getActionCommand());
nextLabelColumn2.setText("black");
counter++;
whoseTurn = false;
nextLabelColumn2 = nextLabelMethod(nextLabelColumn2);
}
}
else if ((ae.getActionCommand().equals("Column 3")) && (nextLabelColumn3 != null)) {
if (whoseTurn == false) {
statsLabel.setText("It is not your turn. Please press the Computer Move button.");
} else if (whoseTurn == true) {
statsLabel.setText("Black just placed a checker in " + ae.getActionCommand());
nextLabelColumn3.setText("black");
counter++;
whoseTurn = false;
nextLabelColumn3 = nextLabelMethod(nextLabelColumn3);
}
}
else if ((ae.getActionCommand().equals("Column 4")) && (nextLabelColumn4 != null)) {
if (whoseTurn == false) {
statsLabel.setText("It is not your turn. Please press the Computer Move button.");
} else if (whoseTurn == true) {
statsLabel.setText("Black just placed a checker in " + ae.getActionCommand());
nextLabelColumn4.setText("black");
counter++;
whoseTurn = false;
nextLabelColumn4 = nextLabelMethod(nextLabelColumn4);
}
}
else if ((ae.getActionCommand().equals("Column 5")) && (nextLabelColumn5 != null)) {
if (whoseTurn == false) {
statsLabel.setText("It is not your turn. Please press the Computer Move button.");
} else if (whoseTurn == true) {
statsLabel.setText("Black just placed a checker in " + ae.getActionCommand());
nextLabelColumn5.setText("black");
counter++;
whoseTurn = false;
nextLabelColumn5 = nextLabelMethod(nextLabelColumn5);
}
} else if ((ae.getActionCommand().equals("Column 1")) && (nextLabelColumn1 == null)) {
// If column is full and no more moves possible, change the
// status that the player lost.
statsLabel.setText("There are no more moves in that column. You loose your turn.");
whoseTurn = false;
} else if ((ae.getActionCommand().equals("Column 2")) && (nextLabelColumn2 == null)) {
statsLabel.setText("There are no more moves in that column. You loose your turn.");
whoseTurn = false;
} else if ((ae.getActionCommand().equals("Column 3")) && (nextLabelColumn3 == null)) {
statsLabel.setText("There are no more moves in that column. You loose your turn.");
whoseTurn = false;
} else if ((ae.getActionCommand().equals("Column 4")) && (nextLabelColumn4 == null)) {
statsLabel.setText("There are no more moves in that column. You loose your turn.");
whoseTurn = false;
} else if ((ae.getActionCommand().equals("Column 5")) && (nextLabelColumn5 != null)) {
statsLabel.setText("There are no more moves in that column. You loose your turn.");
whoseTurn = false;
}
}
if (ae.getActionCommand().equals("Play Again")) {
// If play again is selected, restart the game, set all the labels
// and nextLabels to default and initialize the counter to zero
// again.
statsLabel.setText("The game was reset. Please press the Computer Move button to begin.");
label1.setText("1");
label2.setText("2");
label3.setText("3");
label4.setText("4");
label5.setText("5");
label6.setText("6");
label7.setText("7");
label8.setText("8");
label9.setText("9");
label10.setText("10");
label11.setText("11");
label12.setText("12");
label13.setText("13");
label14.setText("14");
label15.setText("15");
label16.setText("16");
label17.setText("17");
label18.setText("18");
label19.setText("19");
label20.setText("20");
label21.setText("21");
label22.setText("22");
label23.setText("23");
label24.setText("24");
label25.setText("25");
nextLabelColumn1 = label21;
nextLabelColumn2 = label22;
nextLabelColumn3 = label23;
nextLabelColumn4 = label24;
nextLabelColumn5 = label25;
counter = 0;
}
}
/**
* @param args
* main method to run the application
*/
public static void main(String[] args) {
new ConnectFour(); // Call the constructor to start the game
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.