Hejsa.
Jeg er en ivrig hobby pokerspiller, og bruger ofte poker foraet
http://www.pokernet.dk/forum/default.asp, hvor spillere kan mødes og poste hænder der kan blive analyseret.
For at poste en pokerhånd på siden, skal den overholde en bestemt formatering. Eksempelvis skal brugerens nick være skiftet til "Hero", Ah (Ace of hearts) skal skrives som A[h] osv.
Jeg har derfor givet mig i kast med at skrive en Java app der kan udføre denne formatering.
Jeg har herunder lige posted et eksempel på en original Hand History (HH) og en converted HH
Den originale HH:
BossMedia Game #1466621807: Table Table TH 103 - €0.25/€0.50 - No Limit Hold'em - 20:28:15 - 2009/02/19
Seat 1: SethPlate (€86.89)
Seat 2: Viccarme (€53.65)
Seat 4: I_Bluff? (€53.20)
Seat 5: Ca$hperD (€117.48)
Viccarme posts the small blind of €0.25
I_Bluff? posts the big blind of €0.50
SethPlate is the button
*** HOLE CARDS ***
Dealt to Ca$hperD [Ah As]
Ca$hperD raises €2.00
SethPlate folds
Viccarme folds
I_Bluff? folds
*** SUMMARY ***
Total pot €1.25 | Rake €0.00
SethPlate won (€0.00), mucks
Viccarme won (€0.00), mucks
I_Bluff? won (€0.00), mucks
Ca$hperD won (€1.25), mucks
Den konverterede HH:
BossMedia Game #1466621807: Table Table TH 103 - €0.25/€0.50 - No Limit Hold'em - 20:28:15 - 2009/02/19
Seat 1: SethPlate (€86.89)
Seat 2: Viccarme (€53.65)
Seat 4: I_Bluff? (€53.20)
Seat 5: Hero (€117.48)
Viccarme posts the small blind of €0.25
I_Bluff? posts the big blind of €0.50
SethPlate is the button
*** HOLE CARDS ***
Dealt to Hero [A[h] A[s]]
Hero raises €2.00
SethPlate folds
Viccarme folds
I_Bluff? folds
Jeg har dog et problem med at få udskiftet mine "hole cards" altså at få udskiftet "Ah" med "A[h]", og har derfor vedhæftet min kode herunder - der er en masse kommentarer - håber de gavner mere end de forvirrer
Jeg har markered den if-sætning jeg ikke kan få opfyldt med fed. Håber en af Jer ligger inde med en løsning
package HHConverter;
import java.lang.String;
public class HandConverter
{
public HandConverter()
{
}
public static void convertHH(String hh, boolean hideNick, boolean removeResult)
{
String test = hh;
//Array af strings, der indeholder de originale kort
String[] cards = {"Ad", "Kd", "Qd", "Jd",...}; //Super langt array der indeholder alle kortene
//Array af strings, der indeholder de kort der skal indsættes
String[] PNcards = {"A[d]", "K[d]", "Q[d]", "J[d]",...}; //Super langt array der indeholder alle kortene der skal udskiftes med
//For-loop der kører hele strengen igennem
for(int i=0; i < test.length(); i++)
{
//Leder efter det første sted hvor der er et "[" og præcis 6 felter til "]" - de 6 felter svarer til de to hole cards
if(test.charAt(i) == '[' && test.charAt(i+6) == ']')
{
//Overloader indekset fra for-loopet, for at bruge det senere
int x = i+1;
//for-loop til at køre alle 52 kort igennem
for(int k=0; k < 52; k++)
{
//Henter de to chars ud der repræsenterer det første hole-card
char[] blah = {test.charAt(x), test.charAt(x+1)};
//Laver dette hole-card om til en string, så det kan sammen lignes med strengen fra vores array af kort
String pokerCard = blah.toString();
//Debug print, der tjekker om "pokerCard" indeholder det første hole-card
System.out.println(blah);
//Loader det aktuelle kort det tjekkes over i variabel
String pokerCardToCheck = cards[k];
//Printer det aktuelle kort ud, for at sikre mig at det er korrekte kort der bliver vist
System.out.println(pokerCardToCheck);
//Denne condition kan jeg ikke få opfyldt - har prøvet med "==" "pokerCard.equals(cards[k])"
[b]if(pokerCard.equals(pokerCardToCheck))
{
System.out.println("Condition OK");
test.replaceFirst(pokerCard, PNcards[k]);
//x = x+3;
}[/b]
}
}
}
if(hideNick)
{
String heroNick = test.substring(test.lastIndexOf("Dealt to "), test.indexOf(" ["));
heroNick = heroNick.substring(9);
test = test.replace(heroNick, "Hero");
test = test.substring(test.indexOf("Seat"));
}
if(removeResult)
{
test = test.substring(0, test.lastIndexOf("*** SUMMARY"));
test = test + "\n End of hand";
}
test = "The new hand history is given below:\n \n" + test;
gui.NewJFrame.HHTekst.setText(test);
}
}
Jeg har, som der står i min kommentar forsøgt med "==", "a.equals(b)" "a.match(b)", men ingen af dem fungerer.
Mvh
Kasper
PS: Har ingen fornemmelse af hvad der er normalt at give af point, så håber ikke det er helt i skoven