Pokerdatenbank erstellen - Wie Spielverlauf abspeichern?

Labyrinth

Grünschnabel
Hallo Leute,
ich bin neu hier und hab mich wegen den sehr guten Antworten angemeldet. Hab bis jetzt fast alles was ich in Java brauchte hier gefunden.

Hab leider jetzt ein Problem auf dem ich nicht recht eine Antwort weiß. Da ich nur Grundwissen in Java habe und mich mit Datenbanken noch nie beschäftigt habe.

Trotzdem möchte ich eine Datenbank für ein Pokerspiel Texes Holdem mit 2 Spielern erstellen und überlege mir wie ich dabei am besten vorgehen sollte, um später möglichst wenig Kopfschmerzen damit zu haben. Die Daten sollen dann statistisch analysiert werden d.h. Geschwindigkeit könnte zum Teil auch eine Rolle spielen. Ich möchte dabei jeweils die einzelnen Erhöhungen und die einzelnen Karten abspeichern.

Ich hoffe ihr wisst alle ungefähr wie ein Poker Spiel aussieht.
Ansonsten hier ein Link http://de.wikipedia.org/wiki/Texas_Hold’em.

Also meine Idee war folgender maßen:
Das Spiel lässt sich ja in eine preFlop, Flop, Turn und River Phase einteilen.
Ich Speichere meine Karten und die Karten am Flop,Turn usw. in ein Arraylist<int[2]>.
Den "Dealer" bzw der wer als erster dran ist , kann ich einfach in ein bool variable abspeichern.
Nun kommt das eigentlich Problem. Wie speichere ich am besten die Erhöhungen ab? Ich dachte wieder an Arraylist, jeweils für die einzelnen Situation also , flop , preflop usw. . mit einer geeigneten Codierung

z.B Wenn ich das erste wort habe(Dealer == false):
(10,20,10)--> ich hab um 10 erhöht , Gegner um 20 und ich bin mitgegangen.
(Dealer == true): Gegner als erster dran.
(10,20,10)--> Gegner erhöht um 10 ich erhöhe um 20 Gegner geht mit .
(0,0)--> Gegner setzt nicht und ich setze nichts.

Um es Später wieder zu analysieren müsste ich gucken wer als erster dran ist.
Wenn ich es so mache wie oben beschrieben( vielleicht habt ihr einen eleganteren Weg) wie sollte ich am besten das Ganze dann abspeichern?
Der Zugriff auf die Daten aus dem aktuellen Spiel sollte dabei möglichst schnell sein.
Ist überhaupt eine Datenbank nötig wie mySQL , Oracale... ? Wenn ja welche nehm ich am besten bzw. wie gehts am einfachsten und effizientesten?
Möchte mich ungern in eine "Datenbanksprache" einarbeiten und dann feststellen das es so nicht geeignet war.

Tut mir Leid das mein erster Beitrag so lang ist.Danke fürs lesen:) .
Ich hoffe mein Problem ist halbwegs verständlich. Bin für jeden Tipp bzw Hinweis offen!

Gruß Labyrinth
 
Warum nicht einfach in ein Textfile, jede Runde ein neuer String. Kenne mich zwar mit Poker nicht weiter aus als man in CSI lernt, aber z. B. so

0;10;0;HearthASS //Spieler, Um 10 erhöht (davor war der Einsatz 0), will Karte ziehen, HerzAs.
1;20;0;PicKing //KI, Um 10 erhöht (davor war der Einsatz 10), will Karte ziehen, Pic König gezogen
0;10;0;KaroASS //Spieler, Mitgegangen (davor war der Einsatz 20), will ziehen, KaroAs
1;10;0;Hearth2 //KI, Mitgegangen (davor war der Einsatz 20), Herz 2 gezogen
0;80;1;null //Spieler, Erhöht auf 100 (davor war der Einsatz 20), will sehen.

Sowas in der Art. Kannst auch easy in ein Textfile speichern, jede Zeile repräsentiert dann einen Zug, Spieler, was gesetzt, was er tut, verschiedene Parameter je nach dem was er für eine Zugmöglichkeit gewählt hat. (Hier halt 0 für nächste Karte, 1 fürs Zeigen usw.)
 
Hallo Kai008!
An das abspeichern in ein Textfile hab ich auch schon gedacht. Was wahrscheinlich viel einfacher wäre - wobei ich damit auch keine Erfahrung habe. Leider verwechselst du einbisschen das Spiel -ust aber egal mir geht es ja eh um den Konzept.

Also ein Spiel würde ich dann etwa so abspeichern: Spiel dauert n Runden.
1.[MeineKarten];[GegnersKarten];[SpielkartenaufdenTisch];Dealer;[0,20,...];(Bietrdunden)
2.
.
.
n.
Wobei jede neue Zeile eine Neue Situation darstellt mit neuem Karten usw.
Dann Speichere ich das in eine Textdatei.

OK.Zugriff auf die Textdatei während des Spiels sollte ja auch kein Problem sein.
Was passiert wenn ich zum Beispiel über 100000 Spiele bzw Textdateien oder mehr habe- eine Analyse der Gesamtdaten sollte möglich sein - aber auch während des Spiels? Man müsste ja dann quasi die ganzen textdatei Laden bzw. durchsuchen..

Wie siehts aus wenn ich dann in jede Textdatei sagen wir mal gewisse Kennzahlen hinzufügen will- weiß auch noch nicht wie und was, aber zum Beispiel die Aggressivität des Spielers und so weiter - wär es schwierig im nachhinein so was hinzuzufügen?

Gruß Labyrinth
 
Stimmt, meins ist mehr wie Black Jack, aber wie gesagt, noch nie gespielt.
In ne Textdatei zu schreiben ist grundsätzlich sehr easy:

BufferedWriter out = new BufferedWriter(
new FileWriter(
new File("Datei")));
out.write(string);
out.flush;
Datei wird afaik wenn sie nicht existiert angelegt.

Grundsätzlich sind solche Änderungen nicht schwer. Da du ja den Pointer hast, kannst du bevor du die eigendlichen "Züge" ausließt einfach davor noch was auslesen. Somit ist es kein Problem, z. B. eine Zeile mit den Spieleigenschaften einzufügen. Das durchsuchen hast du mit ner DB ja auch, nur dass die das dann erledigen muss. Die weiß ja auch nicht auswendig wo sich alles befindet. ^^
Aber bei 100000 Spielen bezweifel ich irgendwie, dass dir nicht der RAM ausgeht. Aber ist ja auch nicht so extrem wichtig.

Falls du ein Textfile im Nachhinein was hinzufügen willst gibt es noch den RandomAccessWriter, mit dem habe ich aber keine Erfahrung.
 
OK alles Klar. Danke für die Hilfe! Werd versuchen es so zu machen.

Wenn ich mich später für ne Datenbank entscheide , wird es denke ich mal acuh kein Problem sein die Daten dorthin zu übertragen.

Gruß Labyrinth
 

Neue Beiträge

Zurück