einfaches Pokerprogramm

SvenLindner

Mitglied
Java:
    public static boolean legalHands(Card carsac)
    {
    	if ( cardsac )
    	
    		c11 != c21 != c31 != c41 != c51 != c12 != c22 != c32 != c42 != c52;
    	
    	
    		return true;
    	
    	
    	else ;
    	 
        return false;
     
    }
Vielleicht versteht ihr an meinem "falschen" Code was ich machen möchte.
Wenn CardonePlayerOne bis CardFivePlayerTwo unterschiedlich voneiander sind, dann sind es legalCards, also true. Kann mir da jemand helfen?
 

Painii

Bekanntes Mitglied
Java:
    public static boolean legalHands(Card carsac)
    {
    	if ( cardsac )
    	
    		c11 != c21 != c31 != c41 != c51 != c12 != c22 != c32 != c42 != c52;
    	
    	
    		return true;
    	
    	
    	else ;
    	 
        return false;
     
    }
Vielleicht versteht ihr an meinem "falschen" Code was ich machen möchte.
Wenn CardonePlayerOne bis CardFivePlayerTwo unterschiedlich voneiander sind, dann sind es legalCards, also true. Kann mir da jemand helfen?

Du hast da stehen:
c11 != c21 UND c21!=c31 UND ...
Das verhindert nicht, dass c11==c31 ist.
Was cardsac, carsac machen soll weiss ich nicht.
In dem Methodenkopf sollen 10 Card-Objekte angenommen werden, nicht das was du da hast.
Ausserdem.

Bau eine Methode readCard(), die von der Konsole eine Karte eingeben lässt.
Das macht deine andere Methode übersichtlicher - da steht nur noch der Abschnitt unten, readCard macht ja IMMER das gleiche. (Für den Fall das manuell eingegeben wird).
Falls du zufällig deine Karten bauen willst, dann machs dir auch so einfach wie möglich, mache eine Methode wie readCard(), nur dass sie halt keine Karte einliest sondern eine zufällige generiert.
Ja, dann können auch zwei gleiche gemacht werden.
Java:
 c11 = readCard();
c21 = readCard();
//... Genauso für den Fall dass es zufällig sein soll.

Danach schaust du einmal, ob die zusammengestellte Hand (die einzelnen Variablen c11...c52) passt mit:
Java:
 legalHand = legalCards(c11,c21,c31,c41,c51,c12,c22,c32,c42,c52)
Die while-schleife läuft dann solange !legalHand erfüllt ist

Laut Aufgabenstellung sollst du es mit den einzelnen Variablen machen, also lass das Array von ARadauer lieber erstmal raus... (produziert zwar unschöneren Code, aber besser es funkioniert erstmal, oder?)
 
T

tommysenf

Gast
Da dich die gesamte Thematik eigentlich gar nicht interessiert poste ich dir hier einfach mal eine mögliche Lösung anstatt dich weiter zu Quälen. Versuche aber zumindest einmal nachzuvollziehen was das Programm macht, oder frage nach wenn dir etwas unklar ist.

Java:
import java.util.HashSet;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;

public class Poker {

	private static final int HAND_SIZE = 5;
	private static final int IDX_HIGH_PAIR = 0;
	private static final int IDX_LOW_PAIR = 1;
	private static final int IDX_HIGHCARD = 2;
	private static final int PLAYERONE = 1;
	private static final int PLAYERTWO = 2;
	private static final int SPLIT = 0;

	private static Card[] playerOne = new Card[HAND_SIZE];
	private static Card[] playerTwo = new Card[HAND_SIZE];

	public boolean legalHands(Card cardOnePlayerOne, Card cardTwoPlayerOne,
			Card cardThreePlayerOne, Card cardFourPlayerOne,
			Card cardFivePlayerOne, Card cardOnePlayerTwo,
			Card cardTwoPlayerTwo, Card cardThreePlayerTwo,
			Card cardFourPlayerTwo, Card cardFivePlayerTwo) {

		Set<Card> testSet = new HashSet<Card>();
		testSet.add(cardOnePlayerOne);
		testSet.add(cardTwoPlayerOne);
		testSet.add(cardThreePlayerOne);
		testSet.add(cardFourPlayerOne);
		testSet.add(cardFivePlayerOne);
		testSet.add(cardOnePlayerTwo);
		testSet.add(cardTwoPlayerTwo);
		testSet.add(cardThreePlayerTwo);
		testSet.add(cardFourPlayerTwo);
		testSet.add(cardFivePlayerTwo);
		return testSet.size() == 10;

	}

	public void generateHands() {

		Random random = new Random();
		do {
			for (int i = 0; i < HAND_SIZE; i++) {
				playerOne[i] = new Card(random.nextInt(13) + 2,
						random.nextInt(4));
				playerTwo[i] = new Card(random.nextInt(13) + 2,
						random.nextInt(4));
			}
		} while (!legalHands(playerOne[0], playerOne[1], playerOne[2],
				playerOne[3], playerOne[4], playerTwo[0], playerTwo[1],
				playerTwo[2], playerTwo[3], playerTwo[4]));
	}

	public boolean legalCard(Card card) {
		return card.getColor() >= 0 && card.getColor() <= 3
				&& card.getValue() >= 2 && card.getValue() <= 14;
	}

	public int calculateWinningHandReduced(Card cardOnePlayerOne,
			Card cardTwoPlayerOne, Card cardThreePlayerOne,
			Card cardFourPlayerOne, Card cardFivePlayerOne,
			Card cardOnePlayerTwo, Card cardTwoPlayerTwo,
			Card cardThreePlayerTwo, Card cardFourPlayerTwo,
			Card cardFivePlayerTwo) {

		int[] resPlayerOne = getResult(cardOnePlayerOne, cardTwoPlayerOne,
				cardThreePlayerOne, cardFourPlayerOne, cardFivePlayerOne);

		int[] resPlayerTwo = getResult(cardOnePlayerTwo, cardTwoPlayerTwo,
				cardThreePlayerTwo, cardFourPlayerTwo, cardFivePlayerTwo);

		int critHighPair = compare(resPlayerOne[IDX_HIGH_PAIR],
				resPlayerTwo[IDX_HIGH_PAIR]);
		if (critHighPair == SPLIT) {
			int critLowPair = compare(resPlayerOne[IDX_LOW_PAIR],
					resPlayerTwo[IDX_LOW_PAIR]);
			if (critLowPair == SPLIT) {
				return compare(resPlayerOne[IDX_HIGHCARD],
						resPlayerTwo[IDX_HIGHCARD]);
			} else {
				return critLowPair;
			}
		} else {
			return critHighPair;
		}
	}

	private int compare(int playerOne, int playerTwo) {

		if (playerOne == playerTwo) {
			return SPLIT;
		}
		return playerOne > playerTwo ? PLAYERONE : PLAYERTWO;

	}

	private int[] getResult(Card... cards) {

		int maxPair = 0, minPair = 0, highCard = 0;

		for (int testValue = 14; testValue > 1; testValue--) {
			boolean found = false;
			for (Card card : cards) {
				if (card.getValue() == testValue)
					if (highCard == 0) {
						highCard = testValue;
						if (found) {
							if (maxPair == 0) {
								maxPair = testValue;
							} else if (minPair == 0) {
								minPair = testValue;
							}
							if (highCard == testValue) {
								highCard = 0;
							}
						} else {
							found = true;
						}
					}
			}

		}

		return new int[] { maxPair, minPair, highCard };
	}

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		Poker poker = new Poker();

		System.out.println("Wollen Sie die Karten");
		System.out.println("\t1) Manuell eingeben");
		System.out.println("\t2) Automatisch generieren");

		System.out.print(">");
		int option = scanner.nextInt();

		if (option == 1) {
			cardInput(scanner, poker, "Spieler 1", playerOne);
			cardInput(scanner, poker, "Spieler 2", playerTwo);
			if (!poker.legalHands(playerOne[0], playerOne[1], playerOne[2],
					playerOne[3], playerOne[4], playerTwo[0], playerTwo[1],
					playerTwo[2], playerTwo[3], playerTwo[4])) {

				System.out
						.println("Ungültge Eingabe. Das Programm wird beendet.");
				System.exit(3);

			}
		} else if (option == 2) {
			poker.generateHands();
		} else {
			System.out.println("Ungültge Eingabe. Das Programm wird beendet.");
			System.exit(1);
		}

		System.out.println("\nDie Karten von Spieler 1:");
		for (Card card : playerOne) {
			System.out.println("\t" + card);
		}
		System.out.println("\nDie Karten von Spieler 2:");
		for (Card card : playerTwo) {
			System.out.println("\t" + card);
		}

		int winner = poker.calculateWinningHandReduced(playerOne[0],
				playerOne[1], playerOne[2], playerOne[3], playerOne[4],
				playerTwo[0], playerTwo[1], playerTwo[2], playerTwo[3],
				playerTwo[4]);

		if (winner == SPLIT) {
			System.out.println("Splitpot!!!");
		} else {
			System.out.println("\nSpieler " + winner + " hat gewonnen!!!");
		}
	}

	private static void cardInput(Scanner scanner, Poker poker, String player,
			Card[] deck) {
		for (int i = 0; i < 5; i++) {
			System.out.println("\nEingabe der " + (i + 1) + ". Karte von "
					+ player);

			System.out.print("\tBitte geben Sie eine " + "Farbe (0 - 3) ein >");
			int color = scanner.nextInt();

			System.out.print("\tBitte geben Sie einen einen "
					+ "Wert (2 - 14) ein >");
			int value = scanner.nextInt();

			playerOne[i] = new Card(value, color);
			if (poker.legalCard(deck[i])) {
				System.out.println("\t" + deck[i] + " hinzugefügt");
			} else {
				System.out
						.println("Ungültge Eingabe. Das Programm wird beendet.");
				System.exit(2);
			}
		}
	}

}

class Card {

	private int value, color;

	public Card(int value, int color) {
		super();
		this.value = value;
		this.color = color;
	}

	public int getValue() {
		return value;
	}

	public void setValue(int value) {
		this.value = value;
	}

	public int getColor() {
		return color;
	}

	public void setColor(int color) {
		this.color = color;
	}

	@Override
	public String toString() {

		String text = "error";

		switch (color) {
		case 0:
			text = "Kreuz ";
			break;
		case 1:
			text = "Pik ";
			break;
		case 2:
			text = "Herz ";
			break;
		case 3:
			text = "Karo ";
			break;
		}

		if (value < 11) {
			text += value;
		} else {
			switch (value) {
			case 11:
				text += "Bube";
				break;
			case 12:
				text += "Dame";
				break;
			case 13:
				text += "König";
				break;
			case 14:
				text += "Ass";
				break;
			}
		}
		return text;
	}

	@Override
	public boolean equals(Object other) {

		if (this == other) {
			return true;
		}
		if (!(other instanceof Card)) {
			return false;
		}
		Card otherCard = (Card) other;
		return getColor() == otherCard.getColor()
				&& getValue() == otherCard.getValue();
	}
}
 
Ä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
L Einfaches Kartenspiel (Spieler Klasse) Java Basics - Anfänger-Themen 16
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 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

Ähnliche Java Themen


Oben