Póker Menedzser – Az adatbázis

Sziasztok!

Ebben a részben a programhoz szükséges adatbázisról fogok beszélni.

Microsoft SQL Server Management Studio:

A Microsoft által biztosított segédszoftver az adatbázisaink kezeléséhez és menedzseléséhez. Alapjában véve localhoston történnek az akciók, de tud kapcsolódni természetesen Azure-ban lévő adatbázishoz is, rendkívül megkönnyítve az ott elhelyezett adatbázisokkal történő munkánkat.

Az adatbázis:

A projektemhez egy 11 táblából álló adatbázist használok, melynek szerkezetét a mellékelt képen láthatjátok.

adatbazis_blogba

Amikor a játékos elindítja a programot és leül játszani, egy új Sessiont indít, amely eltárolja, hogy Kicsoda, milyen oldalon, milyen típusú játékot játszott és hogy mettől meddig tartott az adott Session.

Sessionök kezelése a végső programban lesz megoldva, addig egyetlen Session van, debug célokra.

Players, Gametypes és Pokersites táblák tartalma automatikusan töltődik fel a szöveges handhistory-ból, amennyiben az adatbázis még nem tartalmazza a bejegyzéseket.

A rendszer “lelke” a Handinfo tábla, ez tárolja a minden kör elején a szöveges fájlokból kinyert információkat. A gamenumber a játék egyedi azonosítója, amit kap az oldaltól, a session_id megmondja, hogy éppen melyik Sessionben játszottuk az adott leosztást, a site_id értelemszerűen azonosítja az oldalt amin játszottunk, a többi sor pedig az éppen játékban lévő játékosokról szolgáltat információt:

  • seatx_player: Az “x” pozíción helyet foglaló játékos ID-je.
  • seatx_chipcount: Az “x” pozíción helyet foglaló játékos aktuális, kör eleji zsetonmennyisége.
  • seatx_sitout: Az “x” pozíción helyet foglaló játékosról mondja meg, hogy jelenleg aktív játékos-e, avagy távol van az asztaltól.

A következő érdekes pont a Dealt_hands gyűjtőtábla, amelyben eltároljuk, hogy egy adott játékos egy adott körben milyen lapokat kapott.

Ha a fenti információkat összegyűjtöttük, kezdődhet a játék!

preflop, flop, turn, river során történt akciókat egy közös, Actions gyűjtőtáblában kezelem, amelyhez tartozik minden fázishoz egy-egy tábla.

Az egyes fázisokat reprezentáló táblákban eltárolom, hogy melyik játékban, melyik játékos, milyen azonosítóval, mit cselekedett, valamint amennyiben szükséges rögzítem az akció során felhasznált zsetonmennyiséget. 

Tehát ha egy preflop emelés történik 1000-ig, akkor a Preflop actions tábla tartalma: (31625908466, 1, 1, raise, 1000).

Pro és kontra:

Az SQL server 2012 hatalmas előnye (ami egyébként joggal várható el tőle), hogy teljes mértékben, pár kattintás hatására együttműködik a Visual Studio 2012-vel, így szinte azonnal generálhatunk Entity Framework modellt a projektünkhöz, de ha még nincs meg az adatbázis, akkor a Visual Studioban létrehozott modellből is generálhatunk adatbázist az SQL serverbe.

Kontraként megemlíthető, hogy rengeteg helyet felemészt a merevlemezen, és egy részét mindenképpen a C:\ partícióra kell telepíteni, más választásunk nincs. Egyéni probléma, de a C:\-m jelenleg nem bővelkedik sok szabad helyben, ezért voltak gondjaim a telepítés során, amelyek fel sem merültek volna, ha másik partícióra is telepíthető 100%-ban.

További picit zavaró funkciója az SQL Server Management Studionak, hogy alapértelmezés szerint egy olyan tábla, amely kapcsolatban áll egy másik táblával, már nem módosítható, csak a tábla droppolásával és újrakreálásával. Szerencsére ez az opció kikapcsolható, így egy warning üzenet “leokézása” után megcsinálja ezen lépéseket helyettünk a program, ami felettébb kényelmes a manuális megoldáshoz képest.

A következő rész tartalmából:

A következő részben az Entity Framework és a LINQ használatáról fogok beszélni, pár példával és kódrészlettel kiegészítve a projektemből.

Póker Menedzser – a kezdetek

Sziasztok!

Idén februárban kezdtem el dolgozni a szakdolgozatomon, ami egy egyéves projekt gyümölcse lesz remélhetőleg. Mivel megfordulok néhanapján pár online póker teremben (természetesen csak játékpénzben játszom 🙂 ) és szeretem egy-egy átkártyázott éjszaka után átnézni a játékom, elemezni, megtudni, hogy hogy zártam, mik a főbb mutatóim, innen jött az ötlet, hogy csinálok egy Windows 8-as alkalmazást ami minden ilyesmire képes lesz.

Alkalmazott technológiák:

  • Microsoft SQL Server 2012 az adatbázishoz
  • Entity Framework az adatbázis és a kód kapcsolatához
  • WCF szolgáltatás az adatok feldolgozásához
  • Windows 8 alkalmazás az adatok megjelenítéséhez

Célok:

Félév végéig szeretném elérni, hogy az elmentett leosztásokat feldolgozzam teljes egészében és eltároljam az adatbázisban.

Jelenlegi állapot:

Jelenleg már képes a program feldolgozni a leosztásokban szereplő alapvető adatokat, és a játékosok nevét, zsetonmennyiségét, valamint a pozícióját. A kezdeti verzióban ADO.NET-tel dolgoztam, de átálltam a sokkal egyszerűbb és jobb átláthatóságot biztosító Entity Framework + LINQ kombinációra, így dinamikusabban tudok haladni a feldolgozással.

A következő rész tartalmából:

A következő részben az MSSQL kezeléséről, és a programhoz szükséges adatbázisom felépítéséről fogok írni.