memory-spiel

fetterlecker

Mitglied
Hallo zusammen,
wir befassen uns in unserem Informatikkurs (erstes Jahr Grundkurs, Gymnasium) derzeit mit einer Projektarbeit.
Abgabe ist morgen, und meine Aufgabe ist es ein Memoryspiel zu erstellen. Wir verwenden derzeit Eclipse.
Um ehrlich zu sein kann ich nichts und die derzeitige Situation bezüglich meiner Informatiknote ist eher suboptimal.
Ich habe drei Fragen, da ich absolut nicht weiß wie ich weiter komme :

  1. Wie sorge ich dafür, dass die Karten zufällig angeordnet werden ? (An diesem Punkt verzweifel ich gerade)
  2. Wie gelingt es mir, dass sobald zwei gleiche Karten aufgedeckt werden, diese verschwinden?
  3. Wie gelingt es mir, dass sobald zwei ungleiche Karten aufgedeckt werden, diese sich wieder umdrehen


Gegeben ist bereits das Spielfeld und die 12 Karten.

Hier der Quelltext:
Java:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.ArrayList;
    import java.util.Random;

    public class memory2 extends JFrame implements ActionListener
   
    {

    	JButton[] buttons;
    	 Random rand;
        JButton reset;
// deklarieren der einzelnen Buttons

     
        public memory2()
        {
            super("memory");
            this.setBounds(0, 0, 800, 700);
      
            this.setLayout(null);
          
           
            buttons=new JButton [11];
            
            

            buttons [0] = new JButton ();
            buttons [0].setSize(200, 200);
            buttons [0].addActionListener(this);
            buttons [0].setBounds(0, 0, 200, 200);
            this.add(buttons [0]);
           
          
            buttons [1] = new JButton();
            buttons [1].setSize(200, 200);
            buttons [1].setBounds(200, 0, 200, 200);
            buttons [1].addActionListener(this);
            this.add(buttons [1]);
           
            buttons [2] = new JButton ();
            buttons [2].setSize(200, 200);
            buttons [2].setBounds(400, 0, 200, 200);
            buttons [2].addActionListener(this);
            this.add(buttons [2]);
           
            buttons [3] = new JButton ();
            buttons [3].setSize(200, 200);
            buttons [3].setBounds(600, 0, 200, 200);
            buttons [3].addActionListener(this);
            this.add(buttons [3]);
           
            buttons [4] = new JButton();
            buttons [4].setSize(200, 200);
            buttons [4].setBounds(0, 200, 200, 200);
            buttons [4].addActionListener(this);
            this.add(buttons [4]);
           
            buttons [5] = new JButton ();
            buttons [5].setSize(200, 200);
            buttons [5].setBounds(200, 200, 200, 200);
            buttons [5].addActionListener(this);
            this.add( buttons [5]);
           
            buttons [6] = new JButton ();
            buttons [6].setSize(200, 200);
            buttons [6].setBounds(400, 200, 200, 200);
            buttons [6].addActionListener(this);
            this.add(buttons [6]);
           
            buttons [7] = new JButton();
            buttons [7].setSize(200, 200);
            buttons [7].setBounds(600, 200, 200, 200);
            buttons [7].addActionListener(this);
            this.add(buttons [7]);
           
            buttons [8] = new JButton ();
            buttons [8].setSize(200, 200);
            buttons [8].setBounds(0, 400, 200, 200);
            buttons [8].addActionListener(this);
            this.add(buttons [8]);
           
            buttons [9]= new JButton ();
            buttons [9].setSize(200, 200);
            buttons [9].setBounds(200, 400, 200, 200);
            buttons [9].addActionListener(this);
            this.add(buttons [9]);
           
            buttons [10] = new JButton();
            buttons [10] .setSize(200, 200);
            buttons [10] .setBounds(400, 400, 200, 200);
            buttons [10] .addActionListener(this);
            this.add(buttons [10] );
         
            buttons [11]  = new JButton ();
            buttons [11].setSize(200, 200);
            buttons [11].setBounds(600, 400, 200, 200);
            buttons [11].addActionListener(this);
            this.add(buttons [11]);
           
            reset = new JButton ("Reset");
            reset.setSize (200,100);
            reset.setBounds(300, 600, 200, 100);
            reset.addActionListener (this);
            this.add(reset);
           
           
            this.setResizable(false);
            this.setVisible(true);
        }
        public static void main(String[] args) {
             memory2 mem =new memory2();
             mem.mischen();
        }
        
        public void mischen()
        {
        	int stelle = rand.nextInt(12);
        	
   
        	if(buttons[stelle].getText()=="")
        	{
        	buttons[stelle].setText("a");}
        }
        
    
            public void actionPerformed(ActionEvent horst) {
        


  
            }       
       

    }



Ich bitte lediglich darum mir ein paar Tipps zum weiteren Vorgehen zu geben, und nicht die Hausaufgaben zu machen.

vielen Dank schonmal im Vorraus :)
 
G

Gast2

Gast
1)
Wenn du die Karten in einer Collection hättest könntest du
Code:
Collections.shuffle
nutzen.

2)
Du brauchst eine Methode die prüft ob die beiden "Karten" gleich sind, wenn ja dann entfernst du die beiden Komponenten.

3)
Du setzt den Text wieder auf "" ?

PS:
Generell solltest du dir aber eine etwas andere Struktur überlegen. Es ist ratsam die Daten von der Darstellung zu trennen. Bei dir könnte es z.b. eine Klasse Memory geben, die intern eine Liste von Karten verwaltet. Das sollte das ganze etwas einfacher machen.
 

fetterlecker

Mitglied
wenn ich dass in meinen quellttext einbaue bekomme ich tausend fehlermeldungen, ich weiß nicht wie ich dass machen soll. habe mir das tutorial jetzt 2 mal reingezogen. kannst eventuell zeigen wie dass in meinen quelltext passen würde ? :)
 

Final_Striker

Top Contributor
Java:
		List<Integer> zahlen = new ArrayList<Integer>();
		for (int i = 0; i < 10; i++) {
			zahlen.add(i);
		}

		Collections.shuffle(zahlen);

		for (Integer zahl : zahlen) {
			System.out.println(zahl);
		}
 

fetterlecker

Mitglied
vielen vielen Dank! :)

Nur bekomme ich dass mit den beiden Methode, die beim Aufdecken zweier gleicher/ungleicher Karten in Kraft treten nicht hin.

Könnte mir da auch jemand behilfich sein, wär spuer :)
 

Oben