Newsgroup: it.comp.lang.javascript
Titolo: [Forse OT] Applicazione per intranet op internet

Ciao a tutti,
so che questo forse e' un po' [OT], ma sono anche al corrente delle vostre
super conoscenze e disponibilità :-P percio' vi chiedo qualche velocissima
delucidazioni su un'eventuale applicazione per in un Intranet o
eventualmente per Internet...
    Allora, ho fatto un gioco di carte in "Html/Javascript", dove (per ora e
probabilmente per sempre) si gioca da soli contro il computer. Il gioco si
chiama "King", ma fate conto che sia "Hearts" o qualunque  altro gioco che
si faccia in 4, dove in questo caso uno è l'utente e gli altri sono il
computer che con nomi diversi rappresentano gli altri 3 giocatori.
    Mi domandavo se e come è possibile far funzionare il tutto in rete in
modo che 2 utenti o più giochino contemporaneamente la stessa partita.
Non so, un'idea che mi viene in mente e' quella di rifare il tutto usando un
linguaggio server-side e interrogando un database ogni mezzo secondo...
Oppure non lo so ditemi voi...

 Oppure non lo so ditemi voi...
Cosi' su due piedi al momento mi viene in mente:
- Solo  Client-Side: Applet Java, Flash MX (dalla versione 6 supporta il
"multiplayer" fino a 4 giocatori contemporaneamente, mi pare), Shockwave.
- Client-Side / Server-Side: Qualsiasi tecnologia server-side per
condividere le informazioni (ASP, PHP, JSP, etc). Puoi prendere una
_semplicissima_ (e sottolineo la parola) "chat" fatta in tali linguaggi per
vedere come implementa il meccanismo di multiutenze, o qualcosa di analogo.
Io ho visto un gioco di scacchi fatto in PHP molto carino.
In soldoni devi gestire la concorrenza dei turni, il ping ed eventuale lag,
e la notifica delle azioni dei giocatori ai vari client.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 e la notifica delle azioni dei giocatori ai vari client.
Mmmm, sì.

 Mmmm, sì.
Che e' un problema sempre per il solito discorso di prima, in quanto il
server "non puo' " notificare direttamente al client, deve essere il client
che ogni tanto chiede al server informazioni.


 4 e' gia' piu' un casotto).
Io pensavo ad una cosa così: quando si decide di iniziare la partita viene
creata una tabella nel DataBase con un nome identificativo. La tabella e'
costituita da 4 colonne (1 per giocatore) e 13 righe (1 per mano da fare,
che sono 13 quante le carte in mano ad ognuno).
Le carte hanno un valore numerico univoco da 0 a 51 e quindi io imporrei
tutta la tabella a -1.
E il gioco dovrebbe essere fatto!
Ogni utente, grazie il frame nascosto, controlla ogni secondo se il valore
cambia e in base all'associazione del giocatore con la colonna della
tabella, farà partire la funzione "gioca(player,carta)" facendo appunto
giocare a player la carta corrispondente...
Supponiamo la riga i-esima della tabella (quindi della mano i-esima)
[3,-1,-1,-1]  (vuol dire che player1 ha giocato la carta 3 (cioe' il 5 di
fiori)
finche' tale configurazione non cambia (e verrà confrontata con l'attuale di
ogni utente) non accade niente e a livello client-side viene gentito il
turno, impedendo ai giocatori di iniziare se non hanno giocato quelli prima
di lui (cosa che sta gia' accadendo)
Appena cambia
[3,5,-1,-1] (vuol dire che hanno giocato player1 e 2 e in tavola c'e' il 5 e
il 7 di fiori)
si farà partire la funzione gioca(2,5) e così via...
Sono stato troppo lungo e forse nemmeno chiaro, boo speriamo in un tuo
commento che mi contraddica :) e che soprattutto non mi dissuada...

 commento che mi contraddica :) e che soprattutto non mi dissuada...
Guarda, per poter fare una cosa del genere si puo' fare in un linguaggio
server side, solo che semplicemente "non conviene". Ti vai ad infognare in
discorsi e problematiche che nascono dalla natura stessa dell'HTTP, e che
non puoi risolvere facilmente, ma solo trovare il "miglior" workaround
possibile.
Se vuoi fare un applicazione ludica multiplayer in rete, o vai di Java o
vai di Flash MX. Questo e' il mio consiglio. Poi, qualcosa come ti ho detto
poi anche combinare lato server, ma non e' molto sicuro.


 vai di Flash MX. Questo e' il mio consiglio.
Prezioso e prima o poi lo seguiro'...
Magari opterei per Flash MX, anche perche' il gioco e' gia' pronto in JS e
cosě dovrei fare prima, visto quello che mi dicevi prima sulle analogie dei
linguaggi!

 linguaggi!
Mi riferivo alla sintassi, dal punto di vista del concept ti cambia
totalmente :) Per certi versi e' anche molto, molto piu' facile. :)


 totalmente :) Per certi versi e' anche molto, molto piu' facile. :)
Ok...

 Ok...
E poi e' anche probabile che trovi giochi di carte con sorgenti gia'
disponibili.


 complica.
Non pensiamoci...