Einfaches Kartenspiel (Spieler Klasse)

losi97

Mitglied
Hallo zusammen,
ich fange gerade mit Java an und komme von c++.
Für die Uni soll ich ein Programm schreiben, mit dem man Poker spielen kann. (Kenne mich leider auch null aus mit Poker ;D)
Aufgabe:
Kartendeck besteht aus den üblichen 52 Karten...
Verteilen der Karten:
  1. Runde: Jeder Spieler erhält zwei verdeckte Karten.
  2. Runde: Es werden drei Karten offen auf den Tisch gelegt (Flop)
  3. Runde: Es wird eine weitere Karte offen auf den Tisch gelegt (Turn)
  4. Runde: Es folgt die letzte offene Karte (River)
  5. Am Ende werden von den Spielern ihre Karten aufgedeckt
Nach jeder Runde wird gesetzt. (Auf das genaue Setzen soll hier nicht eingegangen werden.) Verteilen Sie nach obigen Regeln die Karten. Die Anzahl der Spieler soll am Anfang abgefragt werden und variabel sein. Geben Sie die Karten so auf dem Bildschirm aus, wie sie nach obigen Regeln aufgedeckt werden.

So.. ich hab auch schon etwas gemacht. Ich habe eine Klasse: Karte geschrieben und eine Klasse: Deck. Jetzt brauch ich noch eine Klasse für die Spieler und eine für das Spielfeld.

Meine erste Frage: Ist mein Klassenkonzept Sinnvoll oder würdet ihr es anders machen?
zweite Frage: Die Klassen Deck und Karte funktionieren Problemlos. Die Klasse Spieler hat aber mindestens ein Fehler, wo ich dem Spieler Karten zuweisen möchte. Ich finde den Fehler leider nicht.

Für Hilfe wäre ich wirklich sehr Dankbar :)

Code:
Code:
import javax.swing.*;
import java.util.*;

class Spieler {
    private String name;
    private ArrayList<Karte> spielerKarten;

    public void setName(String eingabeName) {
        this.name = eingabeName;
    }
    public String getName() {
        return this.name;
    }
    public void setSpielerKarten(Karte eingabeKarte) {
        spielerKarten.add(eingabeKarte);
    }
    public ArrayList<Karte> getSpielerKarten() {
        return this.spielerKarten;
    }
}

class Karte {
    private String farbe;
    private String wert;

    public Karte(String f,String w){
        this.farbe = f;
        this.wert = w;
    }

    public String getFarbe(){
        return this.farbe;
    }

    public String getWert() {
        return this.wert;
    }

    public String toString() {
        return "[" + this.wert + " : " + this.farbe + "]";
    }
}

class Deck {
    private ArrayList<Karte> kartenDeck;
    private String[] farben ={"Kreuz","Pik","Herz","Karo"};
    private String[] werte ={"Ass","Koenig","Dame","Bube","10","9","8","7","6","5","4","3","2"};

    public Deck() {
        kartenDeck = new ArrayList<Karte>();

        for(int i=0;i<farben.length;i++) {
            for(int j=0;j<werte.length;j++) {
                kartenDeck.add(new Karte(werte[j],farben[i]));
            }
        }
    }
    public void zeigeKartenDeck() {
        for(int i=0;i<kartenDeck.size();i++) {
            System.out.println(kartenDeck.get(i));
        }
    }
    public Karte getKarteFromDeck(int i) {
        return kartenDeck.get(i);
    }

    public void mischen() {
        Collections.shuffle(kartenDeck);
    }
    public int getSizeOf() { return kartenDeck.size(); }

}

public class Main {

    public static void main(String[] args) {

        Deck meinDeck = new Deck();

        meinDeck.mischen();
        meinDeck.zeigeKartenDeck();
        System.out.println("Anzahl der Karten im Deck: " + meinDeck.getSizeOf());
        
        Spieler meinSpieler = new Spieler();
        meinSpieler.setName(JOptionPane.showInputDialog("Name: "));
        meinSpieler.setSpielerKarten(meinDeck.getKarteFromDeck(1));
        meinSpieler.setSpielerKarten(meinDeck.getKarteFromDeck(2));
        System.out.println(meinSpieler.getName() + " : " + meinSpieler.getSpielerKarten());

    }
}
 

losi97

Mitglied
Den Namen kann ich noch eingaben aber die Konsolen Ausgabe endet mit:
Exception in thread "main" java.lang.NullPointerException
at com.company.Spieler.setSpielerKarten(Main.java:16)
at com.company.Main.main(Main.java:87)

Process finished with exit code 1
 

losi97

Mitglied
OK ich habe noch ein Problem.
Mein Plan ist es eine Klasse Spielfeld zu erstellen, die die Spieler beinhaltet und die aufgedeckten Karten.
Der Konstrukte soll beim Aufruf ein neues Deck wie oben gezeigt erstellen. Dieses ist dann das Spieldeck.
Jetzt das Problem: Wenn ich ein Spieler dem Spielfeld hinzufügen will erstelle ich ein Spieler Objekt und dessen Konstruktor weißt diesem Spieler zwei karten aus dem Deck zu (und löscht diese dann auch). Dafür muss ich ein Deck übergeben.
Kann man überhaupt Objekte innerhalb eines Konstrukteurs erstellen?
Code: Problematische Stelle: Spieler meinSpieler = new Spieler(meinDeck); (meinDeck wird nicht erkannt)
Code:
class Spieler {
    private String name;
    private ArrayList<Karte> spielerKarten;

    public Spieler(Deck eingabeDeck){
        spielerKarten = new ArrayList<Karte>();
        for (int i=0;i<2;i++) {
            spielerKarten.add(eingabeDeck.getKarteFromDeck(eingabeDeck.getSizeOf()-1));
            eingabeDeck.getKartenDeck().remove(eingabeDeck.getSizeOf()-1);
        }
    }
    public void setName(String eingabeName) {
        this.name = eingabeName;
    }
    public String getName() {
        return this.name;
    }
    public void setSpielerKarten(Karte eingabeKarte) {
        spielerKarten.add(eingabeKarte);
    }
    public ArrayList<Karte> getSpielerKarten() {
        return this.spielerKarten;
    }
}
class Spielfeld {
    private ArrayList<Spieler> spielerAufSpielfeld;
    private ArrayList<Karte> kartenAufSpielfeld;
    private int runde;

    public Spielfeld(){
        spielerAufSpielfeld = new ArrayList<Spieler>();
        kartenAufSpielfeld = new ArrayList<Karte>();
        Deck meinDeck = new Deck();
    }
    public void createSpieler(int x) {
        for (int i=0;i<x;i++) {
            Spieler meinSpieler = new Spieler(meinDeck);
        }
    }
}
 

losi97

Mitglied
Ich bin mir nicht sicher was du meinst.
Meinst du das so?
Code:
class Spielfeld {
    private ArrayList<Spieler> spielerAufSpielfeld;
    private ArrayList<Karte> kartenAufSpielfeld;
    private Deck meinDeck;
    private int runde;

    public Spielfeld(){
        spielerAufSpielfeld = new ArrayList<Spieler>();
        kartenAufSpielfeld = new ArrayList<Karte>();
        meinDeck = new Deck();
    }
    public void createSpieler(int x) {
        for (int i=0;i<x;i++) {
            Spieler spieler = new Spieler(meinDeck);
        }
    }
}
 

losi97

Mitglied
Würdest du sagen, dass meine Idee sinnvoll ist, sprich würden Erfahrene Programmierer das ähnlich machen? Ich frag nur, weil ich mir kein Blödsinn angewöhnen will.
 

Frani.w

Neues Mitglied
Hallo zusammen,
ich fange gerade mit Java an und komme von c++.
Für die Uni soll ich ein Programm schreiben, mit dem man Poker spielen kann. (Kenne mich leider auch null aus mit Poker ;D)
Aufgabe:
Kartendeck besteht aus den üblichen 52 Karten...
Verteilen der Karten:
  1. Runde: Jeder Spieler erhält zwei verdeckte Karten.
  2. Runde: Es werden drei Karten offen auf den Tisch gelegt (Flop)
  3. Runde: Es wird eine weitere Karte offen auf den Tisch gelegt (Turn)
  4. Runde: Es folgt die letzte offene Karte (River)
  5. Am Ende werden von den Spielern ihre Karten aufgedeckt
Nach jeder Runde wird gesetzt. (Auf das genaue Setzen soll hier nicht eingegangen werden.) Verteilen Sie nach obigen Regeln die Karten. Die Anzahl der Spieler soll am Anfang abgefragt werden und variabel sein. Geben Sie die Karten so auf dem Bildschirm aus, wie sie nach obigen Regeln aufgedeckt werden.

So.. ich hab auch schon etwas gemacht. Ich habe eine Klasse: Karte geschrieben und eine Klasse: Deck. Jetzt brauch ich noch eine Klasse für die Spieler und eine für das Spielfeld.

Meine erste Frage: Ist mein Klassenkonzept Sinnvoll oder würdet ihr es anders machen?
zweite Frage: Die Klassen Deck und Karte funktionieren Problemlos. Die Klasse Spieler hat aber mindestens ein Fehler, wo ich dem Spieler Karten zuweisen möchte. Ich finde den Fehler leider nicht.

Für Hilfe wäre ich wirklich sehr Dankbar :)

Code:
Code:
import javax.swing.*;
import java.util.*;

class Spieler {
    private String name;
    private ArrayList<Karte> spielerKarten;

    public void setName(String eingabeName) {
        this.name = eingabeName;
    }
    public String getName() {
        return this.name;
    }
    public void setSpielerKarten(Karte eingabeKarte) {
        spielerKarten.add(eingabeKarte);
    }
    public ArrayList<Karte> getSpielerKarten() {
        return this.spielerKarten;
    }
}

class Karte {
    private String farbe;
    private String wert;

    public Karte(String f,String w){
        this.farbe = f;
        this.wert = w;
    }

    public String getFarbe(){
        return this.farbe;
    }

    public String getWert() {
        return this.wert;
    }

    public String toString() {
        return "[" + this.wert + " : " + this.farbe + "]";
    }
}

class Deck {
    private ArrayList<Karte> kartenDeck;
    private String[] farben ={"Kreuz","Pik","Herz","Karo"};
    private String[] werte ={"Ass","Koenig","Dame","Bube","10","9","8","7","6","5","4","3","2"};

    public Deck() {
        kartenDeck = new ArrayList<Karte>();

        for(int i=0;i<farben.length;i++) {
            for(int j=0;j<werte.length;j++) {
                kartenDeck.add(new Karte(werte[j],farben[i]));
            }
        }
    }
    public void zeigeKartenDeck() {
        for(int i=0;i<kartenDeck.size();i++) {
            System.out.println(kartenDeck.get(i));
        }
    }
    public Karte getKarteFromDeck(int i) {
        return kartenDeck.get(i);
    }

    public void mischen() {
        Collections.shuffle(kartenDeck);
    }
    public int getSizeOf() { return kartenDeck.size(); }

}

public class Main {

    public static void main(String[] args) {

        Deck meinDeck = new Deck();

        meinDeck.mischen();
        meinDeck.zeigeKartenDeck();
        System.out.println("Anzahl der Karten im Deck: " + meinDeck.getSizeOf());
       
        Spieler meinSpieler = new Spieler();
        meinSpieler.setName(JOptionPane.showInputDialog("Name: "));
        meinSpieler.setSpielerKarten(meinDeck.getKarteFromDeck(1));
        meinSpieler.setSpielerKarten(meinDeck.getKarteFromDeck(2));
        System.out.println(meinSpieler.getName() + " : " + meinSpieler.getSpielerKarten());

    }
}
Guten Tag, Hier ist ein Newbie der auch Probleme hat damit Poker zu programmieren. Deswegen meine Frage, ob du mir das komplette Programm schicken könntest und ich es mir dann ansehen könnte? Vielen Dank!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R OOP Einfaches Programmierbeispiel für Assoziation, Aggregation und Komposition gesucht Java Basics - Anfänger-Themen 10
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
J Einfaches Quadrat auf der Console ausgeben lassen Java Basics - Anfänger-Themen 7
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
R Einfaches refresh während runtime Java Basics - Anfänger-Themen 4
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
F Einfaches Threadbeispiel.. Java Basics - Anfänger-Themen 7
S Referentielle Integrität ? (Einfaches Bsp) Java Basics - Anfänger-Themen 2
G Erste Schritte Einfaches Gästebuch erstellen mit Array Java Basics - Anfänger-Themen 7
V Klassen import - einfaches Umleiten auf eigene Klassen? Java Basics - Anfänger-Themen 8
H Erste Schritte Einfaches Programm und GUI zusammen bringen Java Basics - Anfänger-Themen 3
A Android Datenbank gaaanz einfaches Insert geht nicht - warum? Java Basics - Anfänger-Themen 4
B OOP einfaches regex Java Basics - Anfänger-Themen 10
K einfaches Drucken von Text (und ggf Bildern,gemischt) Java Basics - Anfänger-Themen 11
M Ganz einfaches Beispiel, finde den Fehler aber nicht :( Java Basics - Anfänger-Themen 2
S Einfaches Regulaerer Ausdruck Problem Java Basics - Anfänger-Themen 7
E einfaches Schachbrett generieren Java Basics - Anfänger-Themen 9
M Einfaches TicTacToe Programm Java Basics - Anfänger-Themen 19
S einfaches Pokerprogramm Java Basics - Anfänger-Themen 52
S KeyListener für einfaches Programm Java Basics - Anfänger-Themen 3
H einfaches Array -> ']' expected Java Basics - Anfänger-Themen 9
H Webservice - Einfaches Beispiel Java Basics - Anfänger-Themen 2
F Ich raffs nicht! - Wie mache ich ein einfaches Java-window? Java Basics - Anfänger-Themen 54
S Einfaches int Array gibt über System.out.println merkwürden Wert aus Java Basics - Anfänger-Themen 9
K Einfaches Bubblesort Java Basics - Anfänger-Themen 11
O einfaches rechnen mit zahlen Java Basics - Anfänger-Themen 4
H Einfaches Date-parse problem Java Basics - Anfänger-Themen 2
T Array auf einfaches Element umwandeln Java Basics - Anfänger-Themen 8
G einfaches Regex Problem Java Basics - Anfänger-Themen 4
M EInfaches Addieren mit Abbruchbedingung Java Basics - Anfänger-Themen 9
M [Einfaches Beispiel] Problem mit innere Klassen Java Basics - Anfänger-Themen 4
S Einfaches Rechenprogramm Java Basics - Anfänger-Themen 2
G Einfaches Rechenprogramm schreiben! Java Basics - Anfänger-Themen 8
A ausgabe eines arrays - einfaches beispiel Java Basics - Anfänger-Themen 4
M Einfaches Menü erstellen Java Basics - Anfänger-Themen 106
D was ist denn nun schon wieder? Einfaches JSP. Java Basics - Anfänger-Themen 6
D Ein einfaches Problem aber ich brauche einen TIP Java Basics - Anfänger-Themen 2
R einfaches Programm, viele Probleme Java Basics - Anfänger-Themen 29
C Einfaches Paint-Programm Java Basics - Anfänger-Themen 9
P Ein einfaches Spiel: TicTacToe. Fehler und Vorschläge Java Basics - Anfänger-Themen 3
F einfaches Menue in einer Textkonsole Java Basics - Anfänger-Themen 4
W einfaches Frame öffnen Java Basics - Anfänger-Themen 2
N Wahrscheinlich ganz einfaches Problem, aber unverständlich! Java Basics - Anfänger-Themen 3
S einfaches script mit Eingabeaufforderung starten (javac) Java Basics - Anfänger-Themen 8
B Einfaches Speichern und Laden in Java? Java Basics - Anfänger-Themen 3
L Einfaches Warten in eine Schleife Java Basics - Anfänger-Themen 9
P einfaches Perl-Skript aufrufen Java Basics - Anfänger-Themen 7
G einfaches jdialog beispiel Java Basics - Anfänger-Themen 1
B Oberflaecheprog einfaches beispiel (button action listener) Java Basics - Anfänger-Themen 5
N Vermutlich einfaches Problem.. Java Basics - Anfänger-Themen 3
X Kartenspiel Java Basics - Anfänger-Themen 8
M Kartenspiel Java Basics - Anfänger-Themen 13
P Simples Kartenspiel Java Basics - Anfänger-Themen 1
C Frage zum Kartenspiel implementieren Java Basics - Anfänger-Themen 9
D Threads Kartenspiel - auf legen warten Java Basics - Anfänger-Themen 15
D Klassen Aufbau Kartenspiel Java Basics - Anfänger-Themen 20
R Kartenspiel Java Basics - Anfänger-Themen 8
S Kleines Kartenspiel mit Java Java Basics - Anfänger-Themen 2
Joy Kartenspiel programmieren Java Basics - Anfänger-Themen 4
V Kartenspiel Java Basics - Anfänger-Themen 12
G eine straße im kartenspiel erkennen (algorithmus) Java Basics - Anfänger-Themen 4
J Vier gewinnt in Java,Spieler Konstruktor Java Basics - Anfänger-Themen 8
M PNG als Spieler im Fenster anzeigen Java Basics - Anfänger-Themen 4
C Erste Schritte Spieler an anderen Frame weitergeben Java Basics - Anfänger-Themen 23
H Spieler bewegen :) Java Basics - Anfänger-Themen 6
I Spieler Name eintragen und Random Gewinner Java Basics - Anfänger-Themen 4
J Spieler bewegen Java Basics - Anfänger-Themen 3
TheKing Spieler Position mit Array vergleichen Java Basics - Anfänger-Themen 2
T Blobby Volley Spieler schreiben Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben