Script Poker Multiplayer to przeglądarkowa gra w Texas Hold'em dla wielu graczy, działająca w czasie rzeczywistym bez konieczności instalacji i WebSocketów — synchronizacja odbywa się przez cykliczne odpytywanie API (polling co 2 s). Wersja 10.10.2026 pisana od podstaw. Texas Holdem Poker PHP
Texas Hold'em — 2 karty własne + 5 kart wspólnych. Dowolna liczba stołów, do 8 miejsc przy każdym.
Konto startowe: 1000 zł. Każdy stół ma własną stawkę wejściową (ciemną) i minimalne saldo.
30 s na ruch, 2 min nieaktywności = usunięcie ze stołu, 10 min = wylogowanie.
Rozdanie przechodzi przez fazy Pre-Flop → Flop → Turn → River → Showdown. Rozpoczęcie wymaga minimum 2 graczy ze środkami na ciemną.
Model stołu oparty na ciemnej pobieranej od każdego siedzącego gracza przy starcie rozdania (nie klasyczne small/big blind). Wartość ciemnej to jednocześnie początkowy zakład — każdy gracz zaczyna licytację z wpłatą równą ciemnej. Jeśli ciemna zabierze cały stack, gracz jest automatycznie ALL-IN.
Runda licytacji kończy się, gdy każdy niespasowany gracz wykonał ruch i wyrównał bieżący zakład. Gracze all-in liczą się jako rozliczeni. Gdy zostają sami gracze all-in — pozostałe karty wspólne są odkrywane automatycznie aż do showdownu.
| Czas | Faza | Co się dzieje |
|---|---|---|
| 0–3 s | 1 | Karty wszystkich graczy zostają odkryte |
| 3–6 s | 2 | Podświetlenie zwycięskich kart na złoto |
| 6–9 s | 3 | Oznaczenie zwycięskich miejsc + nazwa układu |
| 9–14 s | 4 | Animacja przelotu żetonów do zwycięzców |
| 14 s | 5 | Reset stołu do stanu „Oczekiwanie" |
Gdy gracz z małym stackiem idzie all-in, pula dzieli się na poziomy wg wpłat całorozdaniowych (total_bets). Każdą pulę wygrywa najlepszy układ spośród graczy uprawnionych (wpłacili co najmniej dany poziom i nie spasowali). Resztki z dzielenia remisu trafiają do pierwszego zwycięzcy; wpłaty graczy usuniętych w trakcie rozdania pozostają w głównej puli.
Silnik wybiera najlepszy 5-kartowy układ z 7 kart (2 własne + 5 wspólnych). Złoty obramowanie = karty tworzące układ.
Panel akcji pojawia się tylko w Twojej turze (30 s). Podświetlone miejsce = gracz na ruchu.
| Akcja | Przycisk | Zasada |
|---|---|---|
| Czekaj (Check) | check | Dostępne tylko gdy nic nie trzeba dopłacić (zakład wyrównany lub 0) |
| Sprawdź (Call) | call | Wyrównanie bieżącego zakładu; przy małym stacku = all-in za resztę |
| Podbij (Raise) | raise | „Podbij do X" — min. krok = bieżący zakład + ciemna; max = własna wpłata + saldo |
| Pasuj (Fold) | fold | Odpada z rozdania, wpłacone żetony przepadają w puli |
| Poddaj (Pass) | pass | Gdy nic nie wisi = check; gdy wisi dopłata = fold |
Po upływie: jeśli wisi dopłata → fold (lub all-in, gdy saldo < dopłata); jeśli nie wisi → pass. Pasek timera zmienia kolor: zielony → pomarańczowy (15 s) → czerwony (5 s).
Gracz zostaje usunięty ze stołu. W trakcie rozdania może to wymusić natychmiastowy showdown.
Automatyczne wylogowanie z lobby (po stronie klienta).
[A-Za-z0-9_-]password_hash (bcrypt)dane — poza zasięgiem WWWblind — ciemna / wpisowe do rozdaniamin_balance — minimalne saldo do usiadaniastopped — blokada administracyjna stołu.json /sql (panel admina)Lobby odświeża listę stołów co 2 s: liczba graczy (x/8), stan, stawka i flaga „zatrzymany". Wejście do stołu: poker.php?table=N. Stół musi istnieć w konfiguracji lub na dysku — API odrzuca nieistniejące numery.
admin.php — osobna sesja administracyjna, hasło w konfiguracji pliku, rate-limit logowania (5 prób / 5 min → blokada 15 min).
Tworzenie (blind + min. saldo), usuwanie (z zwrotem wpłat z niedokończonej ręki), zatrzymywanie/wznawianie (zamrożenie = stan tylko do odczytu).
Zarejestrowani gracze, gracze online (aktywność < 120 s), liczba stołów, środki na stole, stan rozdania — odświeżanie co 2 s.
Widzi karty wszystkich graczy, przyszłe karty wspólne oraz szansę wygranej każdego gracza (symulacja Monte Carlo, 300 iteracji). Tryb tylko-do-odczytu.
Lekki stack: PHP 5.6 + czysty JavaScript. Brak bazy SQL — cały stan w plikach JSON/TXT z blokadami flock(). Brak WebSocketów — polling.
| Plik | Rola |
|---|---|
| index.php | Lobby: rejestracja, logowanie, lista stołów |
| (plik1).php | Widok stołu: UI, animacje żetonów, timer, polling co 2 s |
| (plik2).php | Silnik gry: akcje, evaluator układów, side poty, timeouty, wypłaty |
| (plik3).php | Endpointy lobby: lista stołów, saldo zalogowanego |
| admin.php | Panel admina + JSON API zarządzania |
| security | Wspólne zabezpieczenia (sesja, CSRF, rate-limit, licencja) |
| stoly | Konfiguracja stołów (blind, min_balance, stopped) |
| pamiec | Pełny stan stołu: miejsca, karty, talia, pula, zakłady |
| dane | dane użytkownika (login+hash), stan konta (saldo) |
Funkcja evaluatePokerHand() sprawdza wszystkie kombinacje 5 z 7 kart (C(7,5)=21) i wybiera najlepszą wg kategorii + tiebreakerów (kickery). Obsługuje strit A-2-3-4-5 (wheel). Wyznacza też listę winning_cards do złotego podświetlenia.
| Akcja | CSRF | Opis |
|---|---|---|
| get_status | — | Pełny stan stołu (bez talii); obsługuje timeouty i progresję showdownu |
| sit | ✔ | &seat=0..7 — zajęcie miejsca (wym. min_balance) |
| start_game | ✔ | Start rozdania (≥2 graczy z środkami) |
| play_turn | ✔ | &act=check|call|raise|fold|pass&val=X |
| leave_table | ✔ | Odejście od stołu |
| auto_timeout | ✔ | Wymuszenie ruchu po 30 s (wywoływane co 5 s z klienta) |
| Akcja | Opis |
|---|---|
| get_tables | Lista stołów: gracze, stan, blind, min_balance, stopped |
| get_balance | Saldo wyłącznie zalogowanego użytkownika (z sesji) |
| Akcja | Metoda | Opis |
|---|---|---|
| state | GET | Stoły + statystyki (gracze online, środki) |
| players | GET | Lista graczy: login, saldo, stół |
| create | POST+CSRF | Nowy stół (blind, min_balance) |
| delete | POST+CSRF | Usunięcie stołu + zwrot wpłat z żywej ręki |
| toggle_stop | POST+CSRF | Zatrzymanie/wznowienie stołu |
Options -Indexes — brak listowania katalogów.json .txt .log .bak .sql itd.baza/ i stol/ — całkowity deny + wyłączenie PHP.ht*, .git, .ratelimit)$GLOBALS['SEC_LICENSED_HOSTS'] w security.php.domena.pl = domena + subdomenyhash_equals / password_verifydisplay_errors=0$ADMIN_PASSWORD w admin.php oraz o włączeniu HTTPS. Poker Texas Holdem script.