Methoden Alle Kombinationen aus 2 Karten berechnen

poochie89

Mitglied
Hallo Leute,
ich verzweifle gerade an einem Problem welches eigentlich recht simpel sein sollte. Bin gerade blockiert und weiß nicht mehr weiter.
Ich will für ein Poker-Programm alle möglichen Starthände berechnen. Eine Starthand besteht aus 2 Karten, diese dürfen nicht gleich sein. Es gibt ein 52-Karten Deck. Die Karten werden mit new Card(int rang, int farbe) erzeugt. Es gibt 13 ränge (0-12) und 4 farben (0-3).
Mein Code berücksichtig nicht bereits vorhandene Kombos. Setze ich z=j und y=i fehlen aber kombos.



Java:
		ArrayList<ArrayList<Card>> allHoleCards = new ArrayList<ArrayList<Card>>();
		
		int i, j, z, y;
		
		for(i = 0; i< 4; i++){
			for(j = 0; j < 13; j++){
				
				for(y = 0; y < 4; y++){
					for(z = 0; z < 13; z++){
						
						if(z!=j || y!=i) {
							allHoleCards.add(new ArrayList<Card> (Arrays.asList(new Card(z,y), new Card(j,i))));

						}
						
						
					}
				}
				
			}
		}


Gruß,
Johannes
 
Also ich würde das so machen.

Java:
static ArrayList<Card> allCards() {
    ArrayList<Card> cards = new ArrayList<>();
    
    for(int i = 0; i< 4; i++){    
        for(int j = 0; j < 13; j++){
            cards.add(new Card(j, i));
        }
    }
    return cards;
}

static ArrayList<ArrayList<Card>> allCombinations() {
    ArrayList<Card> allCards = allCards();
    ArrayList<ArrayList<Card>> allHoleCards = new ArrayList<ArrayList<Card>>();
    
    for(int i = 0; i < allCards.size()-1; i++) {
        for(int j = i+1; j < allCards.size(); j++) {
            allHoleCards.add(new ArrayList<Card> (Arrays.asList(allCards.get(i), allCards.get(j))));
        }
    }
    return allHoleCards;
}
 
Das sieht schon gleich besser und übersichtlicher aus.
Danke, ich sollte vielleicht nit immer alles in einer Schleife machen, dein Ansatz ist viel besser/nachvollziebarer.

Gruß,
Johannes
 

Zurück
Oben