Hallo,
Ich bin gerade dabei ein Puzzle-Spiel zu programmieren,
weiß aber gerade nicht weiter.
Hier meine Probleme.
1.) Das Programm soll erkennen, wann die Buttons in die richtige Reihenfolge gebracht wurden, das Puzzle also gelöst wurde, sodass eine Ausgabe gegeben werden kann ( zB "Congratulations!").
2.) Ich möchte einen "Reset" Menüpunkt hinzufügen, welcher mir die Buttons neu durchwürfelt.
Hier mein bisheriges Coding.
Das vergleichen müsste doch eigentlich mittels equals funktionen funktionieren oder?
Wenn ja, wo soll ich diese einbauen das das Programm auch erkennt das das Puzzle gelöst wurde?
Ich hoffe auf Tips und Codingbeispiele.
Gruß,
Hans
Ich bin gerade dabei ein Puzzle-Spiel zu programmieren,
weiß aber gerade nicht weiter.
Hier meine Probleme.
1.) Das Programm soll erkennen, wann die Buttons in die richtige Reihenfolge gebracht wurden, das Puzzle also gelöst wurde, sodass eine Ausgabe gegeben werden kann ( zB "Congratulations!").
2.) Ich möchte einen "Reset" Menüpunkt hinzufügen, welcher mir die Buttons neu durchwürfelt.
Hier mein bisheriges Coding.
Das vergleichen müsste doch eigentlich mittels equals funktionen funktionieren oder?
Wenn ja, wo soll ich diese einbauen das das Programm auch erkennt das das Puzzle gelöst wurde?
Java:
public class PuzzlePro extends JFrame implements ActionListener {
private int index;
private JButton[] button;
private JLabel label;
private JLabel label2;
public PuzzlePro() {
super("Puzzle Pro");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize( 800, 600);
setResizable ( false );
setLocationRelativeTo(null);
JPanel panel = new JPanel(new GridLayout(3,3));
index = -1;
button = new JButton[10];
for (int i=1; i<button.length; i++) {
button[i] = new JButton();
button[i].addActionListener(this);
button[i].setIcon(new ImageIcon(getClass().getResource("berg"+i+i+".jpg")));
}
for(int i = 1; i < button.length; i++){
JButton tmp = button[i];
int zelle = (int) (Math.random()*(button.length - i) + i);
button[i] = button[zelle];
button[zelle] = tmp;
}
for(int i = 1; i < button.length; i++){
panel.add(button[i]);
button[i].setVisible(false);
}
this.getContentPane().add(panel, BorderLayout.CENTER);
this.getContentPane().add(label = new JLabel("Erstes Bild wählen"), BorderLayout.SOUTH);
JMenu menu, submenu;
JMenuItem menuItem;
JMenuBar menuBar = new JMenuBar();
menu = new JMenu( "GAME"); // Erzeugen eines Hauptmenüpunktes
menuBar.add( menu); // Hinzufügen des Hauptmenüpunktes
menuItem = new JMenuItem( "New Game"); // Erzeugen eines Untermenüs von Puzzle Pro
menu.add(menuItem);
menuItem.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e) {
for (int i = 1; i < button.length; i++) {
button[i].setVisible(true);
}
}
});
menuItem = new JMenuItem( "Exit"); // Erzeugen eines Untermenüs von Puzzle Pro
menu.add(menuItem); // Untermenü wird dem Hauptmenü hinzugefügt
menuItem.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e) {
System.exit(0); // Durch wählen des Menupunketes "Exit" wird das Fenster beendet
}
});
menu = new JMenu( "Optionen"); // Erzeugen eines Hauptmenüpunktes
menuBar.add( menu); // Hinzufügen des Hauptmenüpunktes
menuItem = new JMenuItem( "Hilfe");
menu.add(menuItem);
menuItem.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e) {
try
{
Desktop.getDesktop().open(new File("Hilfe.txt"));
}
catch(Exception eref)
{
}
}
});
menuItem = new JMenuItem( "Handbuch"); // Erzeugen eines Untermenüs von Puzzle Pro
menu.add(menuItem);
menuItem.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e) {
try
{
Desktop.getDesktop().open(new File("Handbuch.pdf"));
}
catch(Exception eref)
{
}
}
});
menuItem = new JMenuItem( "About"); // Erzeugen eines Untermenüs von Puzzle Pro
menu.add(menuItem);
menuItem.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e) {
JOptionPane.showMessageDialog(null, " ", "About", JOptionPane.CLOSED_OPTION);
}
});
setJMenuBar( menuBar); // Erzeugen der kompletten Menüleiste
}
public void actionPerformed(ActionEvent e) {
int curIndex = -1;
for (int i=0; i<button.length; i++) {
if (e.getSource().equals(button[i])) {
curIndex = i;
break;
}
}
if(index==-1) {
index = curIndex;
label.setText(" Zweites Bild wählen");
}
else {
swapIcons(index, curIndex);
index = -1;
label.setText(" Erstes Bild wählen");
}
}
private void swapIcons(int index1, int index2) {
Icon icon = button[index1].getIcon();
button[index1].setIcon(button[index2].getIcon());
button[index2].setIcon(icon);
}
public static void main(String[] args) {
JFrame frame = new PuzzlePro();
frame.setVisible(true);
}
}
Ich hoffe auf Tips und Codingbeispiele.
Gruß,
Hans