lalla_4 (Normal User)
Newbie
Messaggi: 12
Iscritto: 14/01/2009
|
Questo topic è stato chiuso dal moderatore Ciao a tutti. Mi serve aiuto da voi.
Devo realizzare un sito in php ho alcuni(grossi problemi).Il testo del progetto è questo:
Codice sorgente - presumibilmente Python |
Si vuole realizzare un gioco di avventuare testuale, un omaggio a Zork, che è considerato uno dei più importanti videogiochi di tutti i tempi. Il gioco deve simulare un ambiente composto da stanze, oggetti e personaggi. Tutte e tre queste entità sono caratterizzate da un nome e da una descrizione. Le stanze possono essere collegate ad altre stanze, una per ognuno dei punti cardinali (nord, sud, est, ovest). Inoltre, ogni stanza può contenere un certo numero (potenzialmente illimitato) di oggetti. Ogni personaggio è controllato da un giocatore. Un personaggio può possedere degli oggetti (anch'essi in numero potenzialmente illimitato) e può trovarsi in uno di due stati: on-line o off-line. Se è on-line si trova virtualmente in una delle stanze del gioco, e può compiere una delle seguenti azioni: prendere un oggetto che sta nella stanza; lasciare nella stanza un oggetto che si possiede; spostarsi su una stanza adiacente. Se è off-line è fuori dal gioco, ma conserva tutti gli oggetti che possiede. L'applicazione deve avere due sezioni distinte: una riservata agli amministratori, accessibile solo tramite password, ed una pubblica. Quella riservata serve a creare gli oggetti del gioco (stanze, oggetti e personaggi), quella pubblica per giocare. Esaminiamo prima la parte pubblica. Un utente che si collega al sito può scegliere uno dei personaggi che sono al momento off-line. Il personaggio diventa on-line e l'utente inizia a controllarlo. Si può spostare da una stanza all'altra, raccogliere e lasciare oggetti. Quando il personaggio entra in una nuova stanza, il gioco deve visualizzare la descrizione della stanza, e l'elenco degli oggetti e degli altri personaggi che si trovano in quella stanza. Deve essere possibile per il giocatore conoscere l'elenco degli oggetti in suo possesso e vedere la descrizione dettagliata degli oggetti e dei personaggi nella stanza. Quando l'utente non vuole più giocare, può rimettere off-line il personaggio. Ogni personaggio va automaticamente off-line se non è usato da almeno 10 minuti. Nella parte privata deve essere possibile creare, modificare e cancellare stanze, oggetti e personaggi. Deve essere possibile specificare la posizione iniziale dei nuovi oggetti e i collegamenti tra le stanze.
|
Il problema che non riesco proprio a risolvere è come mandare automaticamente un personaggio off-line dopo dieci minuti che non lo uso pìù(e secondo me non usare più signigica che non viene ricaricata la pagina).
Se c'è qualcuno che oltre a risolvere questo problema volesse aiutarmi anche con il resto del sito sarei molto grata. Contattatemi e vi invio quello che ho scritto fino ad ora.
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
e semplice metti un refresh della pagina impostato a 10 minuti
se entro 10 minuti non cambia camera o esegue qualche azione invii un parametro nel refresh del tipo
index.php?act=disconnect
se nel get act e presente disconnect allora elimini il coockie semplice.
|
|
lalla_4 (Normal User)
Newbie
Messaggi: 12
Iscritto: 14/01/2009
|
Scusa l'ignoranza ma non ho idea di cosa sia un refresh!!
Puoi scrivermi il codice che dovrei inserire?
|
|
matteoiamma (Member)
Pro
Messaggi: 74
Iscritto: 18/06/2008
|
Codice sorgente - presumibilmente PHP |
<?php //ECCO IL REFRESH header("location: index.php?act=noact", 600 ); //Messaggio se l'utente non fa niente if ($_GET['act'] == "noact"){ echo "Messaggio"; } ?>
|
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
esattamente come ha scritto matteo.
segui quel codice ma al posto di 600 scrivi 10000 dovrebbe equivalere a 10minuti
fai una prova.
|
|
lalla_4 (Normal User)
Newbie
Messaggi: 12
Iscritto: 14/01/2009
|
Scusate ma allora il cookie non va da nessuna parte?
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
Emh? cmq per fare un gioco del genere in browser
credo che dovresti approfondire di più il tuo php/sql/html
questa è una bazzecola difronte ai problemi che incontrerai.
Codice sorgente - presumibilmente PHP |
<?php //ECCO IL REFRESH header("location: index.php?act=noact", 600 ); //Messaggio se l'utente non fa niente if ($_GET['act'] == "noact"){ //qui elimini il coockie } ?>
|
per eliminare il coockie basta inserire nel coockie stesso un valore nullo
oppure semplicemente crei un coockie con autodistruzione
del tipo in un determinato asso di tempo si autocancella.
|
|
lalla_4 (Normal User)
Newbie
Messaggi: 12
Iscritto: 14/01/2009
|
Veramente non ci crederai ma questo è l'unico problema che non sono riuscita a risolvere sino ad ora e non ci riesco ancora.
Ti invio i file che dovrebbero riguardare il problema...fammi vedere dove inserire il refresh perchè io proprio non l'ho capito.
Il file principale è index.html, da lì passo a pubblico.php e da qui vengo reindirizzaro a giocare.php dove rimago finchè voglio giocare. Quando non voglio giocare più clicco su "Torna off-line",cioè richiamo logaut.php che mi riporta a index.html
Ultima modifica effettuata da lalla_4 il 13/05/2009 alle 19:42 |
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
allora guarda puoi fare semplicemente in questo modo
nella pagina del login
quando effettua il login setta il coockie seguendo questo esempio
Codice sorgente - presumibilmente Plain Text |
<?php
setcookie("nome_coockie", "a", time()+600);
?>
|
in giocare.php nelle prime righe dove includi i file di configurazione
Codice sorgente - presumibilmente PHP |
<?php require 'error.php'; require 'config.php'; //Condizione per verificare se il coockie esiste if (isset($_COOKIE['nome_coockie'])) { echo "Coockie esiste"; //quindi qui andrà inserito tutto il codice php e html di tutto il sito web ?>
|
alla fine di tutto il sito web prima di chiudere il tag finale
per terminare il php inserisci questo
Codice sorgente - presumibilmente PHP |
<?php } else { echo "Sessione Scaduta, Si prega di rieffettuare il login..."; exit(); } ?>
|
prova e fammi sapere
per provare, cambia il tempo del coockie in 30 invece di 600
così invece di aspettare 10 minuti aspetti 30 secondi
dovrebbe andare perfettamente.
non l'ho testato ma dovrebbe funzionare.
|
|