Black Jack

CDW

0
Mitarbeiter
Eingereicht von zaibl
Implementiere das Kartenspiel Black Jack.
Für diejenigen, die die genauen Regeln nicht kennen, können hier: http://de.wikipedia.org/wiki/Black_Jack#Die_Regeln
die Regeln so wie den Spielablauf nachvollziehen
Von mir: GUI ist keine Pflicht, sehr wohl aber eine möglichst durchdachte CUI ;). Als "KI" reicht es, die Regeln für den Croupier umzusetzen. Bonusaufgabe wäre natürlich Multiplayerfähigkeit.
 
Erster Vorschlag...

Ich habs in Python versucht, ist jedoch aufgrund der GUI und der Multiplayerfähigkeit sehr umfangreich, inkl. rund 60 Bilddateien... Daher wohl eher schwierig zu posten. Bei Interesse könnte ichs aber versuchen... Viel Vergnügen beim Erstellen weiterer Vorschläge...

Habs nun halt versucht mit zip... Sollte funktionieren (Alles im selben Verzeichnis ablegen, "GUI" ausführen). Für Windows, läuft aber unter Linux auch, allerdings möglicherweise mit gewissen grafischen Einbussen und aufgrund der Gross-, Kleinunterscheidung ist es zwingend die Namen von Chip1.PNG, Chip10.PNG und Pfeil.PNG ebenfalls auf klein ".png" zu ändern, ansonsten ImportError... Sorry, habs auf die Schnelle nicht sauberer hingekriegt...
 
Zuletzt bearbeitet:
primitives BlackJack

da ich noch nicht so fit bin in der GUI-programmierung habe ich es als konsolenanwendung implementiert.
leider ist mir erst zu spät aufgefallen dass ich vergessen habe dass meine asse nur einsen (und keine elfen) zählen, aber da ich keine lust mehr hatte alles nochmal umzuändern habe ich es einfach mal so gelassen. :)
man kann zwischen 1-7 spielern wählen und es gibt keine eindeutigen plätze/platzierungen sondern ganz schlicht nur gewinner und verlierer :)

Code:
public class Cards {
    String karte;
    int punkte;
    public Cards (String name, int wert) {
        karte = name;
        punkte = wert;
    }
}
Code:
import java.util.*;

public class Stapel {
    List<Cards> allCards = new ArrayList<Cards>();        
    public Stapel() {                                            // konstruktor erstellt alle möglichen spielkarten
        allCards.add(new Cards("AssPick", 1));
        allCards.add(new Cards("AssKreuz", 1));    
        allCards.add(new Cards("AssHerz", 1));    
        allCards.add(new Cards("AssKaro", 1));
        allCards.add(new Cards("KönigPick", 10));
        allCards.add(new Cards("KönigKreuz", 10));
        allCards.add(new Cards("KönigHerz", 10));
        allCards.add(new Cards("KönigKaro", 10));
        allCards.add(new Cards("DamePick", 10));
        allCards.add(new Cards("DameKreuz", 10));
        allCards.add(new Cards("DameHerz", 10));
        allCards.add(new Cards("DameKaro", 10));
        allCards.add(new Cards("BubePick", 10));
        allCards.add(new Cards("BubeKreuz", 10));
        allCards.add(new Cards("BubeHerz", 10));
        allCards.add(new Cards("BubeKaro", 10));
        allCards.add(new Cards("10Pick", 10));
        allCards.add(new Cards("10Kreuz", 10));
        allCards.add(new Cards("10Herz", 10));
        allCards.add(new Cards("10Karo", 10));
        allCards.add(new Cards("9Pick", 9));
        allCards.add(new Cards("9Kreuz", 9));
        allCards.add(new Cards("9Herz", 9));
        allCards.add(new Cards("9Karo", 9));
        allCards.add(new Cards("8Pick", 8));
        allCards.add(new Cards("8Kreuz", 8));
        allCards.add(new Cards("8Herz", 8));
        allCards.add(new Cards("8Karo", 8));
        allCards.add(new Cards("7Pick", 7));
        allCards.add(new Cards("7Kreuz", 7));
        allCards.add(new Cards("7Herz", 7));
        allCards.add(new Cards("7Karo", 7));
        allCards.add(new Cards("6Pick", 6));
        allCards.add(new Cards("6Kreuz", 6));
        allCards.add(new Cards("6Herz", 6));
        allCards.add(new Cards("6Karo", 6));
        allCards.add(new Cards("5Pick", 5));
        allCards.add(new Cards("5Kreuz", 5));
        allCards.add(new Cards("5Herz", 5));
        allCards.add(new Cards("5Karo", 5));
        allCards.add(new Cards("4Pick", 4));
        allCards.add(new Cards("4Kreuz", 4));
        allCards.add(new Cards("4Herz", 4));
        allCards.add(new Cards("4Karo", 4));
        allCards.add(new Cards("3Pick", 3));
        allCards.add(new Cards("3Kreuz", 3));
        allCards.add(new Cards("3Herz", 3));
        allCards.add(new Cards("3Karo", 3));
        allCards.add(new Cards("2Pick", 2));
        allCards.add(new Cards("2Kreuz", 2));
        allCards.add(new Cards("2Herz", 2));
        allCards.add(new Cards("2Karo", 2));
        Collections.shuffle(allCards);                            // kartenstapel wird gemischelt
    }
}
Code:
import java.util.*;

public class ActualGame {
    static List<Cards> allPacks = new ArrayList<Cards>();
    public ActualGame() {
        newGame();
    }
    public static void newGame() {
        Stapel stapel1 = new Stapel();
        Stapel stapel2 = new Stapel();
        Stapel stapel3 = new Stapel();
        Stapel stapel4 = new Stapel();
        Stapel stapel5 = new Stapel();
        Stapel stapel6 = new Stapel();
                        
        allPacks.addAll(stapel1.allCards);            // alle 6 spielkartenpackete werden zu einem packet zusammengefasst
        allPacks.addAll(stapel2.allCards);
        allPacks.addAll(stapel3.allCards);
        allPacks.addAll(stapel4.allCards);
        allPacks.addAll(stapel5.allCards);
        allPacks.addAll(stapel6.allCards);
        Collections.shuffle(allPacks);
    }
    public Cards getCard() {
        Cards actualCard = allPacks.get(0);
        allPacks.remove(0);
        return actualCard;
    }
}
Code:
import java.util.*;

public class Player {
    private List<Cards> playerCards = new ArrayList<Cards>();
    private int playerPoints;
    public Player() {
        playerPoints = 0;
    }
    public void setCard(Cards c) {
        playerCards.add(c);
        playerPoints += c.punkte;
    }
    public List getCards() {
        return playerCards;
    }
    public List getPlayerCards() {
        return playerCards;
    }
    public int getPoints() {
        return playerPoints;
    }
    public Cards getOneCard(int index) {
        return playerCards.get(index);
    }
}
main:
Code:
import java.util.*;

public class BlackJack {
    public static int numberOfPlayers;
    
    public static boolean setNumberOfPlayers(int n) {
        if ((n>=1) && (n<=7)) {
            numberOfPlayers = n;
            return true;
        } else {
            System.out.println("Ungültige Eingabe. Bitte versuchen Sie es erneut:");
            return false;
        }
    }

    public static void main(String[] args) throws InterruptedException {
        System.out.println("Black Jack - Console Game :=)");
        System.out.println();
        boolean gameRuns = true;
        while (gameRuns == true) {                                // spielanfang:
            ActualGame spiel = new ActualGame();                // 312 Karten werden erzeugt und vermischt
            Player croupir = new Player();                        // Croupir wird erzeugt
        
            System.out.println("Geben Sie die Anzahl der Spieler an: (1-7)");
            int playerIn = new java.util.Scanner(System.in).nextInt();
            while(!setNumberOfPlayers(playerIn)) {
                playerIn = new java.util.Scanner(System.in).nextInt();
            }
            Player players[] = new Player[numberOfPlayers];
            for (int i=0; i<numberOfPlayers; i++) {                // anzahl der gewünschten spieler wird erzeugt
                players[i] = new Player();
            }
            croupir.setCard(spiel.getCard());                    // karten werden ausgeteilt:
            for (int j=0; j<numberOfPlayers; j++) {                // croupier bekommt anfangs eine, spieler jeweils 2
                players[j].setCard(spiel.getCard());
                players[j].setCard(spiel.getCard());
            }
            for (int i=0; i<numberOfPlayers; i++) {
                List<Cards> cardsOnHand = new ArrayList<Cards>();
                cardsOnHand.addAll(players[i].getCards());
                int punkte = 0;
                System.out.println("Spieler " + (i+1) + " hat folgende Karten:");
                for (int j=0; j<cardsOnHand.size(); j++) {
                    System.out.print(cardsOnHand.get(j).karte.toString());
                    System.out.println("   = " + cardsOnHand.get(j).punkte + " Punkte");
                }
                System.out.println("gesamt: " + players[i].getPoints() + " Punkte");
                System.out.println();
                cardsOnHand.removeAll(cardsOnHand);                // nun liegen die karten "offen"
            }
            int finished = 0;
            for (int i=0; i<numberOfPlayers; i++) {
                boolean schleife = true;
                while (schleife) {
                    System.out.println("Spieler " + (i+1) + ", möchten Sie eine weitere Karte aufnehmen?");
                    System.out.println("(j)a - weitere Karte aufnehmen");
                    System.out.println("(n)ein - keine weitere Karte aufnehmen");
                    char cin = new java.util.Scanner(System.in).nextLine().toString().charAt(0);
                    Character.toLowerCase(cin);
                    if (cin == 'j') {
                        players[i].setCard(spiel.getCard());
                        List<Cards> cardsOnHand = new ArrayList<Cards>();
                        cardsOnHand.addAll(players[i].getCards());
                        int punkte = 0;
                        System.out.println("Spieler " + (i+1) + " hat folgende Karten:");
                        for (int j=0; j<cardsOnHand.size(); j++) {
                            System.out.print(cardsOnHand.get(j).karte.toString());
                            System.out.println("   = " + cardsOnHand.get(j).punkte + " Punkte");
                        }
                        System.out.println("gesamt: " + players[i].getPoints() + " Punkte");
                        System.out.println();
                        cardsOnHand.removeAll(cardsOnHand);
                    } else if (cin == 'n'){
                        schleife = false;
                    }
                    if (players[i].getPoints() > 21) {
                        System.out.println("Spieler " + (i+1) + ", Sie haben mehr als 21 Punkte und somit verloren.");
                        System.out.println();
                        finished++;
                        schleife = false;
                    } else if (players[i].getPoints() == 21) {
                        System.out.println("Glückwunsch Spieler " + (i+1) + "! Sie haben 21 Punkte und somit gewonnen!");
                        System.out.println();
                        finished++;
                        schleife = false;
                    }
                }
                
            }
            if (finished == (playerIn+1)) {
                
            } else {
                Thread.sleep(2500);
                System.out.println("Coupir hat folgende Karten:");
                System.out.print(croupir.getOneCard(0).karte);
                System.out.println(" = " + croupir.getOneCard(0).punkte + " Punkte");
                System.out.println("gesamt: " + croupir.getPoints());
                System.out.println();
                System.out.println("Croupir zieht...");
                System.out.println();
                Thread.sleep(4000);
                croupir.setCard(spiel.getCard());
                System.out.println("Coupir hat folgende Karten:");
                System.out.print(croupir.getOneCard(0).karte);
                System.out.println(" = " + croupir.getOneCard(0).punkte + " Punkte");
                System.out.print(croupir.getOneCard(1).karte);
                System.out.println(" = " + croupir.getOneCard(1).punkte + " Punkte");
                System.out.println("gesamt: " + croupir.getPoints());
                System.out.println();
                Thread.sleep(2000);
                if (croupir.getPoints() < 17) {
                    System.out.println("Croupir zieht noch eine Karte...");
                    System.out.println();
                    Thread.sleep(3000);
                    croupir.setCard(spiel.getCard());
                    System.out.println("Coupir hat folgende Karten:");
                    System.out.print(croupir.getOneCard(0).karte);
                    System.out.println(" = " + croupir.getOneCard(0).punkte + " Punkte");
                    System.out.print(croupir.getOneCard(1).karte);
                    System.out.println(" = " + croupir.getOneCard(1).punkte + " Punkte");
                    System.out.print(croupir.getOneCard(2).karte);
                    System.out.println(" = " + croupir.getOneCard(2).punkte + " Punkte");
                    System.out.println("gesamt: " + croupir.getPoints());
                    System.out.println();
                } else {
                    
                }
                Thread.sleep(1500);
                for (int i=0; i<playerIn; i++) {
                    if (players[i].getPoints() == 21) {
                        System.out.println("Spieler " + (i+1) + " hat das Spiel gewonnen");
                    } else {
                        System.out.println("Spieler " + (i+1) + " hat das Spiel verloren");
                    }
                }
                if (croupir.getPoints() == 21) {
                    System.out.println("Croupir hat das Spiel gewonnen");
                } else {
                    System.out.println("Croupir hat das Spiel verloren");
                }
                System.out.println();
                System.out.println("Möchten Sie noch eine Runde Spielen?");
                System.out.println("(j)a");
                System.out.println("(n)ein");
                char cin = new java.util.Scanner(System.in).nextLine().toString().charAt(0);
                Character.toLowerCase(cin);
                if (cin == 'n') {
                    gameRuns = false;
                    System.out.println("Programm wird beendet...");
                    Thread.sleep(500);
                }
            }
        }
    }
}
 
Zuletzt bearbeitet:
Zurück
Oben