Java puzzel gewonnen message

Status
Niet open voor verdere reacties.

Degano

Gebruiker
Lid geworden
2 nov 2014
Berichten
12
Hey

ik zit nog met 1 klein probleempje en dat is mijn bericht dat ik krijg wanneer het spel gemaakt is.
Ofwel krijg ik geen bericht ofwel krijg ik een bericht als de puzzel juist geshuffeld geweest is.

Dus ik denk dat de fout ligt dat mijn button array geshuffeld word en dat mijn cordinaten dan niet meer overeen komen met mijn buttons. Maar ben dit natuurlijk niet zeker

hier zijn 2 methoden die allebei niet werken
en daaronder vind u mijn volledig project

Alvast hartelijk bedankt

Code:
    public void checkWin()
     {
         int i, j, counter;
         boolean flag    =   true;
         counter =  1;
         for(i=0; i<2; i++)
         {
             for(j=0; j<2; j++)
             {
                 if(pos[i][j] != counter)
                     flag    =   false;
                counter++;
                 if(counter==4)
                     counter=0;
             }
               if(flag==true)
             win=true;
       if(win ==true){JOptionPane.showMessageDialog(null, "omg", "InfoBox: " + "hmmm", JOptionPane.INFORMATION_MESSAGE);}
         }
     }
            
     
	     
	    public boolean isFinished()
            {
    {
	        if ((btArray[0].getY() == btArray[1].getY() && btArray[1].getY() == btArray[2].getY()) && (btArray[3].getY() == btArray[4].getY()))
	        {
	            if (btArray[0].getX() == btArray[3].getX() && btArray[3].getX() == btArray[6].getX()
	                    && btArray[1].getX() == btArray[4].getX())
	            {
	                return true;
	            }
        }
	         
	        return false;
	    }
            }

mijn volledig project vind je hieronder


Code:
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.List;
import java.awt.MediaTracker;
import java.awt.RenderingHints;
import java.awt.Transparency;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Random;
import static javafx.scene.input.KeyCode.T;

import javax.imageio.ImageIO;
import javax.swing.*;

public class Puzzle extends JFrame implements ActionListener
{
	    /** JPanel variable */
	    private JPanel centerPanel = new JPanel();
	    private JPanel northPanel = new JPanel();
	    private JPanel southPanel = new JPanel();
     
               private int level = 3 ;
	    /** JButton variable */
	    private JButton newGame = new JButton("New Game"); 
	    private JButton[] btArray = new JButton[level];
            List Collections = new List(15);
            boolean win = false;
           fotoLoad test = new fotoLoad();
          
	     
	    /** JLabel variable */
	    private JLabel moves = new JLabel("Moves : ");
	    private JLabel label;
	     
	    private Container mainPanel = this.getContentPane();
	    private int[][] pos;
	    private int count;
	    private String str;
            private Image source, image;
         
       
                   int width, height;
                 int col,col2 = 0;
                   
                   
	 public final <T> void shuffle(T[] array) {
    Random random = new Random();

    for (int i = array.length - 1 ; i >= 1; --i) {
        int j = random.nextInt(i);
        T temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
    
    
}
      
  
	     
	    public Puzzle()
    {
	        super("Puzzle Game");
	        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	        initUI();
                
     
      
                
   
    
        }
    
	     
	    public void initUI()
	    {
	         
	 /*    pos = new int[][] {
                            {0, 1, 2}, 
                            {3, 4, 5}, 
                            {6, 7, 8}, 
             };
*/
                pos = new int[][] {
                            {0, 1}, 
                            {2, 3}
                            
             };
                
           
          /*     pos = new int[][]{
	                {0, 1, 2, 3},
	                {4, 5, 6, 7},
                        {8, 9, 10, 11},
                        {12, 13, 14, 15},
                     
	            };
            */   
                

test.load();
    
	         
	         

	   for(int i=0;i<btArray.length;i++){
     test.image = createImage(new FilteredImageSource(test.source.getSource(),
          new CropImageFilter((i%4)*test.width/4, (i/4)*test.height/4, test.width/4, test.height/4)));

  //  btArray[i]=new JButton(new ImageIcon(test.image));
    btArray[i]= new JButton("B" + i);
}
           
   //     btArray[i]=new JButton(new ImageIcon(image));
       

                
                
                  
        

                
               
	        
	        /** North Panel */
	        newGame.setFocusable(false);
	        newGame.addActionListener(this);
	        northPanel.setBackground(Color.red);
	        northPanel.add(newGame);
	        mainPanel.add(northPanel, BorderLayout.NORTH);
	         
	        /** South Panel */
	        southPanel.add(moves);
	        southPanel.setBackground(Color.LIGHT_GRAY);
	        mainPanel.add(southPanel, BorderLayout.SOUTH);
         
	        /** Game Panel */
        centerPanel.setLayout(new GridLayout(2, 2, 0, 0));
	        centerPanel.setBackground(Color.BLACK);
                
                
      
	         
	        /** Add actionListeners to buttons */
	        for (int i = 0; i < level; i++)
        {
	            btArray[i].addActionListener(this);
        }
 
	      
        mainPanel.revalidate();
        label = new JLabel("");
	        label.setBackground(Color.BLACK);
	        centerPanel.add(label);
        mainPanel.add(centerPanel);
                  newGame();
	    }
	     
	    public void newGame()
	    {
          
           count = 0;
       
               
   
           
               
	        for (int j = level - 1; j >= 0; j--)
	        {
	            centerPanel.remove(btArray[j]);
                
                       //   JOptionPane.showMessageDialog(null, "pfff");
	        }
        
	             
	        for (int j = level - 1; j >= 0; j--)
	        {
	            centerPanel.add(btArray[j]);
                   
	        }
	        centerPanel.revalidate();
          
	shuffle(btArray);
	    }
            
            
            
             public void checkWin()
     {
         int i, j, counter;
         boolean flag    =   true;
         counter =  1;
         for(i=0; i<2; i++)
         {
             for(j=0; j<2; j++)
             {
                 if(pos[i][j] != counter)
                     flag    =   false;
                counter++;
                 if(counter==4)
                     counter=0;
             }
               if(flag==true)
             win=true;
       if(win ==true){JOptionPane.showMessageDialog(null, "omg", "InfoBox: " + "hmmm", JOptionPane.INFORMATION_MESSAGE);}
         }
     }
            
     
	     
	    public boolean isFinished()
            {
    {
	        if ((btArray[0].getY() == btArray[1].getY() && btArray[1].getY() == btArray[2].getY()) && (btArray[3].getY() == btArray[4].getY()))
	        {
	            if (btArray[0].getX() == btArray[3].getX() && btArray[3].getX() == btArray[6].getX()
	                    && btArray[1].getX() == btArray[4].getX())
	            {
	                return true;
	            }
        }
	         
	        return false;
	    }
            }

 
	    public static void main(String[] args)
	    {
        Puzzle puz = new Puzzle();
	        puz.setBounds(4, 4, 300, 325);
	        puz.setVisible(true);
	    }
            
           
     
	 
	    public void actionPerformed(ActionEvent ae)
	    {
                
                
	        JButton button = (JButton) ae.getSource();
             
	        Dimension size = button.getSize();
	         
	            if (isFinished())
	        {
            JOptionPane.showMessageDialog(null, "You have Won the game");
	        }
	         
	        if (ae.getSource() == newGame)
	        {
	            newGame();
               
	        }
                
             
	         
	        int labelX = label.getX();
	        int labelY = label.getY();
	        int buttonX = button.getX(); 
              
       int buttonY = button.getY();
	        int buttonPosX = buttonX / size.width;
	        int buttonPosY = buttonY / size.height;
       int buttonIndex = pos[buttonPosY][buttonPosX];
         
       if (labelX == buttonX && (labelY - buttonY) == size.height) {
	 
	            int labelIndex = buttonIndex + 2;
 
	            centerPanel.remove(buttonIndex);
	            centerPanel.add(label, buttonIndex);
	            centerPanel.add(button, labelIndex);
	            centerPanel.validate();
	            count++;
                   checkWin();
	        }
	 
	        if (labelX == buttonX && (labelY - buttonY) == -size.height) {
	 
	            int labelIndex = buttonIndex - 2;
	            centerPanel.remove(labelIndex);
	            centerPanel.add(button, labelIndex);
	            centerPanel.add(label, buttonIndex);
	            centerPanel.validate();
	            count++;
         checkWin();
	        }
	 
        if (labelY == buttonY && (labelX - buttonX) == size.width) {
	 
	            int labelIndex = buttonIndex + 1;
	 
	            centerPanel.remove(buttonIndex);
            centerPanel.add(label, buttonIndex);
	            centerPanel.add(button, labelIndex);
           centerPanel.validate();
           count++;
             checkWin();
	        }
	 
	        if (labelY == buttonY && (labelX - buttonX) == -size.width) {
 
	            int labelIndex = buttonIndex - 1;
	 
	            centerPanel.remove(buttonIndex);
	            centerPanel.add(label, labelIndex);
	            centerPanel.add(button, labelIndex);
	            centerPanel.validate();
	            count++;
                    checkWin();
	        }
	         
        str = String.valueOf(count);
	        moves.setText("Moves : " + str);
                
               
	    }
	}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan