Hallo zusammen,
da ich mittlerwile die ersten Anfängertutorials durchgearbeitet habe wurde es dann Zeit für Praxis. Ich habe leider keine Idee für ein nützliches Tool gehabt, allerdings ein Faible für Poker. Was liegt also näher als ein Pokerspiel zu programmieren?
Naja, ich bin sicherlich weit entfernt davon einen Pokerclient zu coden, allerdings ging mir eine simple Idee dabei nicht mehr aus dem Kopf und so habe ich mich heute mal hingesetzt und ein paar Zeilen geschrieben und probiert ein paar Ideen umzusetzen bzw. Probleme zu lösen.
Ich habe eine Klasse "Dealer" geschrieben, welche die Methode "deal" beinhaltet. In der Methode "deal" definiere ich mittels Arrays, wie eine Karte sich zusammen setzt (Aus Rang und Farbe/suit).
Zusätzlich nutze ich "Random", um zufällige Indezes der Arrays zu wählen und bilde damit dann eine Karte, welche ich ausgebe.
In der main Methode gebe ich 2 Karten an einen Spieler aus. Problem hierbei ist das Austeilen doppelter Karten. Ich dachte, ich füge ausgeteilte Karten einer ArrayList hinzu und lasse für den doppelten Fall einfach erneut die for-schleife durchlaufen.
Das klappt sogar ganz gut, jedoch bekomme ich mit diesem Programm nur 24 exklusive Kombinationen ausgegeben. Da ein Kartendeck aus 52 Karten besteht müssten es allerdings 26 Kombos sein.
Vielleicht findet ja jemand den Fehler. Auch für Anregungen zur Lesbarkeit oder Umsetzung bin ich offen. Habt Nachsicht mit mir, ich bin "nur" IT-Systemelektroniker, also kein Fachinformatiker, und das ist mein erstes Java Programm zum lernen.
Schönen Gruß
E: Frage: kann i negativ werden? Ich gucke gerade nochmal durch meine Ausgabe und kann keinen einzigen King entdecken. Der ist am Ende des ersten Arrays aber definiert.
E2: Habs gefunden, war einfach nur 13 statt 12 als Parameter bei 'int rndrank = rnd.nextInt'
da ich mittlerwile die ersten Anfängertutorials durchgearbeitet habe wurde es dann Zeit für Praxis. Ich habe leider keine Idee für ein nützliches Tool gehabt, allerdings ein Faible für Poker. Was liegt also näher als ein Pokerspiel zu programmieren?
Naja, ich bin sicherlich weit entfernt davon einen Pokerclient zu coden, allerdings ging mir eine simple Idee dabei nicht mehr aus dem Kopf und so habe ich mich heute mal hingesetzt und ein paar Zeilen geschrieben und probiert ein paar Ideen umzusetzen bzw. Probleme zu lösen.
Ich habe eine Klasse "Dealer" geschrieben, welche die Methode "deal" beinhaltet. In der Methode "deal" definiere ich mittels Arrays, wie eine Karte sich zusammen setzt (Aus Rang und Farbe/suit).
Zusätzlich nutze ich "Random", um zufällige Indezes der Arrays zu wählen und bilde damit dann eine Karte, welche ich ausgebe.
In der main Methode gebe ich 2 Karten an einen Spieler aus. Problem hierbei ist das Austeilen doppelter Karten. Ich dachte, ich füge ausgeteilte Karten einer ArrayList hinzu und lasse für den doppelten Fall einfach erneut die for-schleife durchlaufen.
Das klappt sogar ganz gut, jedoch bekomme ich mit diesem Programm nur 24 exklusive Kombinationen ausgegeben. Da ein Kartendeck aus 52 Karten besteht müssten es allerdings 26 Kombos sein.
Vielleicht findet ja jemand den Fehler. Auch für Anregungen zur Lesbarkeit oder Umsetzung bin ich offen. Habt Nachsicht mit mir, ich bin "nur" IT-Systemelektroniker, also kein Fachinformatiker, und das ist mein erstes Java Programm zum lernen.
Schönen Gruß
E: Frage: kann i negativ werden? Ich gucke gerade nochmal durch meine Ausgabe und kann keinen einzigen King entdecken. Der ist am Ende des ersten Arrays aber definiert.
E2: Habs gefunden, war einfach nur 13 statt 12 als Parameter bei 'int rndrank = rnd.nextInt'
Java:
import java.util.ArrayList;
import java.util.Random;
public class Dealer {
/**
* @param args
*/
public static void main(String[] args) {
// ArrayList für ausgeteilte Karten
ArrayList<String> dealt = new ArrayList<String>();
// for-Schleife um alle möglichen Kombinationen ausgeben zu lassen
for(int k=0; k<50; k++) {
// Kartenausteilung (2 holecards, 1 Spieler)
for(int i=0; i<2; i++){
String hcard = deal();
// Prüfe ob Karte bereits ausgeteilt wurde
if(dealt.contains(hcard)) {
i--;
}
else {
// Karte zum Array verteilter Karten hinzufügen und austeilen
dealt.add(hcard);
System.out.print(hcard);
}
}
System.out.println();
}
}
public static String deal() {
// Definition des Kartendecks mittels Arrays
String[] rank = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K"};
String[] suit = {"c", "s", "d", "h"};
// Generierung einer zufälligen Zahl für Array Indizes (Shuffle)
Random rnd = new Random();
int rndrank = rnd.nextInt(12);
int rndsuit = rnd.nextInt(4);
// Kombination einer Karte
String card = rank[rndrank] + suit[rndsuit];
return card;
}
}
Zuletzt bearbeitet: