Programmieren eines Memorys mit Java (in Eclipse)

aaronjacoby

Neues Mitglied
Hallo Liebe Community
Ich habe in der Schule den Auftrag bekommen, ein Memory (aus 64 JButtons) mit Java zu programmieren. Als Programmierumgebung nutze ich Eclipse. Ich bin wie folgt vorgegangen: Um die 64 Buttons zu erstellen, habe ich ein Button-Array erstellt. Anschliessend habe ich ein Zahlen-Array vom Typ "int" mit 64 Felder erstellt, welches zweimal die Zahlen 1-32 in einer zufälligen Reihenfolge enthält. Danach habe ich die Zahlen dieses Arrays den zugehörigen Buttons mittels einer for-Schleife zugeordnet. Sobald ein Button angeklickt wird, zeigt er seine "Zahl" an und ändert die Farbe auf grün (für angewählt). Es läuft soweit gut, nun stehe ich aber vor einem Problem. Das Programm soll diese Aktion (Anwählen der Buttons) auf 2 Buttons beschränken. Anschliessend soll es prüfen, ob die Zahlen der beiden Buttons übereinstimmen. Wenn dies der Fall ist, soll es die beiden Buttons verschwinden lassen. Ich habe dabei an setVisible(false) gedacht. Wenn die Werte nicht übereinstimmen, sollen die Karten "zugedeckt" werden und das Ganze soll wieder von vorne anfangen. Ich kann mir gut vorstellen, dass es mit einer for-Schleife funktionieren könnte. Ich habe heute lange studiert und ausprobiert, aber nichts scheint richtig zu funktionieren. Ich wäre daher sehr dankbar, wenn mir jemand weiterhelfen könnte.

Zum besseren Verständnis habe ich unten noch mein Programmcode aufgeführt, damit ihr sehen könnt, wo ich bereits stehe.

Java:
package Umsetzung;

import javax.swing.*;
import java.awt.event.*;
import java.util.Random;
import java.awt.Color;

public class Window extends JFrame implements ActionListener {

    private JButton Start;// Variabeln deklarieren
    private JButton Exit;
    private JButton Reset;
    private JButton Card;
    final int Kartenanzahl = 64;
    JButton[] Spielkarten = new JButton[Kartenanzahl]; // Button-Array erstellen
    final int Zahlenanzahl = 64;
    int[] Werte = new int[Zahlenanzahl]; // Zahlenarray erstellen
    

    public Window() // Konstruktor
    {
        super("Memory");
        JPanel Feld = new JPanel();
        Feld.setLayout(null);
        Start = new JButton("Start Game");
        Start.setSize(110, 30);
        Start.setLocation(20, 600);
        Start.addActionListener(this);
        Feld.add(Start);
        Exit = new JButton("Exit Game");
        Exit.setSize(110, 30);
        Exit.setLocation(605, 600);
        Exit.addActionListener(this);
        Feld.add(Exit);
        Reset = new JButton("Reset Game");
        Reset.setSize(110, 30);
        Reset.setLocation(312, 600);
        Reset.addActionListener(this);
        Feld.add(Reset);
        setContentPane(Feld); // Eigenschaften der Buttons definieren

        for (int i = 0; i < 32; i++) {
            Werte[i] = i + 1;
        }
        for (int f = 32; f < 64; f++) {
            Werte[f] = f - 31; // Zahlenarray mit Zahlen von 1-32 füllen, dabei kommt jede Zahl 2 mal vor
        }

        Random Zahlengenerator = new Random();
        for (int p = 0; p < Werte.length; p++) {
            int randomPosition = Zahlengenerator.nextInt(Werte.length);
            int temp = Werte[p];
            Werte[p] = Werte[randomPosition];
            Werte[randomPosition] = temp; // Mischen der Zahlen innerhalb des Zahlenarrays
        }

        for (int a = 0; a < 64; a++) {
            Spielkarten[a] = new JButton();
            Spielkarten[a].setSize(50, 50); // Eigenschaften der Spielkarten definieren
            Spielkarten[a].setLocation((a % 8 * 78) + 68, (((int) a / 8) * 68) + 40);
            Spielkarten[a].setActionCommand("klick");
            Spielkarten[a].addActionListener(this);
            Spielkarten[a].setBackground(Color.YELLOW);
            Feld.add(Spielkarten[a]);
            Spielkarten[a].setEnabled(false);
        }

    }

    public void actionPerformed(ActionEvent Aktion) {

        Object Source = Aktion.getSource();

        if (Source == Exit) {
            System.out.println("Sie haben das Spiel verlassen");
            System.exit(0);
        } // Spiel beenden

        for (int b = 0; b < 64; b++) {
            if (Source == Start) {
                Spielkarten[b].setEnabled(true);
            } // Spiel starten
        }
        if (Source == Start) {
            System.out.println("Sie haben ein Spiel gestartet");
        }

        if (Source == Reset) {
            System.out.println("Sie haben das Spiel zurückgesetzt");
            dispose();
            Window ResetFenster = new Window();
            ResetFenster.setSize(750, 680);
            ResetFenster.setLocationRelativeTo(null);
            ResetFenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            ResetFenster.setVisible(true);
        } // Spiel zurücksetzen

        for (int c = 0; c < 64; c++)
            for (int d = 0; d < 64; d++) {
                
            if (Source == Spielkarten[c]) {
                Spielkarten[c].setText("" + Werte[c]);
            }
            if (Source == Spielkarten[c]) {
                Spielkarten[c].setBackground(Color.GREEN);
            } // Beim Klick auf den Button die Farbe wechseln

            
            
            }
        
    }

    public static void main(String[] args) {

        Window Fenster = new Window();
        Fenster.setSize(750, 680);
        Fenster.setLocationRelativeTo(null);
        Fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Fenster.setVisible(true); // Eigenschaften des Fensters definieren
    }

}


Liebe Grüsse Aaron
 

M.L.

Top Contributor
Auf die Schnelle: es sollte eine Zählervariable deklariert und verwendet werden für die Anzahl der geklickten gelben Felder. Bei genau zwei Klicks (bei gelben Feldern) UND einem Treffer die setEnabled-Eigenschaft der grünen Felder geeignet setzen. Ansonsten wieder zurück auf gelb. Und Meldungen in einem GUI-Programm sollte man nicht auf der Konsole ausgeben
 

aaronjacoby

Neues Mitglied
Auf die Schnelle: es sollte eine Zählervariable deklariert und verwendet werden für die Anzahl der geklickten gelben Felder. Bei genau zwei Klicks (bei gelben Feldern) UND einem Treffer die setEnabled-Eigenschaft der grünen Felder geeignet setzen. Ansonsten wieder zurück auf gelb. Und Meldungen in einem GUI-Programm sollte man nicht auf der Konsole ausgeben
Danke für deine Antwort! Ich werde versuchen, deine Tipps umzusetzen.
 

MoxxiManagarm

Top Contributor
Bitte halte dich außerdem an die Java Namenskonventionen und benenne deine Variablen in lowerCamelCase. Außerdem hast du sowohl englische als auch deutsche Benennungen, bitte versuche das zu vereinheitlichen.

Java:
Spielkarten[a].setLocation((a % 8 * 78) + 68, (((int) a / 8) * 68) + 40);
Nutze doch einfach einen geeigneted LayoutManager anstatt sowas x.x

Du wirst außerdem noch einen Timer brauchen der nichts anderes tut als die Buttons eine definierte Zeit nach der 2. Auswahl offenzuhalten.
 

mihe7

Top Contributor

MoxxiManagarm

Top Contributor
Noch ein Tipp von mir: Die ActionListener sind zwar immer Geschmacksache, aber ich rate dir von einem solchen komplexen (viele Kontrollstrukturen) Listener ab. Stattdessen rate ich zu einer anonymen Klasse

Java:
start.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent actionEvent) {
    // do whatever clicking on start should do
  }
});

Oder verkürzt mit Java 8+
Java:
start.addActionListener(actionEvent -> {
  // do whatever clicking on start should do
});
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Programmieren eines Bruchrechners Spiele- und Multimedia-Programmierung 3
M BlueJ Schach Steuerung programmieren Spiele- und Multimedia-Programmierung 28
ItundMathe1994 TicTacToe Spiel programmieren Spiele- und Multimedia-Programmierung 2
N Escape the Room - Spiele Apps programmieren Spiele- und Multimedia-Programmierung 14
Laaalo Tic tac toe programmieren Spiele- und Multimedia-Programmierung 4
mihe7 Wie man einfache Spiele programmieren kann Spiele- und Multimedia-Programmierung 23
M Brauche Hilfe was zu Programmieren Spiele- und Multimedia-Programmierung 4
N Minecraft Spigot-Plugin | Schusswaffe programmieren Spiele- und Multimedia-Programmierung 3
A DoodleJump programmieren: Kollisionsabfrage Spiele- und Multimedia-Programmierung 6
I Vier gewinnt programmieren, Klick-Reihenfolge Spiele- und Multimedia-Programmierung 2
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
K Android Spiel Programmieren Spiele- und Multimedia-Programmierung 6
P Tennis- Spielstand- Zähler für Schule programmieren Spiele- und Multimedia-Programmierung 6
J HDMI Ausgänge mit Java programmieren? Spiele- und Multimedia-Programmierung 18
L Hörtest programmieren und implementieren Spiele- und Multimedia-Programmierung 2
E Möchte Jump and Run programmieren Spiele- und Multimedia-Programmierung 2
E Möchte Spiel Programmieren Spiele- und Multimedia-Programmierung 7
M Gesellschaftsspiel Mühle in Java programmieren Spiele- und Multimedia-Programmierung 3
M Textbasiertes Spiel programmieren Spiele- und Multimedia-Programmierung 4
M Logitech G15/G510 Applets programmieren Spiele- und Multimedia-Programmierung 3
F Spiel ähnlich wie SimCity/o.ä programmieren Spiele- und Multimedia-Programmierung 5
O Rundenbasiertes strategiespiel programmieren Spiele- und Multimedia-Programmierung 2
K 2D Blockade Programmieren Spiele- und Multimedia-Programmierung 3
wolfgang63 Mit JavaFX einfaches Game programmieren Spiele- und Multimedia-Programmierung 5
J Mod Loader programmieren Spiele- und Multimedia-Programmierung 11
I Hitpoints/Lifepoints programmieren, wie? Spiele- und Multimedia-Programmierung 7
L Minecraft Minecraft Plugin programmieren (Craftbukkit 1.7.2) Problem Spiele- und Multimedia-Programmierung 4
B Spiel Programmieren, die Anfänge Spiele- und Multimedia-Programmierung 6
wolfgang63 Einfachen Soundgenerator programmieren Spiele- und Multimedia-Programmierung 1
J UNO Programmieren Spiele- und Multimedia-Programmierung 4
F Bot Programmieren Spiele- und Multimedia-Programmierung 10
N Game GUI Programmieren Spiele- und Multimedia-Programmierung 16
1 Minecraft Minecraft Plugins programmieren Spiele- und Multimedia-Programmierung 6
T MiniCraft - selbst nach Programmieren Spiele- und Multimedia-Programmierung 25
A Klickgame ala "Harveys neue Augen" oder "Edna bricht aus" in Java programmieren... Fragen zu Kleinig Spiele- und Multimedia-Programmierung 8
S Spiel Programmieren (Kreise treffen) Spiele- und Multimedia-Programmierung 5
F wie richtig spiele programmieren ? Spiele- und Multimedia-Programmierung 19
C Hinterteil von Snake programmieren Spiele- und Multimedia-Programmierung 11
B Spiele programmieren für ein Fenster? Spiele- und Multimedia-Programmierung 14
B Kartenspiel Leben und Tod programmieren Spiele- und Multimedia-Programmierung 11
T Vier gewinnt programmieren Spiele- und Multimedia-Programmierung 9
N Stimme programmieren Spiele- und Multimedia-Programmierung 11
Sebi Mit Java Online games programmieren ? Spiele- und Multimedia-Programmierung 8
N Labyrinth programmieren/Denkhilfe Spiele- und Multimedia-Programmierung 3
data89 Spiel mit JMonkey programmieren Spiele- und Multimedia-Programmierung 6
O Programmieren von "Familienduell" Spiele- und Multimedia-Programmierung 3
A Wie JAVA Webcam Client programmieren? Spiele- und Multimedia-Programmierung 11
T vier gewinnt programmieren - aber wie Spiele- und Multimedia-Programmierung 19
N In einem Kasten springende Bälle programmieren...Hilfe Spiele- und Multimedia-Programmierung 7
B Problem beim Programmieren von 4Gewinnt Spiele- und Multimedia-Programmierung 5
K Malefiz programmieren - Frage zu den einzelnen Spielfeldern Spiele- und Multimedia-Programmierung 5
G wer möchte mit mir risiko programmieren? Spiele- und Multimedia-Programmierung 7
B Problem beim Programmieren Von Mühle Spiele- und Multimedia-Programmierung 6
N Sinus Welle programmieren! Spiele- und Multimedia-Programmierung 4
J Gesellschaftsspiele programmieren Spiele- und Multimedia-Programmierung 8
P 2D Spiel mir drehbaren Bildern (Sprites) programmieren Spiele- und Multimedia-Programmierung 10
U Ball programmieren Spiele- und Multimedia-Programmierung 26
A "Wegnehm-Spiel" programmieren, Tipps + Links? Spiele- und Multimedia-Programmierung 8
N Seltsame Exception bei Code eines Spiele-Tutorials Spiele- und Multimedia-Programmierung 6
R Ideen für die Backend-Entwicklung eines Games gesucht Spiele- und Multimedia-Programmierung 8
T Position eines Image verändern mithilfe eines Timers Spiele- und Multimedia-Programmierung 6
E Programmierung eines 2.5D Point&Click Adventures ohne Spieleengine machbar? Spiele- und Multimedia-Programmierung 14
K Click innerhalb eines 45° gekippten Rechtecks Spiele- und Multimedia-Programmierung 9
J LibGdx_3D: Klamotten eines Charakters modifizieren Spiele- und Multimedia-Programmierung 2
K Erstellen eines Fotoalbums mit Java Spiele- und Multimedia-Programmierung 8
R Fehler beim Laden eines 2D-Bildes Spiele- und Multimedia-Programmierung 3
L OpenGL TransformationMatrix eines Flugzeugs Spiele- und Multimedia-Programmierung 2
M Programmierung eines "Fantasy Rollenspiels" Spiele- und Multimedia-Programmierung 5
E Laufanimation eines Sprites Spiele- und Multimedia-Programmierung 6
Finalspace Entwicklung eines Jump & Run Spiels Video-Tutorial Spiele- und Multimedia-Programmierung 12
T Hintergrundmusik eines Spiels mit Hilfe von JLayer Spiele- und Multimedia-Programmierung 12
M Cylinder anhand eines Vektors ausrichten (Java3d) Spiele- und Multimedia-Programmierung 0
M bewegen eines Objektes Spiele- und Multimedia-Programmierung 2
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
gamebreiti Index eines Elements einer ArrayList abfragen Spiele- und Multimedia-Programmierung 1
X "Rebuffen" - Messen der Zeit eines Timers Spiele- und Multimedia-Programmierung 3
S Design eines Schachspiels Spiele- und Multimedia-Programmierung 3
S Mausklicks innerhalb eines JFrames/SWTBrowser ohne richtige Maus simulieren Spiele- und Multimedia-Programmierung 6
F Programmierung eines Bots Spiele- und Multimedia-Programmierung 23
A Wann ist ein Punkt inerhalb eines Polygons? Spiele- und Multimedia-Programmierung 2
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
R Drehen eines Bildes relativ zur Mauszeigerposition Spiele- und Multimedia-Programmierung 2
M Pattern zur Auswahl eines Objektes anhand vieler Kriterien Spiele- und Multimedia-Programmierung 2
H Skalierung eines Polygons ohne das es verschoben wird Spiele- und Multimedia-Programmierung 3
R Triangulation eines komplexen Polygons Spiele- und Multimedia-Programmierung 4
L Lwjgl Darstellung eines Kreises im Raum Spiele- und Multimedia-Programmierung 3
M Pixel eines BufferedImage bearbeiten (Performance) Spiele- und Multimedia-Programmierung 23
G Rotieren eines Objekts (2D) Spiele- und Multimedia-Programmierung 8
F nur Ausschnitt eines Image zeichnen Spiele- und Multimedia-Programmierung 9
S Umfang eines Polygons erzeugen Spiele- und Multimedia-Programmierung 1
D Highscoreliste eines Applets funktioniert online nicht Spiele- und Multimedia-Programmierung 4
W CannotRealizeException (jmf) beim abspielen eines liedes Spiele- und Multimedia-Programmierung 3
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
D Koordinaten eines 2D Sprites Spiele- und Multimedia-Programmierung 2
B Teile eines Bildes laden - BitBlk und drawImage Spiele- und Multimedia-Programmierung 3
S Interpolation eines Bildes Spiele- und Multimedia-Programmierung 6
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
N Bildposition innerhalb eines anderen Bildes ermitteln Spiele- und Multimedia-Programmierung 2
G rotation eines würfels Spiele- und Multimedia-Programmierung 9
G Bewegung eines Grafikobjektes Spiele- und Multimedia-Programmierung 7

Ähnliche Java Themen

Neue Themen


Oben