How to create a Puzzle game with java

In this program, we will create a puzzle game with java. In this program, we have only used Buttons, Frame, swing & action listener. It is GUI Puzzle game. This game is also known as number puzzle game. You will have to rearrange the scattered numbers.

Java program of puzzle game

import java.awt.*;  
import java.awt.event.*;  
import javax.swing.JOptionPane;  
public class Puzzle extends Frame implements ActionListener{  
Button b1,b2,b3,b4,b5,b6,b7,b8,b9;  
Puzzle(){  
    super("Puzzle");  
    b1=new Button("1");  
    b1.setBounds(50,100,40,40);  
    b2=new Button("2");  
    b2.setBounds(100,100,40,40);  
    b3=new Button("3");  
    b3.setBounds(150,100,40,40);  
    b4=new Button("4");  
    b4.setBounds(50,150,40,40);  
    b5=new Button("5");  
    b5.setBounds(100,150,40,40);  
    b6=new Button("6");  
    b6.setBounds(150,150,40,40);  
    b7=new Button("7");  
    b7.setBounds(50,200,40,40);  
    b8=new Button("");  
    b8.setBounds(100,200,40,40);  
    b9=new Button("8");  
    b9.setBounds(150,200,40,40);  
      
    b1.addActionListener(this);  
    b2.addActionListener(this);  
    b3.addActionListener(this);  
    b4.addActionListener(this);  
    b5.addActionListener(this);  
    b6.addActionListener(this);  
    b7.addActionListener(this);  
    b8.addActionListener(this);  
    b9.addActionListener(this);  
      
    add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9);  
    setSize(400,400);  
    setLayout(null);  
    setVisible(true);  
}  
public void actionPerformed(ActionEvent e){  
    if(e.getSource()==b1){  
        String label=b1.getLabel();  
        if(b2.getLabel().equals("")){  
            b2.setLabel(label);  
            b1.setLabel("");  
        }  
        if(b4.getLabel().equals("")){  
            b4.setLabel(label);  
            b1.setLabel("");  
        }  
    }  
    if(e.getSource()==b2){  
        String label=b2.getLabel();  
        if(b1.getLabel().equals("")){  
            b1.setLabel(label);  
            b2.setLabel("");  
        }  
        if(b3.getLabel().equals("")){  
            b3.setLabel(label);  
            b2.setLabel("");  
        }  
        if(b5.getLabel().equals("")){  
            b5.setLabel(label);  
            b2.setLabel("");  
        }  
    }  
    if(e.getSource()==b3){  
        String label=b3.getLabel();  
        if(b2.getLabel().equals("")){  
            b2.setLabel(label);  
            b3.setLabel("");  
        }  
        if(b6.getLabel().equals("")){  
            b6.setLabel(label);  
            b3.setLabel("");  
        }  
    }  
    if(e.getSource()==b4){  
        String label=b4.getLabel();  
        if(b1.getLabel().equals("")){  
            b1.setLabel(label);  
            b4.setLabel("");  
        }  
        if(b7.getLabel().equals("")){  
            b7.setLabel(label);  
            b4.setLabel("");  
        }  
        if(b5.getLabel().equals("")){  
            b5.setLabel(label);  
            b4.setLabel("");  
        }  
    }  
    if(e.getSource()==b5){  
        String label=b5.getLabel();  
        if(b2.getLabel().equals("")){  
            b2.setLabel(label);  
            b5.setLabel("");  
        }  
        if(b6.getLabel().equals("")){  
            b6.setLabel(label);  
            b5.setLabel("");  
        }  
        if(b4.getLabel().equals("")){  
            b4.setLabel(label);  
            b5.setLabel("");  
        }  
        if(b8.getLabel().equals("")){  
            b8.setLabel(label);  
            b5.setLabel("");  
        }  
    }  
    if(e.getSource()==b6){  
        String label=b6.getLabel();  
        if(b9.getLabel().equals("")){  
            b9.setLabel(label);  
            b6.setLabel("");  
        }  
        if(b3.getLabel().equals("")){  
            b3.setLabel(label);  
            b6.setLabel("");  
        }  
        if(b5.getLabel().equals("")){  
            b5.setLabel(label);  
            b6.setLabel("");  
        }  
    }  
    if(e.getSource()==b7){  
        String label=b7.getLabel();  
        if(b4.getLabel().equals("")){  
            b4.setLabel(label);  
            b7.setLabel("");  
        }  
        if(b8.getLabel().equals("")){  
            b8.setLabel(label);  
            b7.setLabel("");  
        }  
    }  
    if(e.getSource()==b8){  
        String label=b8.getLabel();  
        if(b9.getLabel().equals("")){  
            b9.setLabel(label);  
            b8.setLabel("");  
        }  
        if(b7.getLabel().equals("")){  
            b7.setLabel(label);  
            b8.setLabel("");  
        }  
        if(b5.getLabel().equals("")){  
            b5.setLabel(label);  
            b8.setLabel("");  
        }  
    }  
    if(e.getSource()==b9){  
        String label=b9.getLabel();  
        if(b6.getLabel().equals("")){  
            b6.setLabel(label);  
            b9.setLabel("");  
        }  
        if(b8.getLabel().equals("")){  
            b8.setLabel(label);  
            b9.setLabel("");  
        }  
    }  
      
    //congrats code  
    if(b1.getLabel().equals("1")&&b2.getLabel().equals("2")&&b3.getLabel()    
            .equals("3")&&b4.getLabel().equals("4")&&b5.getLabel().equals("5")    
            &&b6.getLabel().equals("6")&&b7.getLabel().equals("7")&&b8.getLabel()    
            .equals("8")&&b9.getLabel().equals("")){     
            JOptionPane.showMessageDialog(this,"Congratulations! You won.");    
    }    
}  
public static void main(String[] args) {  
    new Puzzle();  
}  
}

In this program, we have created a frame and set the size of the frame and add the buttons on the frame and set the bounds. After that, we write the label name on the buttons. After that, we add the action listener on the buttons. Although, we have already done this type of question.

The main logic of the program

Here are the conditions applied to create this game. If you have any query about this program or anything you can ask me by commenting in the below comment section of this tutorial.



 
public void actionPerformed(ActionEvent e){ 
if(e.getSource()==b1){ 
String label=b1.getLabel(); 
if(b2.getLabel().equals("")){ 
b2.setLabel(label); 
b1.setLabel(""); 
} 
if(b4.getLabel().equals("")){ 
b4.setLabel(label); 
b1.setLabel(""); 
} 
} 
if(e.getSource()==b2){ 
String label=b2.getLabel(); 
if(b1.getLabel().equals("")){ 
b1.setLabel(label); 
b2.setLabel(""); 
} 
if(b3.getLabel().equals("")){ 
b3.setLabel(label); 
b2.setLabel(""); 
} 
if(b5.getLabel().equals("")){ 
b5.setLabel(label); 
b2.setLabel(""); 
} 
} 
if(e.getSource()==b3){ 
String label=b3.getLabel(); 
if(b2.getLabel().equals("")){ 
b2.setLabel(label); 
b3.setLabel(""); 
} 
if(b6.getLabel().equals("")){ 
b6.setLabel(label); 
b3.setLabel(""); 
} 
} 
if(e.getSource()==b4){ 
String label=b4.getLabel(); 
if(b1.getLabel().equals("")){ 
b1.setLabel(label); 
b4.setLabel(""); 
} 
if(b7.getLabel().equals("")){ 
b7.setLabel(label); 
b4.setLabel(""); 
} 
if(b5.getLabel().equals("")){ 
b5.setLabel(label); 
b4.setLabel(""); 
} 
} 
if(e.getSource()==b5){ 
String label=b5.getLabel(); 
if(b2.getLabel().equals("")){ 
b2.setLabel(label); 
b5.setLabel(""); 
} 
if(b6.getLabel().equals("")){ 
b6.setLabel(label); 
b5.setLabel(""); 
} 
if(b4.getLabel().equals("")){ 
b4.setLabel(label); 
b5.setLabel(""); 
} 
if(b8.getLabel().equals("")){ 
b8.setLabel(label); 
b5.setLabel(""); 
} 
} 
if(e.getSource()==b6){ 
String label=b6.getLabel(); 
if(b9.getLabel().equals("")){ 
b9.setLabel(label); 
b6.setLabel(""); 
} 
if(b3.getLabel().equals("")){ 
b3.setLabel(label); 
b6.setLabel(""); 
} 
if(b5.getLabel().equals("")){ 
b5.setLabel(label); 
b6.setLabel(""); 
} 
} 
if(e.getSource()==b7){ 
String label=b7.getLabel(); 
if(b4.getLabel().equals("")){ 
b4.setLabel(label); 
b7.setLabel(""); 
} 
if(b8.getLabel().equals("")){ 
b8.setLabel(label); 
b7.setLabel(""); 
} 
} 
if(e.getSource()==b8){ 
String label=b8.getLabel(); 
if(b9.getLabel().equals("")){ 
b9.setLabel(label); 
b8.setLabel(""); 
} 
if(b7.getLabel().equals("")){ 
b7.setLabel(label); 
b8.setLabel(""); 
} 
if(b5.getLabel().equals("")){ 
b5.setLabel(label); 
b8.setLabel(""); 
} 
} 
if(e.getSource()==b9){ 
String label=b9.getLabel(); 
if(b6.getLabel().equals("")){ 
b6.setLabel(label); 
b9.setLabel(""); 
} 
if(b8.getLabel().equals("")){ 
b8.setLabel(label); 
b9.setLabel(""); 
} 
} 

//congrats code 
if(b1.getLabel().equals("1")&&b2.getLabel().equals("2")&&b3.getLabel() 
.equals("3")&&b4.getLabel().equals("4")&&b5.getLabel().equals("5") 
&&b6.getLabel().equals("6")&&b7.getLabel().equals("7")&&b8.getLabel() 
.equals("8")&&b9.getLabel().equals("")){ 
JOptionPane.showMessageDialog(this,"Congratulations! You won."); 
} 
}

The output of the program

Here is the screenshot of the output of this Puzzle GUI game:

puzzle game in Java swing

Read more tutorials:

Leave a Reply

Your email address will not be published. Required fields are marked *