Zum Forum springen
Ã?bungsaufgabe für ...
 
Benachrichtigungen
Alles löschen

[Geschlossen] Ã?bungsaufgabe für (Java-)Programmierer

19 Beiträge
8 Benutzer
0 Reactions
992 Ansichten
denodoro
Beigetreten: 02.03.2005
Oldschool Grinder

Hallo!
Ganz kurz ausgeholt: Ich spiel jetzt seit über einem halben Jahr Pokern, mit anderthalbmonatiger Pause zwischendurch (ausgerechnet kurz nach dem Wechsel zu PP an den Beginnerstischen), und habe drei "Downswings" gehabt, die nicht nur mit Pech zu begründen sind. Einmal von 330$ innerhalb kurzer Zeit auf etwa 100$. Beim zweiten mal von 300$ auf 66$. Nach ner Woche Pause habe ich 3 Wochen!!! konstant bergauf gespielt, war auf 490$ und bin innerhalb von 4 Tagen auf 100$ gewesen und kurz später auf 23$. Nach 3 Wochen Pause wieder angefangen, 7Tage durchgängig bergauf auf 160$, jetzt 5 Tage später bei 60$. So, ich will mein Spiel jetzt mal etwas besser analysieren und finde es sehr anstrengend mir immer die richtigen Hände rauszusuchen, ich will besonders schauen, was ich in den Downswings gemacht habe.
Da ich Preflop nach den charts spiele, wird/werden meine Leaks postflop zu suchen sein Ich hätte gern ein Programm, das mir aus einer txt.-Datei, in dem die Hände ja auf meiner Festplatte gespeichert werden, die nicht gespielten Hände löscht. Das heiÃ?t, ich will nur noch die Hände dort sehen, an denen ich den Flop zumindest gesehen habe. Mein Kumpel hat mir solch ein Programm geschrieben (innerhalb etwa einer Stunde), dieses hat allerdings einen Fehler, da ab und zu (nicht immer...) die ganze Datei gelöscht wird. Vielleicht war ja auch mein Algorithmus zu schlecht. Der Kumpel hat im Moment keine Zeit, diesen Fehler zu beheben.
Wer hat Lust, dies sozusagen als Ã?bung oder auch aus dem Ã?rmel geschüttelt mal eben zu übernehmen und das Programm dann hier zu posten als Quelltext, möglichst mit Kommentaren (ich selbst bin absoluter autodidaktischer Javaanfänger)? So etwas wie class DeleteNonplayed.

Dann habe ich noch eine Frage? Kann ich die Hände auch irgendwie für word konvertieren, sodass sie so aussehen wie im Forum? Oder kann dafür auch noch jemand ein Programm schreiben?

Das wäre sooooooooooooo cool, wenn das jemand machen würde! Und vielen Dank im Voraus! :-)
denodoro


18 Antworten
normanfreak
Beigetreten: 03.04.2005
Elite Grinder

wäre es net einfacher du postest das programm von deinem kumpel und man sucht nur den fehler...ansonsten is des doch nur doppelte tipparbeit.

nachtrag: es wäre wohl auch geschickter die hände nicht zu löschen sondern nur die interessanten in eine zweite datei zu schreiben...so bleiben alle hände erhalten...für einen späteren einsatz von zb. PT (was die geforderte aufgabe eh implizit ermöglicht)


stone4ge
Beigetreten: 22.01.2006
PokerStrategist

Dürfte nicht allzu schwer sein, Textfiles auszulesen und auf ein Muster zu überprüfen.

while != dealing flop && hero == fold --> hand löschen

denodoro Themenstarter
denodoro
Beigetreten: 02.03.2005
Oldschool Grinder

Das Programm sah bis jetzt so aus: (Das is allerdings auch umständlich programmiert und eventuell auch besser wenn man es gleich ganz neu schreibt) (Dass denodoroo im Programm mit zwei o geschrieben ist, ist kein Fehler.)

import java.io.*;

public class Delete {

/**
* @param args
*/
public static void main(String[] args) {
String test = "";
String hand = "";
String all = "";
String input = "";
int flag = 0;
int flag2 = 0;
boolean write = false;
System.out.print("So denodoroo! Name der Quelldatei:");
BufferedReader brIn = new BufferedReader(new InputStreamReader(System.in));
try {
input = brIn.readLine();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
BufferedReader br = new BufferedReader( new FileReader(input));
while(true) {
if(flag2 == 1 ) {
break;
}
while(true) {
test = br.readLine();
if( test == null ) {
flag2 = 1;
break;
}
if(test.equals("")) {
break;
}
if( test.equals("** Dealing down cards **")) {
flag = 1;
}
if( flag == 1 ) {
if(test.startsWith("denodoroo raises") || test.startsWith("denodoroo calls") || test.startsWith("denodoroo checks")) {
write = true;
}
if(test.startsWith("** Dealing Flop **")) {
flag = 0;
}
}
hand += test + "\n";
}
if(write) {
all += hand + "\n\n";
hand = "";
flag = 0;
write = false;
}
else {
hand = "";
flag = 0;
write = false;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
BufferedWriter brOut = new BufferedWriter(new FileWriter(input));
brOut.write(all);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

Jo, das mit dem gleich in eine andere Datei schreiben wäre natürlich optimal, das wäre ganz optimal wenn diese Datei sogar automatisch erstellt werden würde.
Bis dann, denodoro


stone4ge
Beigetreten: 22.01.2006
PokerStrategist

Hm, wenn ich nicht gerade Ferien hätte würde ich das sofort machen.

Wieso sucht er nicht einfach nach "Denodoroo folds" anstatt die drei anderen Varianten abzufragen?


denodoro Themenstarter
denodoro
Beigetreten: 02.03.2005
Oldschool Grinder

weil ich in anderen Händen ja auch folde. Manchmal am Turn manchmal am River.


normanfreak
Beigetreten: 03.04.2005
Elite Grinder

hi!

so spontan seh ich jetzt keinen fehler (werd mich dem ding heut abend oder am WE mal annehmen). HH bei denen es fehlschlägt hast du wohl net mehr ?


denodoro Themenstarter
denodoro
Beigetreten: 02.03.2005
Oldschool Grinder

die sind ja weg ;-)
aber ich kann es nochmal mit anderen versuchen. Vielleicht hat da der Algorithmus nicht funktioniert.


romanempire
Beigetreten: 03.08.2006
PokerStrategist

Hallo,

hab es mal umgebaut.

import java.io.*;

public class Delete {

public static void main(String[] args) {

final String playername = "denodoroo";
final String path = "C:\\Programme\\PartyGaming\\PartyPoker\\HandHistory\\";

String line = ""; // inputline
StringBuffer hand = new StringBuffer(); // text of hand
StringBuffer playedHands = new StringBuffer(); // text of all played
// hands
String filename = "";
String date = ""; // date the hands were played
String tablenumber = "";

boolean isPreflop = false;
boolean folded = false;

BufferedReader lineReader = new BufferedReader(new
InputStreamReader(System.in));
try {
System.out.print("Nummer des Tisches: ");
tablenumber = lineReader.readLine();

System.out.print("Datum: ");
date = lineReader.readLine();

} catch (IOException e) {
System.out.println("Fehler bei der Eingabe!");
System.out.println(e.getMessage());
return;
}

try {
filename = path + playername + "\\" + date + "\\" + "Beginners #"
+ tablenumber;
BufferedReader fileReader = new BufferedReader(new FileReader(
filename + ".txt"));

while ((line = fileReader.readLine()) != null) {

if (line.startsWith("Game #")) {
// start of new hand
if (!folded)
playedHands.append(hand); // save last hand
hand.setLength(0); // clear hand
folded = false;
isPreflop = true;
}

hand.append(line + "\n"); // save current line

// unnötig
//if (line.equals("** Dealing down cards **")) {
// isPreflop = true;
//}

if (isPreflop) {
if (line.startsWith(playername + " folds")) {
folded = true;
}
if (line.startsWith("** Dealing Flop **")) {
isPreflop = false;
}
}
}

fileReader.close();

} catch (IOException e) {
System.out.println("Fehler beim Einlesen der Daten!");
System.out.println(e.getMessage());
return;
}

try {
BufferedWriter fileWriter = new BufferedWriter(new FileWriter(
filename + ".del.txt"));
fileWriter.write(playedHands.toString());
fileWriter.close();
} catch (IOException e) {
System.out.println("Fehler beim Speichern der Daten!");
System.out.println(e.getMessage());
return;
}

}
}

Musst nur noch das Datum ( z.B. 20060813) und die Tischnummer eingeben, den Pfad an dein System anpassen und ggfls. das "Beginners" ändern.

Hoffe, es funzt, habe es nur kurz getestet.

Gruss,
Roman


Goaranga
Beigetreten: 03.02.2006
PokerStrategist

ey, das ist aber schnittig programmiert!! - cool


romanempire
Beigetreten: 03.08.2006
PokerStrategist

Hi,

hab den Test auf "Dealing Down Cards" auskommentiert, der war unnötig.

Gru�?,
Roman


hazz
Beigetreten: 13.02.2006
BlackMember

uhm, warum nciht einfach in PT den filter anmachen, dass nur haende angezeigt werden, wo du den flop gesehen hast?


denodoro Themenstarter
denodoro
Beigetreten: 02.03.2005
Oldschool Grinder

voll cool! danke! probier es gleich mal aus.


denodoro Themenstarter
denodoro
Beigetreten: 02.03.2005
Oldschool Grinder

ach da gibt es einen filter?
aber ich brauch die anderen ja für die ganzen stats. hm, muss ich mich wohl nochmal eingehender mit pt beschäftigen.
:-)


;) Einfach ein gutes Buch lesen. Mit deiner Erfahrung würde ich "middle limit holdem von Bob Ciaffone und Jim Brier" lesen.

Viele sagen man verfällt zu stark in weaknes, aber die haben wohl das Vorwort nicht gelesen.

Hinten hast du auch noch einen Artikel über low limit.

Wenn du das Buch liest, wirst du danach dein Programm und die folgende preflop-chart-Analyse in die Mülltonne treten.

Du setzt deinen Hebel schon in der Kacke an, also versprich dir keinen Erfolg nach deiner vielen Arbeit.

Nach chart spielen hei�?t schlechten Poker spielen, vor allem der SHC v3.0.

Der open raise chart ist gut, aber auch nicht immer, kommt halt wieder mal auf den Gegner drauf an, den du ja im nachhinein überhaupt nicht mehr berurteilen kannst, anhand deiner Analyse.

Weg vom chart, Poker besser verstehen lernen und du spielst stabiler und hast nicht mehr solche Hämmer von Schwankungen in deiner BR.

Wenn du stark mathematisch analysieren willst, dann hol dir Werte von winning players und vergleich diese mit deinen, dann wirst du feststellen, da�? du diese Werte nie mit chart-play erreichen wirst. Dann wird dir deine Intelligenz, wo von du anscheinend einige besitzt, sagen "Warum sollte ich spielen nach chart mit viel Aufwand versuchen zu analysieren, wenn das Problem doch wo anderst liegt?"

Naja egal, alle Wege füren nach Rom, du machst das schon.

War nur ein Tipp und ein Lösungsvorschlag wie Alexander und der Knoten ;),
hab das Gefühl du verwurschtelst dich da in was, und das wäre Schade, denn du hast ja echt viel Energie für das Spiel. Setze sie doch nur effektiver ein.

Wünsche dir die besten flops in deinem Leben

reinhaun und sers


ach so, bin ja hier nur gelandet, weil ich mal so lesen wollte was der azzerul0r hazz so schreibt. ;)


uTz84
Beigetreten: 20.04.2006
Elite Grinder

Argh alles in die Main Methode gepackt. Da brauchste dann auch kein Java nehmen, wenn du die Objektorientierung eh nicht brauchst. ^^


romanempire
Beigetreten: 03.08.2006
PokerStrategist

fand ich auch grausam, aber für nen fixen hack. das original sah sehr nach C aus, die Flags als int ?(


uTz84
Beigetreten: 20.04.2006
Elite Grinder

Original von romanempire
fand ich auch grausam, aber für nen fixen hack. das original sah sehr nach C aus, die Flags als int ?(

Jo klar. Aber sowas machen meist die ex C Progger. Kenn das von nem Studienkollegen. xD


Teilen: