Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Textteile aus Textdatei auslesen und in Zahlen umwandeln ?

 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe!
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
asox



Anmeldedatum: 04.07.2008
Beiträge: 2

BeitragVerfasst am: Fr Jul 04, 2008 1:10 pm    Titel: Textteile aus Textdatei auslesen und in Zahlen umwandeln ? Antworten mit Zitat

Hallo !
Vorweg, ich bin Anfänger (vor 2 Jahren mal ein kleines Script geschrieben), und möchte aus einer Textdatei Textteile auslesen, teilweise die Zahlen ins Zahlenformat konvertieren, und dann damit rechnen.
Denke mal, das was ich damit bezwecken will werde ich nie schaffen, aber bitte euch um Hilfe und Anfangsbeispiele, daß ich dann vielleicht selbst irgenswie weiterkomme:
Es handelt sich um Poker:
Ich habe eine Pokerhistorie im Textvormat.
Dateiname z.b. 123456.live
Diese sieht z.b. so aus:

    Game #7192085770 starts.

    #Game No : 7192085770
    ***** Hand History for Game 7192085770 *****
    $5/$10 USD Texas Hold'em - Friday, July 04, 06:43:14 ET 2008
    Table Jackpot #1410075 (6 max) (Real Money)
    Seat 3 is the button
    Total number of players : 6
    Seat 1: holden433 ( $330.25 USD )
    Seat 2: smellsfishyhere ( $143.40 USD )
    Seat 3: Laci112 ( $861.75 USD )
    Seat 4: ilovetow1n ( $383.75 USD )
    Seat 5: mrdemut ( $287.50 USD )
    Seat 6: kaltfront ( $144.50 USD )
    ilovetow1n posts small blind [$2 USD].
    mrdemut posts big blind [$5 USD].
    ** Dealing down cards **
    kaltfront raises [$10 USD]
    holden433 calls [$10 USD]
    smellsfishyhere calls [$10 USD]
    Laci112 calls [$10 USD]
    ilovetow1n folds
    mrdemut folds
    ** Dealing Flop ** [ Qs, 3d, 2h ]
    kaltfront bets [$5 USD]
    holden433 calls [$5 USD]
    smellsfishyhere folds
    Laci112 calls [$5 USD]
    ** Dealing Turn ** [ 9h ]
    kaltfront bets [$10 USD]
    holden433 calls [$10 USD]
    Laci112 calls [$10 USD]
    ** Dealing River ** [ 4c ]
    kaltfront bets [$10 USD]
    holden433 folds
    Laci112 folds
    kaltfront does not show cards.
    The time at which hand ended:Jul 04 2008 06:44 ET
    kaltfront wins $98.50 USD

Beispiel:
Ich möchte die Spielernamen, die unter Seat 1:;Seat 2 usw. in je eine Variable einlesen
Dann möchte ich nun den Betrag, der z.b. bei Seat 1: Holden433 steht ($330.25) in eine Variable einlesen, und so konvertieren, daß ich dann damit rechnen kann.
Weiters möchte ich dann jede Zeile, in der Holden433 bets, calls oder raised (also überrall, wo er Geld in den Pot bringt) ebenfalls die Beträge einlesen, und diese dann von seinem Startbetrag abziehen.
Endergebnis sollte sein:

Seat 1: Spielername:Anfangskapital:Endkapital
Seat 2: Spielername:Anfangskapital:Endkapital

In späterer Folge will ich dann auch noch die Potgröße errechnen, oder wie viele Spieler mitgegangen sind (kein fold), aber dies wird dann ja ähnlich funktionieren.
Ein Problem ist vielleicht noch, daß diese Datei live geschrieben wird, so daß immer wieder eine Zeile dazukommt, bis eben xxx wins xxxxx kommt
Dann beginnt eine neue Hand, diese Datei wird gelöscht, und es entsteht wieder eine Datei mit anderer Bezeichnung z.b. 123457.live, aus der ich wieder diese Daten auslesen will
Wahrscheinlich wird das alles zu kompliziert für einen Anfänger, aber vielleicht kann mir ja doch jemand weiterhelfen

Ziel ist es mit diesen Werten dann weiterzurechnen, wie z.b.
Pottodds errechnen=Höhe des Pottes/Höhe des zu callenden Betrages oder Auszurechen, wie hoch ein gewisser Anteil vom Pot ist.
Ich will einfach bestimmte Werte aus der Datei errechnen und in irgendwelche Felder rausschreiben (z.b. Excel) um dann mit diesen Werten selbst weiterrechnen zu können, oder diese wieder aus den Feldern in ein anderes Script einlesen.

Ich weiß, es gibt bereits viele Pokerscripts, aber keines berechnet eigentlich genau das, was ich will.
Wäre auch bereit einen angemessen Betrag dafür zu zahlen, wenn sich jemand die Zeit nehmen will, so ein Script zu schreiben, bei dem ich dann die gewünschten Werte selbst weiter verarbeiten kann. (Denke mal für mich als Anfänger ist dieses Script wohl zu schwierig)
Bitte sich dann unter asox@gmx.net (hoffe das ist hier erlaubt) zu melden, um weiteres zu besprechen

Danke für Eure Hilfe
asox
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
denick



Anmeldedatum: 15.09.2006
Beiträge: 1201
Wohnort: Berlin

BeitragVerfasst am: Sa Jul 05, 2008 9:24 am    Titel: Antworten mit Zitat

Moin,

mal für den Anfang:

Wenn Du das
Code:
Game #7192085770 starts.

#Game No : 7192085770
***** Hand History for Game 7192085770 *****
$5/$10 USD Texas Hold'em - Friday, July 04, 06:43:14 ET 2008
Table Jackpot #1410075 (6 max) (Real Money)
Seat 3 is the button
Total number of players : 6
Seat 1: holden433 ( $330.25 USD )
Seat 2: smellsfishyhere ( $143.40 USD )
Seat 3: Laci112 ( $861.75 USD )
Seat 4: ilovetow1n ( $383.75 USD )
Seat 5: mrdemut ( $287.50 USD )
Seat 6: kaltfront ( $144.50 USD )
ilovetow1n posts small blind [$2 USD].
mrdemut posts big blind [$5 USD].
** Dealing down cards **
kaltfront raises [$10 USD]
holden433 calls [$10 USD]
smellsfishyhere calls [$10 USD]
Laci112 calls [$10 USD]
ilovetow1n folds
mrdemut folds
** Dealing Flop ** [ Qs, 3d, 2h ]
kaltfront bets [$5 USD]
holden433 calls [$5 USD]
smellsfishyhere folds
Laci112 calls [$5 USD]
** Dealing Turn ** [ 9h ]
kaltfront bets [$10 USD]
holden433 calls [$10 USD]
Laci112 calls [$10 USD]
** Dealing River ** [ 4c ]
kaltfront bets [$10 USD]
holden433 folds
Laci112 folds
kaltfront does not show cards.
The time at which hand ended:Jul 04 2008 06:44 ET
kaltfront wins $98.50 USD
als Datei Test.live speicherst und im selben Verzeichnis dieses Skript
Code:
#NoEnv
SetFormat, Float, 1.2
Datei := A_ScriptDir . "\Test.live"
ZZ := 1
Stage := 0
Stage1 := "is the Button"
Stage2 := "Total number of players : "
Stage3 := "Seat "
Stage4 := "The time at which hand ended:"

Spieler := ""
Pot := 0.00

Gui, Margin, 10, 10
Options := "Section xm ym"
Loop, 6 {
   Gui, Font, Bold
   Gui, Add, Text, % Options . " w120 Center vText" . A_Index, % "Spieler " . A_Index
   Gui, Font,
   Gui, Add, Edit, % "xp y+3 wp Readonly Center vName" . A_index
   Gui, Add, Edit, % "xp y+3 wp Readonly Center vBetrag" . A_index
   Gui, Add, Edit, % "xp y+3 wp Readonly Center cGreen vStatus" . A_index
   Options := A_Index = 3 ? "Section xm y+18" : "ys x+10"
}
Gui, Add, Text, x140 y+18 wp Center, Pot
Gui, Add, Edit, xp y+3 wp vPot Center, 0.00
Gui, Show, , Texas Hold'em
SetTimer, ReadFile, On
Return

GuiClose:
GuiEscape:
ExitApp

ReadFile:
FileReadLine, Zeile, %Datei%, %ZZ%
If ErrorLevel
   Return
ZZ++
If (Stage = 0) {
   If InStr(Zeile, Stage1) {
      RegExMatch(Zeile, "(\d+)", RX)
      Aktiv := RX
      Gui, Font, cRed Bold
      GuiControl, Font, Text%Aktiv%
      Gui, Font
      Stage := 1
   }

}
If (Stage = 1) {
   If (SubStr(Zeile, 1, Strlen(Stage2)) = Stage2) {
      SpielerG := SubStr(Zeile, Strlen(Stage2) + 1)
      Stage := 2
   }
   Return
}
If (Stage = 2) {
   If (SubStr(Zeile, 1, Strlen(Stage3)) = Stage3) {
      RegExMatch(Zeile, Stage3 . "(\d+):\s+([\w]+)\s+[\D]+([\d.]+)", RX)
      I := RX1
      Name%I% := RX2
      GuiControl, , Name%I%, % Name%I%
      Betrag%I% := RX3
      GuiControl, , Betrag%I%, % Betrag%I%
      Spieler .= RX2 . "|"
      If (I = SpielerG) {
         Stage := 3
         Spieler := SubStr(Spieler, 1, -1)
         Sleep, 2000
         SetTimer, ReadFile, 2000
      }
   }
   Return
}
If (Stage = 3) {
   If (SubStr(Zeile, 1, 2) = "**") {
      Return
   }
   If (SubStr(Zeile, 1, Strlen(Stage4)) = Stage4) {
      Stage := 4
      Return
   }
   StringSplit, F, Zeile, %A_Space%
   I := 0
   Loop, Parse, Spieler, |
   {
      If (F1 = A_LoopField) {
         I := A_Index
         Break
      }
   }
   If (I = 0) {
      Return
   }
   Gui, Font
   GuiControl, Font, Text%Aktiv%
   Aktiv := I
   Gui, Font, cRed Bold
   GuiControl, Font, Text%Aktiv%
   Gui, Font
   If InStr(Zeile, "folds") {
      Gui, Font, cRed Bold
      GuiControl, Font, Status%I%
      GuiControl, , Status%I%, Out
      Return
   }
   If RegExMatch(Zeile, "\$(\d+)\s+", RX) {
      Betrag%I% -= RX1
      Pot += RX1
      GuiControl, , Betrag%I%, % Betrag%I%
      GuiControl, , Status%I%, %F2%
      GuiControl, , Pot, %Pot%
   }
   Return
}
If (Stage = 4) {
   StringSplit, F, Zeile, %A_Space%
   I := 0
   Loop, Parse, Spieler, |
   {
      If (F1 = A_LoopField) {
         I := A_Index
         Break
      }
   }
   If (I = 0) {
      Return
   }
   If RegExMatch(Zeile, "\$([\d.]+)\s+", RX) {
      Betrag%I% += RX1
      Gui, Font, cBlue Bold
      GuiControl, Font, Text%I%
      GuiControl, , Betrag%I%, % Betrag%I%
      Gui, Font, cBlue Normal
      GuiControl, Font, Status%I%
      GuiControl, , Status%I%, Won $%RX1%
   }
}
Return
ausführst, kannst Du ihnen zusehen! Wink
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
asox



Anmeldedatum: 04.07.2008
Beiträge: 2

BeitragVerfasst am: Sa Jul 05, 2008 12:42 pm    Titel: Antworten mit Zitat

Hallo !
Ja, so ähnlich soll es funktionieren, das kommt im Prinzip so hin, nur das mehr Werte angezeigt werden müssen z.b. TischNr. ,Wie viele Spieler haben etwas in den Pot einbezahlt (ausser small blind und bigblind),Höhe Bigblind (10) und samllblind (5) Nochanzahl der Spieler,Größe der Bet, Pottodds (aktueller Pott/größe der Bet) usw., aber ich schätze das wäre kein Problem.
Weiters gibt es bis zu 4 .live-Dateien (Also bis zu 4 Tische) gleichzeitig, deren Namen vorher nicht bekannt sind.(werden angelegt, sobald ein Tisch geöffnet wird, und haben immer die Nummer der aktuell gespielten Hand als Dateiname).Ist die Hand beendet, dann wird die Datei gelöscht, und es kommt die nächste .live.
Es müßte in dem bestimmten Verzeichnis danach gesucht werden, und danach die exestierenden .live (max 4) auf diese Art eingelesen werden.
Diese werden live geschrieben, das heißt nach jeder Action am Tisch kommt in der betreffenden Datei eine Zeile dazu, und die Werte müßten aktualisiert werden. Auch bräuchte ich diverse Eingabefelder, um Werte einzugeben, die zu diversen Berechnungen notwendig sind.
z.b. Berechnung:Stakepottrelation
2 Eingabefelder (Anzahl geschätzter Caller,Ergebniswert, auf den ich hin will)
Beispiel:Das Kapital des Spielers, das am niedristen ist / Ergebniswert/(Anzahl geschätzter caller+1)
Berechnungen auf diese Art sollen im Anzeigefenster möglich sein.
Die Formeln liefere natürlich ich.
Hatte eigentlich vor, die Werte livetime in Zellen einer Exceldatei zu schreiben, um dort die diversen Berechnungen durchzuführen (das könnte ich dann selbst machen Smile ), aber wenn ich jemanden finden würde, der mir das Script mit den Berechnungen und der Ausgabe genau so macht, wie ich will, wäre das nicht nötig.

Durch die Weise, wie du die Ausgabe gestaltet hast, habe ich den Eindruck, daß du dich beim Pokern auskennst.
Wäre von Vorteil, da ich auch einen Wert hätte, der direkt in das Tischfenster des Pokerclients geschrieben werden soll (Setzhöhe), und dazu müßtest du dir eben die Pokersoftware installieren (keine Anmeldung erforderlich)

Wenn du Interesse (und Zeit) hast, das Script zu machen, dann melde dich bitte bei mir um auch finanziell einig zu werden.

Vorerst großen Danke für deine Bemühungen

Asox
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
denick



Anmeldedatum: 15.09.2006
Beiträge: 1201
Wohnort: Berlin

BeitragVerfasst am: Sa Jul 05, 2008 8:52 pm    Titel: Antworten mit Zitat

Moin asox,

tut mir leid, ich habe kein Interesse an Poker. Meine geheime Leidenschaft ist AHK. Ich denke, man kann damit fast Alles machen. Bis zu einem gewissen Grad will ich mir das beweisen. Mehr ist nicht drin, auch nicht für Chips! Wink
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe! Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de