OK everyone !? I have decided to post whole code since my question was a bit of vague. So please be patient to look at whole code below and to find out best way to handle this issue for this tiny little game(yes, I called it game because im beginner)
In addition I want to create a new MENU class that contains start, record etc, if you have more time, please consider this MENU class as well.
best regards,
ganaschka
package puzzle;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.Vector;
/**
*
* @author Ganaa
*/
public class Puzzle extends JFrame implements Runnable{
private String iconNames[] = {"D:/images/1.png", "D:/images/2.png", "D:/images/3.png", "D:/images/4.png"
, "D:/images/5.png", "D:/images/6.png"};
private Vector images = new Vector();
private JPanel centerPanel;
private JLabel topLbl;
private Vector allImages = new Vector();
private Vector tovchVec;
Button lastTovch = null;
private Thread th;
private int min=0, sec=0;
boolean game = false;
boolean running = false;
JMenuBar menuBar;//цэс гаргах хэсэг
JMenu menu;
private JTextField score;// оноо гаргах хэсэг
private int onoo = 0;
public Puzzle(){
super("Fruit Puzzle");
Container con = getContentPane();
con.setLayout(new BorderLayout());
tovchVec = new Vector();
centerPanel = new JPanel();
topLbl = new JLabel("0:0", SwingUtilities.CENTER);
topLbl.setBackground(new Color(255, 225, 169));
topLbl.setOpaque(true);
for(int i=0; i<iconNames.length; i++){
images.add(new ImageIcon(iconNames[i]));
}
for(int i=0; i<images.size(); i++){
allImages.add(images.get(i));
}
for(int i=0; i<images.size(); i++){
allImages.add(images.get(i));
}
MyHandler handler = new MyHandler();
for(int i=0; i<iconNames.length*2; i++){
ImageIcon randIcon = randomIcon();
final Button t = new Button(randIcon);
// t.addActionListener(handler);
t.addMouseListener(handler);
tovchVec.add(t);
centerPanel.add(t);
// menu bar
menuBar = new JMenuBar();
menu = new JMenu("Restart");
menu.setMnemonic(1);
menuBar.add(menu);
menu.addActionListener(new ActionListener(){// I was trying on this but doesnt work :( yeah I need init()
public void actionPerformed(ActionEvent e){
if(e.getSource() == menu){
allImages.clear();
for(int i=0; i<images.size(); i++){
allImages.add(images.get(i));
}
for(int i=0; i<images.size(); i++){
allImages.add(images.get(i));
}
for(int i=0; i<iconNames.length*2; i++){
ImageIcon randIcon = randomIcon();
Button b = (Button)tovchVec.get(i);
b.setZurag(randIcon);
b.setEnabled(true);
}
}
}});
setJMenuBar(menuBar);//JFrame dr nemj bn
//score garah heseg
score = new JTextField();
score.setEditable(false);
score.setFont(new Font("Serif",Font.BOLD,12));
score.setBackground(new Color(255, 225, 169));
con.add(score,BorderLayout.SOUTH);
}
con.add(centerPanel, BorderLayout.CENTER);
con.add(topLbl, BorderLayout.NORTH);
setLocation(500,50);
setSize(530,635);
setResizable(false);
setVisible(true);
th = new Thread(this);
th.start();
running = true;
}
// reset()
public ImageIcon randomIcon(){
int r = (int)(Math.random() * allImages.size());
ImageIcon icon = (ImageIcon)allImages.get(r);
allImages.remove(r);
return icon;
}
public static void main(String[] args) {
Puzzle game = new Puzzle();
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// Thread run
public void run() {
while(running){
try {
Thread.sleep(1000);
sec++;
if(sec>59)
{
min++;
sec = 0;
}
topLbl.setText(min+":"+sec);
for(int i=0; i<tovchVec.size(); i++)
{
Button t = (Button)tovchVec.get(i);
if(t.isEnabled()){
game = true;
break;
}
}
if(game == false){
running = false;
JOptionPane.showMessageDialog(Puzzle.this, "Баяр хүргье. Та "+min+" минут "+sec+" секундэд амжилттай гүйцэтгэлээ.");
th.stop();
}
game = false;
} catch (InterruptedException ex) {
}
}
}
class MyHandler implements MouseListener{
public void mouseClicked(MouseEvent e) {
if( e.getClickCount() == 1)
{
for (int i = 0; i < tovchVec.size(); i++) {
Button firstTovch = (Button)tovchVec.get(i);
if(e.getSource() == firstTovch){
firstTovch.setNuuh(false);
if(lastTovch != null){
if(firstTovch.getHashCode() == lastTovch.getHashCode() && firstTovch.hashCode() != lastTovch.hashCode()){
firstTovch.removeMouseListener(this);
lastTovch.removeMouseListener(this);
++onoo;
score.setText("\t\t "+onoo+" "+"зураг амжилттай оллоо");
if(onoo ==6){
score.setText("\t\tбүх ижил зурагнуудыг амжилттай оллоо !");
}
firstTovch.setNuuh(false);
lastTovch.setNuuh(false);
firstTovch.setBackground(new Color(253, 195, 115));
lastTovch.setBackground(new Color(253, 195, 115));
firstTovch.setEnabled(false);
lastTovch.setEnabled(false);
}
}
lastTovch = firstTovch;
}
}
}
else return;
}
public void mousePressed(MouseEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
public void mouseReleased(MouseEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
public void mouseEntered(MouseEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
public void mouseExited(MouseEvent e) {
for (int i = 0; i < tovchVec.size(); i++) {
Button tovch = (Button)tovchVec.get(i);
if(e.getSource() == tovch){
tovch.setNuuh(true);
}
}
}
}
}