Poker Porgramm schreiben
-
money money money,
und du hast das simple dingens innerhalb ner stunde rofl
-
Java ist zwar nicht meine sektion,
aber dafür poker (Texas halten sie ihn ohne grenze :D)Sooo schwer ist das ganze ja alles nicht..
Also,
Die Card Klasse haste doch schon.Was Du jetzt noch brauchst ist ne Klasse die n Array von 52 Karten hält.
sowas wie:class set { private: Card cards[52]; //...
Bei der initialisierung dibst du in der reihenfolge die typen und die nummer an
for(int _icolor=0; _icolor <4; _icolor++) for(int _ivalue=2; _ivalue <15; _ivalue++) //13 karten 2..A { this->cards[_icolor*_ivalue].SetValue(_ivalue); this->cards[_icolor*_ivalue].SetColor(_icolor); }
Dann brauchst Du noch ein paar permutationen die das kartenmischen simulieren soll,...
for(unsigned int i=0; i<65535; i++) { srand (time(NULL)); int first_card_index= rand()% 52; srand (time(NULL)); int second_card_index=rand()% 52; if( first_card_index != second_card_index) { Card cTemp = this->cards[first_card_index]; this->cards[first_card_index]=this->cards[second_card_index]; this->cards[second_card_index]=cTemp; } }
Durch die initialisierung hast du schon ja drinne das eine karte legal ist.
aber ansonsten:Welche Kriterien treffen denn auf eine legale karte zu????
A) farbe 0,..,3 //sind genau die 4 farben
wert 2,...,14 //sind genau 13 kartenbool legalCard(Card c) { if( (c.GetValue() >=2) && (c.GetValue() <=14) && (c.GetColor() >=0 ) && (c.GetColor() <=3 ) ) return true; return false;
Mit hands sind ja die pokets gemeint, dann kommt es darauf an welche poker art
gemeint ist. Omaha (hi/lo), classic draw, Texas Holdem, 5/7 cards stud.....Um das zu verallgemeinern schreibe dir doch ne klasse
class poket_cards { private: Card *cards; unsigned int size; public: poket_cards(int wie_viele_auf_der_hand) { this->size=wie_viele_auf_der_hand; cards = new Card[this->size]; }; unsigned int Size(void) { return this->size;} int SetCard(Card c, unsigned int _index_of_card) { \\.... TODO by yourself }; //.....
Die prüfung ob die poket_cards legal sind sollte nun kein thema mehr sein.
Also das ist zwar mehr cpp als j aber ist ja quasi das gleiche.
grüüüße
-
danke erstma für die antwort
naja also jeweils 5 karten für 2 spieler sollen abgefragt werden und verwertet für texas holdem.
und was eig nur wichtig ist, es soll 1paar, 2paare oder high card gewertet werden. und da wir schon die klasse poker vom dozenten vorgegeben haben, sollte eig nur innerhalb //TODO etwas eingesetzt werden.grüße
-
na komm, jetzt ist doch quasi fertig... Er hat dir ja fast alles gemacht...
Den rest schaffst doch sicher allein...
-
Dallessandro schrieb:
danke erstma für die antwort
naja also jeweils 5 karten für 2 spieler sollen abgefragt werden und verwertet für texas holdem.
und was eig nur wichtig ist, es soll 1paar, 2paare oder high card gewertet werden. und da wir schon die klasse poker vom dozenten vorgegeben haben, sollte eig nur innerhalb //TODO etwas eingesetzt werden.grüße
Ähm,... Texas Holdem regeln kennst du??
Also die poket oder (hole cards) sind 2. Das Board sind weitere 5.
Deiß heist also das du aus 7 karten erstmal für jeden spieler die
kartenkombination mit der höchsten wertigkeit filtern musst....grüüüße
-
ja ich kenne die regeln und trotzdem ist die aufgabe das die 2 spieler 5karten auf die hand bekommen und diese dann miteinander verglichen werden sollen. und das ganze ohne flop. in der theorie ist es einfach, aber für mich sind das grad mal die ersten 2monate in der ich jemals mit java arbeiten muss.
-
Ja wenn die Spieler 5 Karten auf die hand bekommen
ist es entweder 5 cards stud oder classic draw und kein texas hold'em,....Trag doch nochmal dein source zusammen und zeige uns was Du denn schon hast.
grüße
-
nagut dann war ich unwissend. ich bin nur ein holdem fan und der dozent hat uns das die ganze zeit eingeredet und anscheinend selbst verwechselt :p
public class Poker { public static Card c11; // Karte 1 Spieler 1 public static Card c21; // Karte 2 Spieler 1 public static Card c31; // ... public static Card c41; public static Card c51; public static Card c12; // Karte 1 Spieler 2 public static Card c22; // ... public static Card c32; public static Card c42; public static Card c52; public static void main(String args[]){ c11 = new Card(); c21 = new Card(); c31 = new Card(); c41 = new Card(); c51 = new Card(); c12 = new Card(); c22 = new Card(); c32 = new Card(); c42 = new Card(); c52 = new Card(); int choice; boolean end = false; boolean legalCard = false; boolean legalHand = false; int temp; while(!end) { choice = Integer.parseInt(JOptionPane.showInputDialog(null, "Wollen sie 10 Karten eingeben geben Sie 1 ein,\n Wollen sie Karten zufaellig generieren geben Sie 2 ein\n wollen Sie das Programm beenden geben sie irgendwas anderes ein")); switch(choice) { case 1: while(!legalHand) { while(!legalCard) { temp =Integer.parseInt(JOptionPane.showInputDialog(null, "Geben Sie den Wert der ersten Karte ein: 2-14")); c11.setValue(temp); temp =Integer.parseInt(JOptionPane.showInputDialog(null, "Geben Sie die Farbe der ersten Karte ein: 0-3")); c11.setColor(temp); if(legalCard(c11)) { legalCard = true; } else { JOptionPane.showMessageDialog(null, "Illegale Eingabe"); } } legalCard = false; // TODO // analog fuer Karten 2-10 //TODO //Korrektheit der Haende bestimmen } //TODO // Gewinner bestimmen und ausgeben (mit calculateWinningHandReduced) //TODO // OPTIONAL: Echte Gewinner bestimmen und ausgeben (calculateWinningHand) break; case 2: //TODO // Haende generieren und Gewinner ausgeben. // OPTIONAL: Echte Gewinner bestimmen und ausgeben (calculateWinningHand) break; default: end = true; break; } } } public static boolean legalCard(Card c) { return false; //TODO } public static boolean legalHands(Card cardOnePlayerOne, Card cardTwoPlayerOne, Card cardThreePlayerOne, Card cardFourPlayerOne, Card cardFivePlayerOne, Card cardOnePlayerTwo, Card cardTwoPlayerTwo, Card cardThreePlayerTwo, Card cardFourPlayerTwo, Card cardFivePlayerTwo) { return false; //TODO } public static int calculateWinningHandReduced(Card cardOnePlayerOne, Card cardTwoPlayerOne, Card cardThreePlayerOne, Card cardFourPlayerOne, Card cardFivePlayerOne, Card cardOnePlayerTwo, Card cardTwoPlayerTwo, Card cardThreePlayerTwo, Card cardFourPlayerTwo, Card cardFivePlayerTwo) { return 3; //TODO } public static int calculateWinningHand(Card cardOnePlayerOne, Card cardTwoPlayerOne, Card cardThreePlayerOne, Card cardFourPlayerOne, Card cardFivePlayerOne, Card cardOnePlayerTwo, Card cardTwoPlayerTwo, Card cardThreePlayerTwo, Card cardFourPlayerTwo, Card cardFivePlayerTwo) { return 3; //TODO Optionale Methode. Wenn nicht programmiert so lassen, sonst natuerlich korrekte Rueckgabewerte geben. } public void generateHands() { //TODO } }
ich habe jez schon meine ganzen mißungenen versuche wieder zurückgesetzt, weil nix
funktionieren wollte
sogar zu 2. kommen wir nicht weiter. unser countdown läuft, nur noch 19std
-
Junge,..
die Konditionen einer legalen Karte kennst Du doch schon,..
setze die doch mal in die function legalCard(Card c) ein und poste die....
-
Und die Card-Klasse ist auch nimmer schwer...