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].


Kazalo vsebine
  1. Zaslonske slike
  2. Datoteke in arhitektura
  3. Pravila igre 8-ball
  4. Geometrija mize in luknje
  5. Fizikalni pogon
  6. Krmiljenje in udarna točka
  7. Večigralstvo (Multiplayer) — avtomat stanj in čas
  8. API — celoten pregled dejanj
  9. Ekonomija: prijavnina, sklad, stanje
  10. Rangi in VIP kalkulator
  11. Skrbniška plošča
  12. Varnostni sloj
  13. Tehnične opombe

1. Zaslonske slike

Zaslon igre — miza 8-ball, vrstica igralcev, plošča udarne točke
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".
Rezultati testov fizikalnega pogona — trajektorije in zaznavanje zabitih kroglic
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).

2. Datoteke in arhitektura

Datoteka / katalogVloga
index.phpRegistracija, prijava, preddverje (lobi) s seznamom miz, stanjem in rangom igralca
(plik1).phpStran igre: canvas, izrisovanje, fizika odjemalca, merjenje, vmesniške plošče (UI)
(plik2).phpAPI igre: stanje mize, sedenje, streli, preverjanje rezultata, skladi, časovne omejitve
(plik3).phpAPI preddverja: seznam miz s parametri, stanje prijavljenega igralca
admin.phpSkrbniška plošča: mize (parametri), igralci, rangi, predogled mize
(plik4).phpSkupni varnostni sloj: domenska licenca, seja, CSRF, omejitev pogostosti (rate-limit), glave
stolyKonfiguracija miz (vložek, min. stanje, barva, Ø kroglic, čas, dimenzije)
pamiecAktivno stanje igre na mizi (kroglice, mesta, poteza, faza, sklad)
bazyRačun igralca: podatki uporabnika (prijava + gostota/hash gesla), stanje računa (stanje), rang (vip)
hashHash skrbniškega gesla (bcrypt)
logowanie/_ratelimit/Števci poskusov (omejevanje prijav/registracij, na IP)
<login>.pngAvatar igralca (izbirno, v korenskem imeniku)
bilard2.png / bilard3.pngSlike dokumentacije (testi fizike / zaslonska slika igre)
index.php prijava + lobi igra canvas + fizika api preverjanje + avtoriteta stoly stol konta admin.php upravljanje
Slika 3 — Pretok: PHP strani → API → shramba datotek (JSON/TXT) → skrbniška plošča.

3. Pravila igre 8-ball

Prekrški (posledica: nasprotnik vzame belo kroglico v roko)

Konec igre

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").

x=260 linija razbijanja x=700 trikotnik 0 1 2 3 4 5 diagonalni pari lukenj za črno kroglico: 0↔4, 1↔3, 2↔5
Slika 4 — Geometrija mize: sukno, 6 oštevilčenih lukenj in pravilo diagonalne luknje za črno.
ElementVrednostOpombe
Sukno (FELT)(53,53)–(947,547)območje dovoljenih položajev kroglic
Središča lukenj (PHOLES)(35,35) (965,35) (500,28) (35,565) (965,565) (500,572)točka, kjer kroglica dejansko pade
Koridor luknješirina ~15–16 px + lijak čeljusti + rob +8 pxos vzdolž PAXIS; kotne imajo „predpasnik" do t=34
Diagonale lukenj0↔4, 1↔3, 2↔5zahtevana luknja za črno kroglico
Zaklep postavitve bele kroglicePCAP + polmer ≈ cueR+15prepovedano postavljati v območju luknje / na drugo kroglico

5. Fizikalni pogon (odjemalec, determinističen)

KonstantaVrednostPomen
SIM_DT1/240 sfiksni korak simulacije — determinizem na obeh odjemalcih
FRICTION0.997 / koraktrenje kotaljenja
RAIL_REST0.8koeficient odboja od bande
STOP_V8 px/s (prilagojeno glede na Ø)prag ustavljanja kroglice
MAX_SPEED1600 px/s (prilagojeno glede na Ø)moč strela = 1.0

6. Krmiljenje in udarna točka

DejanjeOsebni računalnik (PC)Telefon (na dotik)
Merjenjemiška določa smer; črtasta linija cilja + duhovna kroglica + odbojna potpoteg določa smer in moč v eni potezi („prača")
Moč strelapridržite in povlecite vzdolž palice nazaj (naprej se zmanjšuje); spustite = strelenako kot pri merjenju
Udarna točkavelika bela kroglica na plošči: gor = poteg za kroglico (follow), dol = povlecite nazaj (draw), strani = lok in efekt na bandi
Bela v rokiklik postavi takojpoteg 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

waiting čakanje na igralce playing faze: aim ↔ moving finished sklad izplačan start_game (2 igralca) črna / predaja povratna tekma / izhod obeh igralcev → ponastavitev
Slika 5 — Avtomat stanj mize.
OmejitevKonstanta / konfiguracijaPosledica
Čas za potezoturn_time na mizo (5–300 s, privzeto 30)prekršek: poteza + bela v roki nasprotnika
Vrnitev za mizoSEAT_TIMEOUT = 30 ssedež rezerviran 30 s; nato sproščen, v igri = predaja
Rezultat strelaSHOT_TIMEOUT = 150 sstrel preteče → časovni prekršek
Srčni utrip (Heartbeat)poizvedovanje (polling) get_status vsakih ~1,2 sosvežuje nedavno aktivnost igralca (last_activity)

Č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)

DejanjeMetodaUčinek
get_statusGETCelotno 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_sessionGETDiagnostika: user, userId, balance
sitPOSTZasedba sedeža (preveri min. stanje, zaklep mize, prosto mesto)
leave_tablePOSTSprostitev sedeža; med igro = predaja
start_gamePOSTZačetek, ko sta oba sedita; pobere vstopnino, sklad = 2× vložek, izžreba tistega, ki začne
place_cuePOSTPostavitev bele kroglice v roko; preverjanje položaja (sukno, luknje, trki)
shootPOSTRegistracija strela (kot, moč, spin) → pending_shot, faza moving
shot_resultPOSTRezultat simulacije (kroglice + dogodki) → preverjanje → novo stanje; poroča kateri koli sedeči igralec (deterministični rezultat)

Protigrajoferski sistem (Anti-cheat) — preverjanje shot_result na strani strežnika

api.php?action=… (zahteva sejo)

DejanjeUčinek
get_tablesSeznam miz: sedeži, stanje, blind, min_balance, barva, Ø kroglic, čas, dimenzije, stopped
get_balance&user=<md5>Stanje — izključno lastno (ali skrbnikovo); preverjanje oblike userId

admin.php?api=… (zahteva skrbniško sejo; POST z žetonom CSRF)

DejanjeUčinek
stateNadzorna plošča: parametri miz, igralci za mizami, sklad, statistika (registrirani / spletni)
playersSeznam igralcev: prijava, stanje, trenutna miza, rang
set_rankSprememba ranga igralca (normal/silver/gold/vip)
createNova miza s parametri
deleteIzbris mize; ob tekoči igri vračilo sklada sedečim igralcem (polovica vsakemu)
toggle_stopZaustavitev/nadaljevanje mize; po nadaljevanju svež čas za potezo

9. Ekonomija: prijavnina, sklad, stanje

10. Rangi in VIP kalkulator

RangPodeljenPrivilegij
normalsamodejno ob registraciji—
silver / goldskrbnik (seznam igralcev)značka ob prijavi
VIPskrbnikdinamič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

ParameterRazponOpombe
Prijavnina (blind)≥ 1 valutasklad = 2× vložek
Min. stanje≥ prijavninazaklep sedenja pod pragom
Barva suknaHEXsukno, žlebovi in sence izračunani iz te barve
Premer kroglic18–44 pxfizika se sorazmerno prilagaja
Čas za potezo5–300 s„X s/potezo"
Velikost mize320–1600 × 280–1400 pxsamo miza — okrogle kroglice, fiksna velikost vmesnika (letterbox)

Vmesnik igre

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:

13. Tehnične opombe