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
mijn volledig project vind je hieronder
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);
}
}