No description
Find a file
2026-06-10 09:54:43 +02:00
backend fix 2026-06-10 09:54:43 +02:00
database asd 2026-06-08 12:26:42 +02:00
public frontend fixes and refresh 2026-06-10 09:33:53 +02:00
.env.example asd 2026-06-08 12:26:42 +02:00
.gitignore Initialize project structure with essential files and configurations 2026-04-16 08:13:45 +02:00
.htaccess asd 2026-06-08 10:52:54 +02:00
composer.json asd 2026-06-08 12:26:42 +02:00
readme.md asd 2026-06-08 12:26:42 +02:00

Texas Hold'em Poker

PHP alapú többjátékos Texas Hold'em póker játék.

Technológiák

  • PHP 8.1+
  • MySQL / MariaDB
  • Apache (.htaccess mod_rewrite)

Beállítás

1. Adatbázis

Hozz létre egy poker nevű adatbázist, majd importáld a sémát:

mysql -u root -p poker < database/schema.sql

2. Környezeti változók

Másold le a .env.example fájlt .env névre, és töltsd ki:

DB_HOST=localhost
DB_NAME=poker
DB_USER=root
DB_PASS=jelszo

3. Webszerver

Az .htaccess fájlok Apache-ot feltételeznek, mod_rewrite engedélyezve.
A projekt gyökerét a public/ mappára mutató virtual host helyett a repo gyökerére állítsd.


API referencia

Minden végpont JSON-t ad vissza. Hiba esetén {"error": "..."}, sikernél {"success": true} vagy az adatot.

Az akciót a ?action= query paraméterrel kell megadni.
POST adatokat application/x-www-form-urlencoded formátumban kell küldeni.


Autentikáció — /api/auth

A bejelentkezés PHP session-t használ. A session cookie-t a böngésző automatikusan kezeli.

POST /api/auth?action=register

Regisztráció.

Mező Típus Leírás
username string Felhasználónév
password string Jelszó

Válasz:

{ "success": true }

POST /api/auth?action=login

Bejelentkezés.

Mező Típus Leírás
username string Felhasználónév
password string Jelszó

Válasz:

{ "success": true, "user_id": 1 }

POST /api/auth?action=logout

Kijelentkezés, session törlése.

Válasz:

{ "success": true }

GET /api/auth?action=me

Bejelentkezett felhasználó adatai.

Válasz:

{ "id": 1, "username": "jani", "chips": 1000 }

Szobák — /api/room

Minden szoba-végpont bejelentkezést igényel.

GET /api/room?action=list

Csatlakozható (várakozó) szobák listája.

Válasz:

[
  {
    "id": 1,
    "name": "Jani szobája",
    "max_players": 6,
    "min_bet": 10,
    "status": "waiting",
    "player_count": 2
  }
]

POST /api/room?action=create

Új szoba létrehozása. A létrehozó automatikusan csatlakozik (0-s szék).

Mező Típus Alapértelmezett Leírás
name string "Szoba" Szoba neve
max_players int 6 Max játékosok (29)
min_bet int 10 Minimális tét

Válasz:

{ "success": true, "room_id": 1 }

POST /api/room?action=join

Csatlakozás egy várakozó szobához.

Mező Típus Leírás
room_id int Szoba azonosítója

Válasz:

{ "success": true }

POST /api/room?action=start

Játék indítása. Csak a szoba létrehozója indíthatja el, legalább 2 játékos szükséges.

Mező Típus Leírás
room_id int Szoba azonosítója

Válasz:

{ "game_id": 3 }

Játék — /api/game

Minden játék-végpont bejelentkezést igényel. A game_id-t minden kéréshez meg kell adni.

GET /api/game?action=state&game_id=3

Az aktuális játékállapot lekérése. A frontend ezt pollingolja (~2 másodpercenként).
Más játékos lapjai null-ként jelennek meg, kivéve showdownnál.

Válasz:

{
  "game_id": 3,
  "stage": "flop",
  "pot": 40,
  "community_cards": ["Ah", "7d", "2c"],
  "current_player_id": 2,
  "max_bet": 20,
  "players": [
    {
      "user_id": 1,
      "seat": 0,
      "username": "jani",
      "chips_in_game": 980,
      "current_bet": 20,
      "total_bet": 20,
      "is_active": true,
      "has_acted": true,
      "cards": ["Kh", "Ks"]
    },
    {
      "user_id": 2,
      "seat": 1,
      "username": "peti",
      "chips_in_game": 990,
      "current_bet": 10,
      "total_bet": 10,
      "is_active": true,
      "has_acted": false,
      "cards": null
    }
  ]
}

A stage lehetséges értékei: preflopflopturnrivershowdown


POST /api/game?action=fold&game_id=3

Fold — kiszállás a körből.

Válasz: frissített state objektum (lásd fent)


POST /api/game?action=check&game_id=3

Check — passzolás (csak ha nincs nyitott tét).

Válasz: frissített state objektum


POST /api/game?action=call&game_id=3

Call — az aktuális maximális tét kifizetése.

Válasz: frissített state objektum


POST /api/game?action=raise&game_id=3

Raise — tét emelése.

Mező Típus Leírás
amount int Az új teljes tét összege (nem a különbség!)

Például ha a jelenlegi max_bet = 20 és 50-re emelsz, amount=50.

Válasz: frissített state objektum


Játék menete

register / login
    ↓
room create  →  room join (többen)
    ↓
room start   →  game_id
    ↓
game state (polling)  ←──────────────┐
    ↓                                │
current_player_id == saját user_id?  │
    ↓ igen                           │
fold / check / call / raise ─────────┘
    ↓
stage == "showdown"  →  játék vége, chips_in_game frissül

Kártyajelölések

Jel Jelentés
A, K, Q, J, T Ász, Király, Dáma, Bubi, Tízes
29 Számkártyák
h, d, c, s Kőr (hearts), Káró (diamonds), Treff (clubs), Pikk (spades)

Példa: Ah = Ász-kőr, Td = Tízes-káró


Kézrangsor

Rang Név
10 Royal Flush
9 Straight Flush
8 Four of a Kind
7 Full House
6 Flush
5 Straight
4 Three of a Kind
3 Two Pair
2 One Pair
1 High Card