Kartenauswertung.

Status
Nicht offen für weitere Antworten.
C

Coldie

Gast
N'abend ...

ich habe ein Prog. geschrieben, dass wie beim Poker 7 aus 52 Karten verteilt ...

Zuerst zwei Karten an den Spieler (sp1k1; sp1k2)
dann 3 Karten in den Flop (f1; f2; f3)
dann eine Karte in den Turn (t)
dann eine Karte in den River (r).

Jede Karte besitzt das Attribut Farbe (von 1-4, für Karo, Herz, Pik und Kreuz) und das Attribut Typ (von 1-13, also ... Ass, 2,3,4,5,6,7,8,9,10,Bube,Dame,König)...

Die Karten werden jetzt zufällig ausgeteilt ... und jede Kartenposition bekommt eine Farbe und einen Typ zugewiesen..

Bsp.

sp1k1farbe=1, sp1k1typ=13
sp1k2farbe=4, sp1k2typ=40
f1farbe=4, f1typ=27
f2farbe=3, f2typ=18
f3farbe=1, f3typ=1
tfarbe=1, ttyp=29
rfarbe=2, rtyp=52

Nun Möchte ich anhand dieser 5 Kartentypen und Farben Auswertungen vornehmen lassen...

fürn Flush(5 Karten gleicher Farbe) und ein Paar (2 Karten gleichen Typs) wars noch recht easy, wenn auch auf umständlichem wege...

if((s1k1farbe==s1k2farbe&&s1k1farbe==f1farbe&&s1k1farbe==f2farbe&&s1k1farbe==f3farbe)||
(s1k1farbe==s1k2farbe&&s1k1farbe==f1farbe&&s1k1farbe==f2farbe&&s1k1farbe==tfarbe)||
(s1k1farbe==s1k2farbe&&s1k1farbe==f1farbe&&s1k1farbe==f2farbe&&s1k1farbe==rfarbe)||
(s1k1farbe==s1k2farbe&&s1k1farbe==f1farbe&&s1k1farbe==tfarbe&&s1k1farbe==f3farbe)||
(s1k1farbe==s1k2farbe&&s1k1farbe==f1farbe&&s1k1farbe==rfarbe&&s1k1farbe==f3farbe)||
(s1k1farbe==s1k2farbe&&s1k1farbe==tfarbe&&s1k1farbe==f2farbe&&s1k1farbe==f3farbe)||
(s1k1farbe==s1k2farbe&&s1k1farbe==rfarbe&&s1k1farbe==f2farbe&&s1k1farbe==f3farbe)||
(s1k1farbe==s1k2farbe&&s1k1farbe==f1farbe&&s1k1farbe==tfarbe&&s1k1farbe==rfarbe)||
(s1k1farbe==s1k2farbe&&s1k1farbe==tfarbe&&s1k1farbe==f2farbe&&s1k1farbe==rfarbe)||
(s1k1farbe==s1k2farbe&&s1k1farbe==tfarbe&&s1k1farbe==rfarbe&&s1k1farbe==f3farbe)||
(s1k1farbe==f1farbe&&s1k1farbe==f2farbe&&s1k1farbe==f3farbe&&s1k1farbe==tfarbe)||
(s1k1farbe==f1farbe&&s1k1farbe==f2farbe&&s1k1farbe==f3farbe&&s1k1farbe==rfarbe)||
(s1k1farbe==f1farbe&&s1k1farbe==f2farbe&&s1k1farbe==tfarbe&&s1k1farbe==rfarbe)||
(s1k1farbe==f1farbe&&s1k1farbe==tfarbe&&s1k1farbe==f3farbe&&s1k1farbe==rfarbe)||
(s1k1farbe==tfarbe&&s1k1farbe==f2farbe&&s1k1farbe==f3farbe&&s1k1farbe==rfarbe)||
(s1k2farbe==f1farbe&&s1k2farbe==f2farbe&&s1k2farbe==f3farbe&&s1k2farbe==tfarbe)||
(s1k2farbe==f1farbe&&s1k2farbe==f2farbe&&s1k2farbe==f3farbe&&s1k2farbe==rfarbe)||
(s1k2farbe==f1farbe&&s1k2farbe==f2farbe&&s1k2farbe==tfarbe&&s1k2farbe==rfarbe)||
(s1k2farbe==f1farbe&&s1k2farbe==tfarbe&&s1k2farbe==f3farbe&&s1k2farbe==rfarbe)||
(s1k2farbe==tfarbe&&s1k2farbe==f2farbe&&s1k2farbe==f3farbe&&s1k2farbe==rfarbe)||
(f1farbe==f2farbe&&f1farbe==f3farbe&&f1farbe==tfarbe&&f1farbe==rfarbe))
{
System.out.println("Flush!");
}

if
((s1k1typ==s1k2typ)||(s1k1typ==f1typ)||(s1k1typ==f2typ)||(s1k1typ==f3typ)||(s1k1typ==ttyp)||
(s1k1typ==rtyp)||(s1k2typ==f1typ)||(s1k2typ==f2typ)||(s1k2typ==f3typ)||(s1k2typ==ttyp)||
(s1k2typ==rtyp)||(f1typ==f2typ)||(f1typ==f3typ)||(f1typ==ttyp)||(f1typ==rtyp)||(f2typ==f3typ)||
(f2typ==ttyp)||(f2typ==rtyp)||(f3typ==ttyp)||(f3typ==rtyp)||(ttyp==rtyp))
{
System.out.println("Pärchen");
}


Sieht jemand ne leichtere Möglichkeit? ... die vorallendingen kürzer und mit weniger schreibarbeit verbunden ist? ...

Wie lasse ich eine STRAßE auswerten?,


Dankö!
 
S

SlaterB

Gast
hier liegt die große Stärke von Listen, Arrays und Konstanten/ Enums

ein Flush ist dann z.B.
Code:
for (int farbe=0; farbe<ANZ_FARBEN; farbe++) {
   int anzFarbe = 0;
   for (int kartenIndex=0; kartenIndex<ANZ_KARTEN; kartenIndex++) {
      if (kartenFarbe[kartenIndex] == farbe) {
         anzFarbe++;
      }

   }
   if (anzFarbe >4) {
        System.out.println("Flush in "+farbName[farbe]);
   }
}


bei deinen Pärchen musst du darauf achten, dass nicht Dreier/ Vierer/ anderes besseres vorliegt..

am besten von oben weg erst das bessere prüfen und wenn das ausgeschlossen ist die kleinen Blätter

für Straße: sortieren nach Größe (bietet sich auch für Pärchen an, also auf jeden Fall am Anfang machen),
dann Karten 1-5, 2-6 und 3-7 einzeln prüfen, in einer Operation, die 5 Karten als Parameter nimmt,
diese hat dann leichtest Spiel, nur wert=wert[i+1]+1 oder ähnlich,


statt mit all den Arrays zu hantieren, bietet sich eine Klasse Karte an mit Operationen getFarbe(), getWert() usw.
(gerne auch isRiver(), isTurn() und ähnliches, aber das ist ja eher unwichtig)
 
S

SlaterB

Gast
könntest du bitte kurz näher erläutern was ich kurz näher erläutern soll?
auf Deutsch: häh?

und ich hab schon recht viel geschrieben, erwarte jetzt keine seitenlangen Romane über den Einsatz von 'Listen, Arrays und Konstanten/ Enums',
sowas braucht einige Erfahrung,
wenn ich mir deinen obigen Code anschauen empfehle ich zunächst nicht mehr als die einfachen Kapitel in einem Buch zu lesen..

http://www.galileocomputing.de/openbook/javainsel5/
(könntest du natürlich schon gemacht haben, dann beginnt der schwere Teil des Verstehens..)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben