8-ball script php js ajax - bilardo scripti php5.6 php8.0 indirme sürümü 10.10.2026

Çok oyunculu oyun: internette iki oyunculu 8-ball. Arka uç: JSON ve SQL. Ön uç: JavaScript ES5 + Canvas 2D. sunucu -dır autorytetem durum server(anti-cheat).


İçindekiler
  1. ekran görüntüleri
  2. Dosyalar ve mimari
  3. 8-ball oyun kuralları
  4. Masa geometrisi ve cepler
  5. Fizik motoru
  6. Kontroller ve vuruş noktası
  7. Çok oyunculu — durum makinesi ve zaman
  8. API — tüm işlemlerin listesi
  9. Ekonomi: giriş ücreti, ödül havuzu, bakiye
  10. Rütbeler ve VIP hesaplayıcı
  11. Yönetici paneli
  12. Güvenlik katmanı
  13. Teknik notlar
==================== 1 ====================

1. ekran görüntüleri

Ekran gry — stół 8-ball, pasek graczy, panel punktu uderzenia
Şekil 1 — Oyun ekranı. Soldan sağa: masanın üstündeki oyuncu çubuğu (avatar + kullanıcı adı + ödül havuzu), üçgen şeklinde dizilmiş topların ve açılış çizgisindeki beyaz topun bulunduğu masa, sağ panel: nokta UDERZENIA (falso ayarı için büyük beyaz top), CEBE GİREN TOPLAR (sıralama) ve tur. Masanın altında “Oyuncular bekleniyor” durum mesajı ve “Masaya otur” düğmesi.
Wyniki testów silnika fizyki — trajektorie i detekcja wbitych bil
Şekil 2 — Atış motoru testleri (A–H). Motor her atış için şunları bildirir: cebe girip girmediğini, son konumu ve son hızı ile topun tüm yörüngesini. Test edilen senaryolar: köşe ve orta cebe soksahiptir: (A, F, G, H), banttan sekme (B), cebe düşmeden bant boyunca yuvarlansahiptir: (C, D) ve cebin yanından geçen yörünge (E).
==================== 2 ====================

2. Dosyalar ve mimari

Dosya / dizinİşlev
index.phpKayıt, giriş, masa listeli lobi, bakiye ve oyuncu rütbesi
(plik1).phpOyun sayfası: canvas, çizim, istemci fiziği, nişan alsahiptir: ve kullanıcı arayüzü panelleri
(plik2).phpOyun API’si: masa durumu, oturma, atışlar, sonuç doğrulama, ödül havuzları ve zaman sınırları
(plik3).phpLobi API’si: parametreleriyle masa listesi ve giriş yapmış oyuncunun bakiyesi
admin.phpYönetici paneli: masalar (parametreler), oyuncular, rütbeler ve masa önizlemesi
(plik4).phpOrtak güvenlik katmanı: alan adı lisansı, oturum, CSRF, hız sınırı ve başlıklar
stolyMasa yapılandırması (bahis, minimum bakiye, renk, top çapı, süre, boyutlar)
pamiecMasanın etkin oyun durumu (toplar, koltuklar, sıra, aşama, ödül havuzu)
bazyOyuncu hesabı: kullanıcı verileri (kullanıcı adı + parola özeti), hesap durumu (bakiye), rütbe (VIP)
hashYönetici parolasının özeti (bcrypt)
logowanie/_ratelimit/Deneme sayaçları (IP başına giriş/kayıt hız sınırlaması)
<login>.pngOyuncu avatarı (isteğe bağlı, ana dizinde)
bilard2.png / bilard3.pngBelgelendirme görselleri (fizik testleri / oyun ekran görüntüsü)
index.php oturum açma + lobby gra canvas + fizyka api walidacja + autorytet stoly stol hesaplar admin.php zarządzanie
Şekil 3 — Akış: PHP sayfaları → API → dosya deposu (JSON/TXT) → yönetici paneli.
==================== 3 ====================

3. 8-ball oyun kuralları

Fauller (sonuç: rakip beyaz topu eline alır)

Oyunun bitişi

==================== 4 ====================

4. Masa geometrisi ve cepler

Fizik koordinatları her zaman mantıksal koordinat sistemindedir 1000×620 px (sukno -den (53,53) -e kadar (947,547)); ekran ölçeklendirmesi fiziği değiştirmez. 6 cebin her biri bir korytarz-prowadnica ile lejkowatymi szczękami — nokta değil, yönlendirme kanalıdır. top içinde korytarzu toczy się sonra rynience -e kadar ciemnej dziury (promień ~25 px) i dopiero tam znika; ścianki kanału odbijają ją -e kadar środka (yok „niewidzialnych band").

masa içinde skali 0.7: sukno 53..947 x 53..547 -> (37,37)-(663,383) linia açılış x=260 linia açılış nokta trójkąta x=700 trójkąt łuzy (PHOLES) numery delik 0 1 2 3 4 5 przekątne siyah top için çapraz delik çiftleri: 0↔4, 1↔3, 2↔5
Şekil 4 — Masa geometrisi: çuha, numaralandırılmış 6 cep ve siyah top için çapraz cep kuralı.
ÖğeDeğerNotlar
Çuha (FELT)(53,53)–(947,547)alan legalnych konumların top
Cep merkezleri (PHOLES)(35,35) (965,35) (500,28) (35,565) (965,565) (500,572)nokta, içinde którym top faktycznie wpada
Cep kanalıgenişlik ~15–16 px + lejek szczęk + margines +8 pxoś boyunca PAXIS; narożne mają „fartuch" -e kadar t=34
Çapraz cepler0↔4, 1↔3, 2↔5gerekli łuza için czarnej
Beyaz top yerleştirme engeliBilgisayarAP + promień ≈ cueR+15değil wolno stawiać içinde rejonie łuzy / üzerinde innej topu
==================== 5 ====================

5. Fizik motoru (istemci tarafında, deterministik)

SabitDeğerAnlam
SIM_DT1/240 sstały krok symulacji — determinizm üzerinde iki klientach
FRICTION0.997 / krokYuvarlansahiptir: sürtünmesi
RAIL_REST0.8Bant sekme katsayısı
STOP_V8 px/s (skal. ile Ø)Topun dursahiptir: eşiği
MAX_SPEED1600 px/s (skal. ile Ø)atış gücü = 1.0
==================== 6 ====================

6. Kontroller ve vuruş noktası

İşlemBilgisayarTelefon (dokunmatik)
Nişan almamyszka ayarlar yön; linia celu + duch topu + tor odbiciaprzeciągnięcie ayarlar yön i siłę jednym gestem („proca")
Atış gücüıstakayı geriye doğru çekip basılı tutun (öne çekmek gücü azaltır); bırakınca atış yapılırnişan alsahiptir: ile aynı
Vuruş noktasıpaneldeki büyük beyaz top: üst = takip falso, alt = geri falso, yanlar = kavis ve bantta falso
Eldeki beyaz topklik stawia -den razuprzeciągnięcie ducha i puszczenie palca stawia

Walidacja sunucunun konumların beyaz topun (place_cue): içinde obrębie sukna, değil za blisko łuzy, değil nachodzi üzerinde inną bilę.

==================== 7 ====================

7. Çok oyunculu — durum makinesi ve zaman

waiting oyuncular bekleniyor playing aşamalar: aim ↔ moving finished ödül havuzu ödendi start_game (2 oyuncu) siyah top / hükmen galibiyet rövanş / iki oyuncunun ayrılması → sıfırlama
Şekil 5 — Masa durum makinesi.
SınırSabit / yapılandırmaSonuç
Hamle süresiturn_time masa başına (5–300 sn, varsayılan 30)faul: sıra rakibe geçer ve beyaz top rakibin eline verilir
Masaya dönüşSEAT_TIMEOUT = 30 smiejsce trzymane 30 s; sonra zwolnione, içinde oyunda = walkower
Atış sonucuSHOT_TIMEOUT = 150 satış süresi dolar → zaman faulü
Kalp atışıpolling get_status co ~1,2 sodświeża last_activity oyuncunun

Hamle süresi liczony dopiero sonra zatrzymaniu wszystkich top (aşama aim) — zaman çubuğu simülasyondan sonra görünür. Durum üzerindeki tüm işlemler flock (withState) — yok wyścigów zapisu.

==================== 8 ====================

8. API — tüm işlemlerin listesi

bilard_api.php?table=<id>&action=<akcja> (oturum gerektirir; POST işlemleri CSRF belirteci gerektirir)

İşlemYöntemEtki
get_statusGETTam durum: toplar, koltuklar (+rütbe/bakiye/boşta), sıra, aşama, ödül havuzu, time_left/time_limit, pending_shot, potted_order, moves/round, yapılandırma (felt, ball_r, cue_r, table_w/h), bakiye i rütbe wywołującego
test_sessionGETDiagnostyka: user, userId, balance
sitPOSTKoltuk alsahiptir: (minimum bakiyeyi, masa kilidini ve boş koltuğu kontrol eder)
leave_tablePOSTboşaltma miejsca; sırasında oyunun = poddanie (walkower)
start_gamePOSTİki oyuncu da oturduğunda başlar; giriş ücretlerini alır, ödül havuzu = bahsin 2 katı olur ve açılış oyuncusu seçilir
place_cuePOSTyerleştirme beyaz topun içinde ręku; walidacja konumların (sukno, łuzy, kolizje)
shootPOSTkayıt atışın (açı, güç, spin) → pending_shot, aşama moving
shot_resultPOSTSimülasyon sonucu (toplar + olaylar) → doğrulasahiptir: → yeni durum; oturan oyunculardan herhangi biri bildirebilir (sonuç deterministiktir)

Anti-cheat — walidacja shot_result sonra stronie sunucunun

api.php?action=… (oturum gerektirir)

İşlemEtki
get_tablesLista stołów: miejsca, status, blind, min_balance, renk, Ø top, süre, boyutlar, stopped
get_balance&user=<md5>Bakiye yalnızca kullanıcıya (veya yöneticiye) aittir; userId biçimi doğrulanır

admin.php?api=… (yönetici oturumu gerektirir; POST isteğinde CSRF belirteci gerekir)

İşlemEtki
stateKontrol paneli: masa parametreleri, masalardaki oyuncular, ödül havuzu, istatistikler (kayıtlı / çevrimiçi)
playersOyuncu listesi: kullanıcı adı, bakiye, mevcut masa, rütbe
set_rankOyuncu rütbesini değiştirme (normal/silver/gold/vip)
createNowy masa ile parametrami
deleteMasayı silme; oyun devam ediyorsa ödül havuzu oturan oyunculara yarı yarıya iade edilir
toggle_stopMasayı durdurma/devam ettirme; devam ettirildiğinde hamle süresi yeniden başlar
==================== 9 ====================

9. Ekonomi: giriş ücreti, ödül havuzu, bakiye

==================== 10 ====================

10. Rütbeler ve VIP hesaplayıcı

RütbeVerilme şekliAyrıcalık
normalotomatik olarak przy kayıt sırasında—
silver / goldyönetici (oyuncu listesi)kullanıcı adının yanında rozet
VIPadmindynamiczny % szansy wbicia przy celowaniu
Kalkulator VIP (klient, yalnızca önizleme): için bilej celowanej hesaplar tor trafionej topu — bezpośrednio, sonra odbiciu -den bant i içinde kombinacji (top strącana aracılığıyla trafioną). Procent wynika ile fizycznego przecięcia toru ile gardłem kanału łuzy, kąta wejścia i przeszkód üzerinde trasie. hesaplanır yalnızca kurallara uygun toplar hesaplanır (grup / grup atanmamışsa herhangi bir top). %50 ve üzeri yeşil, altı kırmızı; napis yatay także içinde trybie dikey.
==================== 11 ====================

11. Yönetici paneli (admin.php)

masalar

ParametreAralıkNotlar
Giriş ücreti (blind)≥ 1 złödül havuzu = bahsin 2 katı
Minimum bakiye≥ giriş ücretibu eşiğin altında otursahiptir: engellenir
Çuha rengiHEXsukno, rynienki i cienie hesaplanır ile tego koloru
Top çapı18–44 pxfizyka skaluje się proporcjonalnie
Hamle süresi5–300 s„X s/hamle"
Masa boyutu320–1600 × 280–1400 pxyalnızca masa boyutu değişir — toplar yuvarlak, arayüz sabit boyutta (letterbox)

Oyun arayüzü

Dikey mod (telefon): gdy ekran wyższy niż szerszy üzerinde urządzeniu mobilnym, masa renderuje się obrócony o −90°, dopasowany -e kadar ekranu. Cienie/refleksy kompensują obrót (światło zostaje ekranowe), napisy i % VIP są kontr-obrócone. üzerinde komputerze zawsze yatay.
==================== 12 ====================

12. Güvenlik katmanı

(plik6).php ortak moduł eklenen aracılığıyla her herkese açık dosya PHP:
==================== 13 ====================

13. Teknik notlar