Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Internetowa gra w Kółko i Krzyżyk
Forum PHP.pl > Inne > Hydepark
tab
Witam tak mnie naszło żeby napisać internetową gre w Kolko i Krzyzyk. Nie pisalem nigdy czegos takiego wiec chcialem sie poradzic kogos z wiekszym doswiadczeniem. Ogolnie to widzi mi sie to tak:
Uzytkownik wchodzi na strone i z bazy pobierane sa wszystkie stoły. Moze zalozyc stol lub do stolu dolaczyc. Tabela ze stołami wygladlałaby tak:
id | wyglad | stan | ruch
ID to numer stolu, wyglad to stan pola do gry czyli np 001021022 (1 to krzyzyk, 2 kolko). A stan to 0 lub 1 (0 jak jest jeden gracz ktory utworzyl stol i czeka na kogos do gry, 1 to ze jest dwoch graczy i mozna zaczac gre). Ruch oznacza gracza ktory moze teraz wykonac ruch
Po utworzeniu lub wybraniu stolu do gry zapisywany bylby gdzies ID stolu (najpewniej w sesji). Przekierowanie do gra.php gdzie bylby stol do gry. I tutaj do akcji wkracza juz AJAX ktory co 5-10 sek (coby za bardzo serwera nie obciazyc) wysyla zapytanie do bazy i sprawdza czy drugi gracz wykonal jakis ruch (co objawia sie zmiana pola ruch). Przy kazdym ruchu zmieniaja sie wyglad i ruch. Poza tym sprawdzane jest odpowiednim algorytmem czy ulozone sa 3 X lub O i czy nalezy zakonczyc gre. Tak to sie ma w teorii ale w praktyce nie wiem za bardzo jak wykonac ten ruch. W jaki sposob rozroznic ze jest jeden gracz i drugi... Czy tutaj przydaloby sie uzyc socketów (nie znam za bardzo ich dzialania ale wiem ze sie je chyba w tego typu rzeczach wykorzystuje). Prosze o pomysly i propozycje glownie co do tego jak rozniac graczy
daniel1302
No nie znam się na SOCKETACH, ale przy grach 5-10 sekund jest to wieczność, i gracz może pomyśleć, że ktoś inny nie wykonał ruchu i odejść od stołu.

No to najprościej graczy rozróżniać tak:
Każdy gracz posiada swoje ID, który nie ma prawa się powtózyć(np ID rekordu w tabeli gracza).
i zmieniasz trochę wygląd tabeli stol:
ID|wyglad|ruch|wlasciciel|przeciwnik

ID-ID stołu
wyglad- tj u ciebie
ruch-określa kogo ruch
wlasciciel- ID gracza który zalozyl pokoj
przeciwnik- ID przeciwnika

Tym samym pozbyliśmy się pola stan. Określać czy pokój jest pusty można za pomocą pola przeciwnik. Jeśli wlasciciel odejdzie to zmieniamy pole wlasciciel na 0 i np co 30 sec usuwamy takie pokoje.

A jeśli chodzi o określenie kto ma jaki znak (O/X) to najlepiej przypisać właścicielowi X albo O na stałe albo dodać dodatkowe pole wlasciciel_znak

A jeśli chcialbyś zaimplementować sztuczną inteligencje to:


http://software.com.pl/sztuczna-inteligenc...r-gry-w-szachy/
nmts
To do kogo należy ruch, można również określać stanem na planszy (ilością X i O).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.