Erste Schritte Memorie zufällige Pärchen mischen

Hallo Leute,

ich bin gerade dabei ein kleines, ganz einfaches Memoriespiel zu schreiben. Dabei hänge ich seit längerem an dem Problem ein Array zu erzeugen in dem sich die aufzudeckenden Buchstaben befinden. Ich müsste sie ja einerseits zufällig bestimmen(das kenne ich schon mit der math-Klasse) andererseits müssen es aber immer 2 Paare sein, welche zufällig verteilt sind.
Hat jemand eine Idee wie ich das machen könnte????:L

Gruß:
Erdmann
 
Vielen Dank für deine Antwort 🙂,

bei der Aufgabe handelt es sich um eine Übungsaufgabe für einen anstehenden kleinen Programmiertest. Hashmaps wurden leider noch gar nicht behandelt, es muss also noch einen anderen Weg geben, den ich gerne so nachvollziehen möchte.
Ich hatte überlegt, wenn es 10 "Karten" sein sollen, einfach ein Array mit 5 zufälligen Buchstaben erstellen und dieses dann um eine Kopie "erweitern"; dann sind die Pärchen aber auch wieder ab der
Hälfte sortiert 🙁
Aber Hashmaps werde ich mir auf jeden Fall mal ansehen, danke.
 
Sind dir Listen bekannt wie z.B die ArrayList?
Dann könnte man z.B die Werte aus einem Array in eine ArrayList umschreiben.
Diese kann man dann mit Collections.shuffle(mylist) durchmischen.

Ansonsten:
Kenne jetzt selber gerade auch keinen, aber nach kurz googlen denke ich, dass es relativ einfache Algorithmen gibt, die das Problem lösen können.
 
Wenn du Arrays verwenden willst und die Klasse Random verwendest, kannst du dir zufällige Positionen im neuen Array ausgeben lassen.

Hier der Code, um ein Kartenset zu mischen:

Java:
		String[] karten = new String[] { "7", "8", "9", "10", "B", "D", "K", "A" };
		Random r = new Random();

		String[] gemischteKarten = new String[karten.length * 2];

		for (int current = 0; current < karten.length * 2; current++) {
			// suche Lücke
			int index = r.nextInt(gemischteKarten.length);;
			while (gemischteKarten[index] != null) {
				index = r.nextInt(gemischteKarten.length);
			}

			// setze Karte ein
			gemischteKarten[index] = karten[current / 2];

		}
		
		for(String s:gemischteKarten){
			System.out.println(s);
		}
 
Die Methode von Anti-Held ist natürlich auch ganz interessant, sie nutzt wirklich nur das Wissen was wir theoretisch aus der Vorlesung mitnehmen könnten.
Danke!
 

Zurück
Oben