WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Analyzera textfil! A tricky one! (https://www.wn.se/forum/showthread.php?t=32899)

lerkan69 2008-10-29 21:23

Jag tror det jag behöver ha hjälp med är riktigt svårt, bara som en varning!

Jag håller på att bygga en databas hemsida, där användarna kommer kunna se sina pokerhänder visuelt!

1. Användaren laddar up hand historiken (se formatet nedan)
2. Handen läggs in i en databas
3. användaren kan välja vilken hand han vill se (från andra medlemmar), och låta flash spela upp handen visuellt!

Jag vet att detta är ett stort projekt, och förmodligen kräven en lång förklaring. Jag förväntar mig inte att någon ska slösa massa dyrbar tid för att skriva ner allt, utan är väldigt tacksam för lite hjälp här och var.

Tex, hur får jag flash att läsa av text filen?
Jag gjorde några desperata försök med funtionen "SPLIT", men utan framgång!

Tack på förhand!


Full Tilt Poker Game #8208930883: Table Howie (heads up) - $0.25/$0.50 - No Limit Hold'em - 16:06:03 ET - 2008/09/24
Seat 1: Gooossss ($23.50)
Seat 2: d3rv0gel ($20.25)
d3rv0gel posts the small blind of $0.25
Gooossss posts the big blind of $0.50
The button is in seat #2
*** HOLE CARDS ***
Dealt to Gooossss [2h Ac]
d3rv0gel calls $0.25
Gooossss checks
*** FLOP *** [5d Jd Qs]
Gooossss checks
d3rv0gel checks
*** TURN *** [5d Jd Qs] [3h]
Gooossss checks
d3rv0gel checks
*** RIVER *** [5d Jd Qs 3h] [9c]
Gooossss bets $1
d3rv0gel folds
Uncalled bet of $1 returned to Gooossss
Gooossss mucks
Gooossss wins the pot ($0.95)
*** SUMMARY ***
Total pot $1 | Rake $0.05
Board: [5d Jd Qs 3h 9c]
Seat 1: Gooossss (big blind) collected ($0.95), mucked
Seat 2: d3rv0gel (small blind) folded on the River



Full Tilt Poker Game #8208935536: Table Howie (heads up) - $0.25/$0.50 - No Limit Hold'em - 16:06:25 ET - 2008/09/24
Seat 1: Gooossss ($23.95)
Seat 2: d3rv0gel ($19.75)
Gooossss posts the small blind of $0.25
d3rv0gel posts the big blind of $0.50
The button is in seat #1
*** HOLE CARDS ***
Dealt to Gooossss [2d 2s]
Gooossss raises to $1
d3rv0gel calls $0.50
*** FLOP *** [5s Js Td]
d3rv0gel checks
Gooossss bets $1.50
d3rv0gel folds
Uncalled bet of $1.50 returned to Gooossss
Gooossss mucks
Gooossss wins the pot ($1.90)
*** SUMMARY ***
Total pot $2 | Rake $0.10
Board: [5s Js Td]
Seat 1: Gooossss (small blind) collected ($1.90), mucked
Seat 2: d3rv0gel (big blind) folded on the Flop



Full Tilt Poker Game #8208938915: Table Howie (heads up) - $0.25/$0.50 - No Limit Hold'em - 16:06:42 ET - 2008/09/24
Seat 1: Gooossss ($24.85)
Seat 2: d3rv0gel ($18.75)
d3rv0gel posts the small blind of $0.25
Gooossss posts the big blind of $0.50
The button is in seat #2
*** HOLE CARDS ***
Dealt to Gooossss [7d Ah]
d3rv0gel calls $0.25
Gooossss checks
*** FLOP *** [5s 4d Qs]
Gooossss checks
d3rv0gel checks
*** TURN *** [5s 4d Qs] [6h]
Gooossss bets $1
d3rv0gel folds
Uncalled bet of $1 returned to Gooossss
Gooossss mucks
Gooossss wins the pot ($0.95)
*** SUMMARY ***
Total pot $1 | Rake $0.05
Board: [5s 4d Qs 6h]
Seat 1: Gooossss (big blind) collected ($0.95), mucked
Seat 2: d3rv0gel (small blind) folded on the Turn

Jimpsson 2008-10-29 21:30

Är det i PHP? I så fall kan du använda explode.

Jonas 2008-10-29 22:42

Hade parsat filen i tex. PHP och sedan läst in den via flash efteråt.


Som Rokkan säger, explode och sedan regexp's på varje rad.

Du nämner inget om hur du vill ha formatet eller viket språk det handlar om?

Du har bara gett oss en uppgift men inget om hur det skall levereras.

MMC 2008-10-29 22:44

Jag tror inte att du bör låta Flash göra analysen direkt från historikfilerna. Gör det till en tvåstegsprocess där du låter ett skript läsa in filerna och lägga in dem i databasen på ett sätt som gör det trivialt för flash att hämta in och visa händerna.

Det finns forum som är dedikerade för att analysera pokerhänder, men WN är inte ett av dem. De brukar vara lite ljusskygga, men vet man var man ska titta så...

grinditwp 2008-10-30 15:00

Jag har gjort en liknande sak förut, dock ej med Flash.
Låt PHP dela upp datat så du får det sparat i variabler först, genom att "crawla" genom det hela.

Kod:

//$string = 'hela pokerhandens logg...'
//Ta reda på spelad hand
$handName = substr($string, 0, strpos($string, 'Seat', 0));
$playersTmp = substr($string, 0, strpos($string, '*** HOLE CARDS ***', 0));
$a = 0; $i = 0;
echo $handName . '<br />';
//Ta reda på spelarnas namn
while(strpos($playersTmp, 'Seat', $a) !== FALSE){
        $a = strpos($playersTmp, 'Seat', $a)+1;
        $a = strpos($playersTmp, ':', $a)+2;
        $b = strpos($playersTmp, '(', $a)-1;
        $playerName[$i] = substr($playersTmp, $a, $b-$a);
        echo '<strong>Player ' . ($i+1) . ':</strong> ' . $playerName[$i] . '<br />';
        $i++;
}
//Ta reda på vilken spelare vi är
$a = strpos($string, 'Dealt to', 0)+1;
$a = strpos($string, 'o', $a)+2;
$b = strpos($string, '[', $a)-1;
$weArePlayer = substr($string, $a, $b-$a);
echo '<strong>You are:</strong>' . $weArePlayer . '<br />';

//OSV... du fattar, bara fortsätta på samma sätt så har du snabbt hela handens viktiga moment...

Sedan kan du ställa upp detta på valfritt sätt så att flash sedan kan tolka det. Vilket inte borde vara så svårt...

lerkan69 2008-10-30 23:17

tackar!Perfekt!

Jag inser att jag maste lara mig en hel del om php innan jag kan slutfora mitt projekt.
Ska lasa nagra bocker och kolla pa lite filmer... Ater kommer om ett tag och berattar hur det gatt!
:)

iXam 2008-10-31 14:40

Samt läsa på lite regexp som i princip är lösningen på alla problem i världen ;)

lerkan69 2008-11-07 20:50

Har suttit hela kvällen och försökt lära mig hur du gjorde den där poker hand scripted... Kommit halv vägs.. börjar fatta hur det funkar..

Jag listade ut hur man tar reda på vilken start hand man själv har:

//Vilken start hand vi har!
$a = strpos($string, 'Dealt to', 0)+1;
$a = strpos($string, '[', $a)+1;
$b = strpos($string, ']', $a);
$cards = substr($string, $a, $b-$a);
echo 'You Have:' . $cards . '
';


Jag antar att nästa steg är att ta reda på vad som händer i handen, vilket är i detta format:

*** HOLE CARDS ***
Dealt to Hero [7h 9h]
Hero raises to $1.50
PersonalJesus77 calls $1


Jag fattar inte riktigt hur jag ska lösa denna del... Vad som händer varierar från hand till hand..

Help!! :)

Jonas 2008-11-07 22:00

Ser enkla problem i det scriptet. Man skall _aldrig_ klippa i en sträng, eftersom man vet aldrig vad inputen består av.

Regexp gör jobbet enkelt åt dig.

lerkan69 2008-11-08 20:10

ok... hittade nagra tutorials med regexp... ska gora dom, och hoppas att jag kan lista ut det.. tackar


Alla tider är GMT +2. Klockan är nu 12:54.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson