Skript za biljard 8-ball php js ajax - script billiard php5.6 php8.0 download v. 10.10.2026
Večigralska igra 8-ball za dva igralca prek interneta[cite: 6]. Zaledje (backend): json in sql[cite: 6]. Čelulo (frontend): JavaScript ES5 + Canvas 2D[cite: 6].
Strežnik je avtoriteta stanja strežnik (protigrajoferski sistem / anti-cheat)[cite: 6].
Slika 1 — Zaslon igre. Od leve: vrstica igralcev nad mizo (avatar + prijava + sklad),
miza s postavljenim trikotnikom kroglic in belo kroglico na začrtani liniji razbijanja, desna plošča: UDARNA TOČKA
(velika bela kroglica za nastavitev efekta), ZABITE KROGLICE (vrstni red) in RUNDA.
Pod mizo sporočilo stanja „Čakanje na igralce" in gumb „Sedite za mizo".
Slika 2 — Testi pogona strelov (A–H). Za vsak strel pogon poročila:
zadetek/zgrešitev luknje, končni položaj in končna hitrost ter celotna trajektorija kroglice.
Testirani scenariji: zabijanje v kotno in sredinsko luknjo (A, F, G, H), odboj od bande (B),
kotaljenje ob bandi brez padca (C, D) in trajektorija z zgrešitvijo luknje (E).
Skupni varnostni sloj: domenska licenca, seja, CSRF, omejitev pogostosti (rate-limit), glave
stoly
Konfiguracija miz (vložek, min. stanje, barva, Ø kroglic, čas, dimenzije)
pamiec
Aktivno stanje igre na mizi (kroglice, mesta, poteza, faza, sklad)
bazy
Račun igralca: podatki uporabnika (prijava + gostota/hash gesla), stanje računa (stanje), rang (vip)
hash
Hash skrbniškega gesla (bcrypt)
logowanie/_ratelimit/
Števci poskusov (omejevanje prijav/registracij, na IP)
<login>.png
Avatar igralca (izbirno, v korenskem imeniku)
bilard2.png / bilard3.png
Slike dokumentacije (testi fizike / zaslonska slika igre)
Slika 3 — Pretok: PHP strani → API → shramba datotek (JSON/TXT) → skrbniška plošča.
3. Pravila igre 8-ball
Postavitev: bela kroglica na začrtani liniji (x=260), trikotnik 15 kroglic s konico na x=700;
črna (8) v središču trikotnika, na vogalih cela in polovična kroglica.
Razbijanje: prvi strel z belo v trikotnik; tistega, ki razbija, izbere strežnik naključno (mt_rand).
Skupine: igralec, ki prvi v stanju playing zabije kroglico, dobi svojo skupino —
cele (1–7) ali polovičke (9–15); nasprotnik dobi drugo skupino.
Vrsta: zabijanje lastne kroglice = strel se nadaljuje; zgrešitev ali prekršek = poteza preide
na nasprotnika.
Črna (8): dovoljena šele, ko je pospravljena celotna skupina; pasti mora v luknjo,
ki je na diagonali glede na luknjo zadnje zabite kroglice (označeno z zlatim
obročem). Črna prezgodaj ali v napačno luknjo = takojšnji poraz.
Prekrški (posledica: nasprotnik vzame belo kroglico v roko)
Prvi stik bele kroglice s kroglico nasprotnika ali s črno (ko ni dovoljena)
Bela kroglica se ni dotaknila nobene kroglice in se je odbila od manj kot 3 različnih band
Zabijanje bele kroglice ali nasprotnikove kroglice (nasprotnikova kroglica se šteje zanj)
Prekoračitev časa za potezo / časovne omejitve za izvedbo strela
Predaja (Walkover): nasprotnik je zapustil mizo ali se ni vrnil v 30 s → sklad pripadne prisotnemu
Povratna tekma (Rematch): po stanju finished gumb „Povratna tekma" ponovno odšteje prijavnino
4. Geometrija mize in luknje
Fizikalne koordinate so vedno v logičnem sistemu 1000×620 px (sukno od (53,53) do (947,547));
prilagajanje velikosti zaslona ne spremeni fizike. Vsaka od 6 lukenj je vodilni koridor z lijastimi
čeljustmi — ni točka. Kroglica v koridorju se kotali po žlebu do temne luknje (polmer ~25 px)
in šele tam izgine; stene kanala jo odbijejo proti sredini (ni „nevidnih band").
Slika 4 — Geometrija mize: sukno, 6 oštevilčenih lukenj in pravilo diagonalne luknje za črno.
prepovedano postavljati v območju luknje / na drugo kroglico
5. Fizikalni pogon (odjemalec, determinističen)
Konstanta
Vrednost
Pomen
SIM_DT
1/240 s
fiksni korak simulacije — determinizem na obeh odjemalcih
FRICTION
0.997 / korak
trenje kotaljenja
RAIL_REST
0.8
koeficient odboja od bande
STOP_V
8 px/s (prilagojeno glede na Ø)
prag ustavljanja kroglice
MAX_SPEED
1600 px/s (prilagojeno glede na Ø)
moč strela = 1.0
Trki kroglic: prožni, z ločevanjem položajev — ločevanje nikoli ne potisne kroglice
iz koridorja luknje nazaj na bando.
Efekt (spin): stranski (x) zasuče tirnico bele kroglice pred prvim stikom;
gor/dol (y) spremeni vedenje po stiku (follow/draw). Ponastavljeno po vsakem strelu.
Prilagajanje velikosti: moč strela in prag ustavljanja se prilagajata premeru kroglic
(osnova Ø28 px) — kroglice poljubne velikosti se premikajo naravno.
Kotaljenje kroglic: vrtenje = pot/polmer; številke in pasovi se kotalijo čez kroglo
v skladu s smerjo gibanja (polnih 360°).
Simulacijski dogodki:pocketed (kroglica+luknja, v zaporedju),
firstHit (prvi stik bele kroglice), rails (nabor zadetih band).
Dogodki + končni položaji se poročajo strežniku kot rezultat strela.
6. Krmiljenje in udarna točka
Dejanje
Osebni računalnik (PC)
Telefon (na dotik)
Merjenje
miška določa smer; črtasta linija cilja + duhovna kroglica + odbojna pot
poteg določa smer in moč v eni potezi („prača")
Moč strela
pridržite in povlecite vzdolž palice nazaj (naprej se zmanjšuje); spustite = strel
enako kot pri merjenju
Udarna točka
velika bela kroglica na plošči: gor = poteg za kroglico (follow), dol = povlecite nazaj (draw), strani = lok in efekt na bandi
Bela v roki
klik postavi takoj
poteg duha in spust prsta postavi
Preverjanje položaja bele kroglice s strani strežnika (place_cue): znotraj sukna, ne preblizu luknje,
ne prekriva druge kroglice.
7. Večigralstvo (Multiplayer) — avtomat stanj in čas
Slika 5 — Avtomat stanj mize.
Omejitev
Konstanta / konfiguracija
Posledica
Čas za potezo
turn_time na mizo (5–300 s, privzeto 30)
prekršek: poteza + bela v roki nasprotnika
Vrnitev za mizo
SEAT_TIMEOUT = 30 s
sedež rezerviran 30 s; nato sproščen, v igri = predaja
Čas za potezo se šteje šele po ustavitvi vseh kroglic (faza aim) —
vrstica časa se pojavi po simulaciji. Vse operacije s stanji so atomske pod flock
(withState) — ni medsebojnega izključevanja ali tekme pri pisanjih.
8. API — celoten pregled dejanj
bilard_api.php?table=<id>&action=<dejanje> (zahteva sejo; dejanja POST zahtevajo žeton CSRF)
Dejanje
Metoda
Učinek
get_status
GET
Celotno stanje: kroglice, sedeži (+rang/stanje/neaktivnost), poteza, faza, sklad, time_left/time_limit, pending_shot, potted_order, moves/round, konfiguracija (felt, ball_r, cue_r, table_w/h), stanje in rang klicatelja
test_session
GET
Diagnostika: user, userId, balance
sit
POST
Zasedba sedeža (preveri min. stanje, zaklep mize, prosto mesto)
leave_table
POST
Sprostitev sedeža; med igro = predaja
start_game
POST
Začetek, ko sta oba sedita; pobere vstopnino, sklad = 2× vložek, izžreba tistega, ki začne
place_cue
POST
Postavitev bele kroglice v roko; preverjanje položaja (sukno, luknje, trki)
Sedenje zahteva min_balance; start_game od obeh igralcev pobere
blind (prijavnino) → sklad = 2× vložek.
Zmagovalec pobere celoten sklad; ob izbrisu mize med igro se sklad povrne polovično.
Stanje v baza/<uid>/stankonta.txt; zapisi pod LOCK_EX.
10. Rangi in VIP kalkulator
Rang
Podeljen
Privilegij
normal
samodejno ob registraciji
—
silver / gold
skrbnik (seznam igralcev)
značka ob prijavi
VIP
skrbnik
dinamični % možnosti zabijanja pri merjenju
VIP kalkulator (odjemalec, samo predogled): za ciljno kroglico izračuna tirnico zadete kroglice —
neposredno, po odboju od bande in v kombinaciji (kroglica, ki jo zadeta potisne naprej). Odstotek izhaja
iz fizičnega presečišča tirnice z grlom kanala luknje, vstopnega kota in ovir na poti. Izračunavajo se
samo pravilne kroglice (skupina / poljubne, ko skupine niso dodeljene). Zelena ≥ 50%, rdeča spodaj;
vodoravni napis tudi v pokončnem načinu.
11. Skrbniška plošča (admin.php)
Mize
Parameter
Razpon
Opombe
Prijavnina (blind)
≥ 1 valuta
sklad = 2× vložek
Min. stanje
≥ prijavnina
zaklep sedenja pod pragom
Barva sukna
HEX
sukno, žlebovi in sence izračunani iz te barve
Premer kroglic
18–44 px
fizika se sorazmerno prilagaja
Čas za potezo
5–300 s
„X s/potezo"
Velikost mize
320–1600 × 280–1400 px
samo miza — okrogle kroglice, fiksna velikost vmesnika (letterbox)
Kartice miz: parametri, igralci 0–2/2, sklad na mizi, stanje; dejanja:
Ustavi/Nadaljuj, Predogled (način samo za branje), Izbriši.
Seznam igralcev: prijava, stanje, trenutna miza, spustni seznam rangov.
Sveža namestitev ustvari 1 mizo. Opozorilo ob privzetem skrbniškem geslu.
Vmesnik igre
Vrstica igralcev zgoraj: avatar + prijava + skupina + sličice kroglic; aktivni igralec
ima utripajoč zlatec obrobo avatarja; na sredini sklad in gumb PRAVILA IGRE.
Plošča pod mizo: udarna točka, zabite kroglice v vrstnem redu, runda/poteza.
Informativna vrstica: vrsta, prekrški, bela v roki, gibanje kroglic, stanje igre.
„Začni igro" — gumb na sredi mize; po koncu = „Povratna tekma".
Pokončni način (telefon): ko je zaslon na mobilni napravi višji kot širši,
se miza izriše obrnjena za −90°, prilagojena zaslonu. Sence/odsevi kompenzirajo zasuk
(svetloba ostane usmerjena glede na zaslon), napisi in VIP % so obrnjeni nazaj. Na računalniku vedno vodoravno.
12. Varnostni sloj
(plik6).php skupni modul, ki ga vključi vsaka javna datoteka PHP:
Domenska licenca (proti kraji): skript deluje samo na domenah s seznama
SEC_LICENSED_HOSTS; vnos .domena vključuje vse poddomene.
Nelicencirana domena → HTTP 403.