Poker Spiel ruückfrage

PrograJan

Mitglied
Hey
ich habe das Problem bei meinem Projekt das die jeweiligen Runden im Spiel nicht auf der Console angezeigt werden. Wie kann ich das am besten lösen?



package poker;

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

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

public Spieler(Deck eingabeDeck){
spielerKarten = new ArrayList<Karte>();
for (int i=0;i<2;i++) {
Karte karte = eingabeDeck.getKarteFromDeck(eingabeDeck.getSizeOf()-1);
spielerKarten.add(karte);
eingabeDeck.removeKarteFromDeck(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 {
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);
}
}
}

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));
}
}
}
public void removeKarteFromDeck(int i) {
kartenDeck.remove(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());

// Spieleranzahl vom Benutzer eingeben lassen
Scanner scanner = new Scanner(System.in);
System.out.print("Geben Sie die Anzahl der Spieler ein (zwischen 2 und 10): ");
int spielerAnzahl = scanner.nextInt();
scanner.nextLine(); // Um den Zeilenumbruch nach der Zahl zu verbrauchen

if (spielerAnzahl < 2 || spielerAnzahl > 10) {
System.out.println("Ungültige Spieleranzahl. Das Spiel erfordert zwischen 2 und 10 Spieler.");
return;
}

Spielfeld spielfeld = new Spielfeld();
spielfeld.createSpieler(spielerAnzahl);

// Austeilrunden durchlaufen
for (int runde = 1; runde <= 4; runde++) {
System.out.println("Austeilrunde " + runde + ":");

// Jeder Spieler bekommt eine Karte in dieser Runde
for (Spieler spieler : spielfeld.spielerAufSpielfeld) {
Karte karte = meinDeck.getKarteFromDeck(meinDeck.getSizeOf() - 1);
spieler.setSpielerKarten(karte);
meinDeck.removeKarteFromDeck(meinDeck.getSizeOf() - 1);
System.out.println(spieler.getName() + " erhält eine Karte: " + karte);
}
}


Spieler meinSpieler = new Spieler(meinDeck);
meinSpieler.setName(JOptionPane.showInputDialog("Name: "));
meinSpieler.setSpielerKarten(meinDeck.getKarteFromDeck(1));
meinSpieler.setSpielerKarten(meinDeck.getKarteFromDeck(2));
System.out.println(meinSpieler.getName() + " : " + meinSpieler.getSpielerKarten());

}
}
 

KonradN

Super-Moderator
Mitarbeiter
Erst einmal ein genereller Hinweis:
Code bitte immer in Code-Tags posten. Das geht am einfachsten über den Knopf </> links oberhalb des Eingabebereiches.

ich habe das Problem bei meinem Projekt das die jeweiligen Runden im Spiel nicht auf der Console angezeigt werden.
Hier ist immer wichtig, dass man genau beschreibt, was Du siehst bzw. was Du vermisst. Nach einem ersten Überfliegen des Codes vermute ich, dass Du die Ausgabe von System.out.println("Austeilrunde " + runde + ":"); siehst, aber dass Du nichts siehst von der folgenden for Schleife.

Wenn Du so Probleme hast, dann solltest Du Dir das einfach etwas näher ansehen. Was da helfen kann ist der Debugger - evtl. willst Du Dir den einmal ansehen und schauen, ob Du damit klar kommst? Ist nicht wirklich kompliziert in den modernen Entwicklungsumgebungen.

Aber auch ohne Debugger könntest Du Ausgaben hinzufügen. Was ist in spielfeld.spielerAufSpielfeld?

Das Problem ist bei deinem Code, dass diese Liste leer ist. Es sind keine Spieler drin. Das Problem ist die Methode, die die Spieler anlegen soll:
Java:
public void createSpieler(int x) {
    for (int i=0;i<x;i++) {
        Spieler spieler = new Spieler(meinDeck);
    }
}

Was macht diese Methode? Sie erzeugt Spieler. Aber sonst? Wie meinst Du, kommt der erzeugte Spieler in die Liste spielerAufSpielfeld?
 

joetrung

Mitglied
Moderator-Hinweis: Bitte die nachfolgenden Posts zu dem Code beachten!

Was sollte man hier als Alternative wählen? Vielleicht kannst du das einmal ausführen.
z.B. mit der Implementation des System.in
Java:
public class Test {
  public static void main (String args[]) throws Exception {
    int n = (Integer)read("Age (int):");
    String s = (String)read("Name (String):");
    double d = (Double)read("Salary (e.g. 30000.0):");
    System.out.println("Age: "+n+"\nName: "+s+"\nSalary: "+ d);
    System.out.printf("\nAge: %d\nName: %s\nSalary: %.2f", n, s, d);   
  }
  // accept only Integer, Double and String
  private static Object read(String txt) throws Exception {
    byte[] line = new byte[80];
    System.out.print(txt+" ");
    int n = System.in.read(line);
    int nl = System.lineSeparator().length();
    if (n == nl) return null;
    String s = new String(line, 0, n-nl);
    try {
      return Integer.parseInt(s);
    } catch (NumberFormatException ex) { }
    try {
      return Double.parseDouble(s);
    } catch (NumberFormatException ex) { }
    return s;
  }
}
und es sieht so aus:
1716125365015.png

Moderator-Hinweis: Bitte die nachfolgenden Posts zu dem Code beachten!
 
Zuletzt bearbeitet von einem Moderator:
G

Gelöschtes Mitglied 91877

Gast
Java:
public class Test {
  ...
  private static Object read(String txt) throws Exception {
    ...
    try {
      return Integer.parseInt(s);
    } catch (NumberFormatException ex) { }
    try {
      return Double.parseDouble(s);
    } catch (NumberFormatException ex) { }
    return s;
  }
}
Ernsthaft?
 

Marinek

Bekanntes Mitglied
Ich bin gerade nicht am PC. Meine Antwort ist daher recht kurz.

- also, mir ist schon klar, dass man das auch ohne Scanner machen kann oder dass man sich andere Bibliotheken bedienen kann und das mit etwas anderem als dem Scanner zu implementieren.

Das vorweggenommen finde ich deine Implementierung gerade mal nicht so gut. Zum einen ist das nicht die exakte Funktion von nextInt() Da du immer die komplette Zeile verarbeitest und nicht nur nich nur das nächste Token. Und das ist gerade der Vorteil, wenn man den Scanner verwendet.
Deine Implementierung nutzt exceptions von dem Programm Fluss zu steuern. Das ist meiner Meinung nach eine falsche Nutzung von Exceptions.

was passiert, wenn der User gar kein String eingibt? Deine Funktion gibt null zurück. Dann bekommt man einen harten Fehler, glaube ich.

Insgesamt denke ich, dass es keine gute Alternative ist.

Um hier, den Rückschluss zu meiner ursprünglichen Frage wieder herzustellen: es gibt überhaupt keinen guten Grund, in so einer Anwendung nicht den Scanner zu verwenden. Der Hinweis in dem Beitrag oben ist einfach sinnlos und falsch. Und anstatt das hier vernünftig zu reflektieren und vielleicht etwas dabei zu lernen, hat man sich dazu entschieden, hier irgendwelche blöden Fleming Post zu schreiben.
 

Oneixee5

Top Contributor
Ich bin gerade nicht am PC. Meine Antwort ist daher recht kurz.

- also, mir ist schon klar, dass man das auch ohne Scanner machen kann oder dass man sich andere Bibliotheken bedienen kann und das mit etwas anderem als dem Scanner zu implementieren.

Das vorweggenommen finde ich deine Implementierung gerade mal nicht so gut. Zum einen ist das nicht die exakte Funktion von nextInt() Da du immer die komplette Zeile verarbeitest und nicht nur nich nur das nächste Token. Und das ist gerade der Vorteil, wenn man den Scanner verwendet.
Deine Implementierung nutzt exceptions von dem Programm Fluss zu steuern. Das ist meiner Meinung nach eine falsche Nutzung von Exceptions.

was passiert, wenn der User gar kein String eingibt? Deine Funktion gibt null zurück. Dann bekommt man einen harten Fehler, glaube ich.

Insgesamt denke ich, dass es keine gute Alternative ist.

Um hier, den Rückschluss zu meiner ursprünglichen Frage wieder herzustellen: es gibt überhaupt keinen guten Grund, in so einer Anwendung nicht den Scanner zu verwenden. Der Hinweis in dem Beitrag oben ist einfach sinnlos und falsch. Und anstatt das hier vernünftig zu reflektieren und vielleicht etwas dabei zu lernen, hat man sich dazu entschieden, hier irgendwelche blöden Fleming Post zu schreiben.
Ich würde sogar noch weiter gehen. die Methode 'read' ist einfach nur schlecht und fehlerhaft. Das sollte man einem Anfänger keinesfalls als Empfehlung mitgeben. Es wäre am Besten der Beitrag würde gelöscht.
 

Marinek

Bekanntes Mitglied
Ich denke ein ausgezeichnetes Beispiel dafür, dass man nicht einfach blind dem vertrauen sollte, was in irgendeinem Forum steht. Sondern selbst versucht zu reflektieren, ob das richtig oder falsch ist.
Zumal sind noch schlechte Beispiele ausgezeichnet, um gerade in Form einer Code Review zu zeigen, wie es eigentlich besser läuft. Wenn man immer die perfekten Ergebnisse hat, dann fragt man sich warum überhaupt eine Code gurchführen 🤩
 

KonradN

Super-Moderator
Mitarbeiter
Ich denke, da muss man nicht viel diskutieren. Die Alternative ist einfach schlecht und fehlerhaft. Schon dass hier so frei Casts verwendet werden - Typsicherheit hat schon seine Gründe :)

Man kann gerne auf Streams setzen, wobei ich bei Texten dann eher auf einen Reader setzen würde, der sich dann um das Encoding kümmert und so. Aber das ist nebensächlich. Man würde es ausbauen um dann am Ende etwas zu haben wie den Scanner. Evtl. mit etwas anderen Features.

Daher wäre erst einmal die Frage: Was ist schlecht oder falsch am Scanner? Was will man genau haben bzw. was braucht man? Dann kann man gerne etwas anderes nutzen bzw. bauen.

Es wäre am Besten der Beitrag würde gelöscht.
Nein, ich denke, das wäre nicht wirklich zielführend, aber einen Hinweis als Moderator werde ich da wohl noch setzen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Poker Texas Hold em Java Basics - Anfänger-Themen 2
Z Poker - Strasse berechnen Java Basics - Anfänger-Themen 6
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
I Threads Spiel gol Java Basics - Anfänger-Themen 6
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
enesss tictactoe spiel Java Basics - Anfänger-Themen 5
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
I Simples Risiko-Spiel Java Basics - Anfänger-Themen 5
Hallolu Pong-Spiel: Schläger schneller werden lassen Java Basics - Anfänger-Themen 9
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
C Java Spiel Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
M Spiel programmieren Java Basics - Anfänger-Themen 16
Spencer Reid Feedback zu kleinem Spiel Java Basics - Anfänger-Themen 4
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
I Spiel Java Basics - Anfänger-Themen 34
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
I Spiel programmieren. Java Basics - Anfänger-Themen 16
B Hilfe bei Escape - Spiel Java Basics - Anfänger-Themen 6
S Java-Spiel Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
K Klassen Registrierungsseite für ein Spiel Java Basics - Anfänger-Themen 6
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
Mxxxt Mosaik Spiel - Steuerpanel wird nicht angezeigt Java Basics - Anfänger-Themen 5
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
H Spiel Kniffel: Gesamtes Array untersuchen. Java Basics - Anfänger-Themen 15
Tacofan Hangman als fertiges Spiel Java Basics - Anfänger-Themen 7
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
W Tic Tac Toe Spiel ohne Arrays Java Basics - Anfänger-Themen 7
S Im objektorientiertem "Spiel" kämpfen Java Basics - Anfänger-Themen 3
I Klassen Umsetzungsfrage zu Spiel "Zuul" Java Basics - Anfänger-Themen 3
F Mastermind Spiel Java Basics - Anfänger-Themen 9
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
J Java Spiel Zufallsauswahl für Zugbeginn Java Basics - Anfänger-Themen 3
J Frage Antwort Spiel - Wie Zeitcountdown realisieren? Java Basics - Anfänger-Themen 2
L Erste Schritte Spiel: Glückliches Sieben Java Basics - Anfänger-Themen 3
T Hangman spiel Java Basics - Anfänger-Themen 5
J 2 Pc's - Spiel gegeneinander ?! Java Basics - Anfänger-Themen 3
V Spiel Programmieren Java Basics - Anfänger-Themen 9
P 2D-Spiel und Bildschirmgröße Java Basics - Anfänger-Themen 2
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
T Blöcke für ein Jump and Run Spiel Java Basics - Anfänger-Themen 8
S 2D-Spiel mit Threads... Java Basics - Anfänger-Themen 3
S 2D-Spiel im Vollbild an größe anpassen? Java Basics - Anfänger-Themen 3
M hangman spiel Java Basics - Anfänger-Themen 1
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
S Mosaik Spiel Java Basics - Anfänger-Themen 19
pinar memory spiel Java Basics - Anfänger-Themen 10
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
K Erste Schritte Wie mache ich weiter? (Spiel-Menü) Java Basics - Anfänger-Themen 9
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
J Variablen Invalid Character - Error -> Spiel mit Variablenergebnissen Java Basics - Anfänger-Themen 8
K Schere Stein Papier Spiel Java Basics - Anfänger-Themen 3
A Feedback zum Spiel Java Basics - Anfänger-Themen 5
F Hilfe bei meinem Spiel Java Basics - Anfänger-Themen 3
C Lotto Spiel Java Basics - Anfänger-Themen 23
Jagson Dotcom Spiel - Dots Random setzen Java Basics - Anfänger-Themen 8
Dogge Farben-Spiel Java Basics - Anfänger-Themen 20
K Diverse Bugs in einem Snake Spiel Java Basics - Anfänger-Themen 4
2 Lotto-Spiel Java Basics - Anfänger-Themen 9
X Datentypen Probleme mit Char bei meinem 1. Spiel Java Basics - Anfänger-Themen 20
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
P NullPointerException in Memory-Spiel Java Basics - Anfänger-Themen 5
R Server/Client für Spiel Java Basics - Anfänger-Themen 2
K Hilfe, komme nicht weiter in meinem JAVA-Spiel Java Basics - Anfänger-Themen 3
J Programm(Spiel) neustarten Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben