giochi sulla persistenza



Похожие документы
Laboratorio di Programmazione: Linguaggio C Lezione 9 del 27 novembre 2013

ThreeChess. Ovvero, come giocare a scacchi in tre

ThreeChess. Ovvero, come giocare a scacchi in tre.

Esercitazione gennaio 2018

Esercitazione gennaio 2015

lezione 3 Il paradigma a oggetti in PHP a conoscere il paradigma a oggetti in PHP a creare classi, metodi e proprietà a istanziare oggetti

Progetto: Dama. 1 - Descrizione. 2 - Regole del gioco. Appello di febbraio 2003

Advanced Scratch: Gatto Raccogli Stelle

Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori

Si gioca con due mazzi di carte francesi inclusi i jolly per un totale di 108 carte.

STRUTTURE DI CONTROLLO DEL C++

Regole dell Asso piglia tutto (o Scopa d assi)

Capitolo 1 Introduzione OOP Esercizi a casa

Esercizi su Scratch. Esegui la Somma e il Prodotto dei numeri inseriti in Input fino a che non inserisco la vocale e.

Le Regole del Gioco Elementi del Gioco

Giocatori: 2 6 Età: a partire da 6 anni Durata: ca 15 minuti

PER LEGGERE E SCRIVERE

Introduzione alla programmazione Esercizi risolti

CONTENUTO. 1 manuale istruzioni

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Modulo o Form in Html

Installazione di EasyPhp. Avviare EasyPhp. La finestra di amministrazione di EasyPhp

Prof. Pagani Corrado ALGORITMI ESERCITAZIONI CICLI

Programmazione web lato client con JavaScript. Marco Camurri 1

Pensiero computazionale. Lezione 3 Istruzioni condizionali Eventi, messaggi Variabili

Contenuto 100 carte (5 set di colori differenti con ognuno 20 carte) 36 gettoni fama con differenti valori (2x1,6x2,7x3,8x5,4x7,2x8 punti fama)

Compilazione rapporto di Audit in remoto

REGOLE DI BASE DEL GIOCO DEGLI SCACCHI

4. I moduli in Access 2000/2003

Documento di Analisi. Mockup

PHASE 10 GIOCO DA TAVOLO In più la plancia! più tensione! più PHASE 10! da 2-6 giocatori dai 10 anni in su Tutte le fasi (combinazioni di determinare

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

Traduzione e adattamento a cura di Gylas per Giochi Rari. Versione 1.1 Novembre

CONTENUTO. 1 manuale istruzioni. Con i ROLLING CUBES l unica cosa che conta davvero è divertirsi, e... vinca il migliore!!!

BeQ snc Modulo: Comunicazione operazioni rilevanti ai fini dell imposta sul Valore Aggiunto Guida Pratica

Regole della scala 40

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

PASCAL LA SELEZIONE: IF TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL. 1, HOEPLI. Informatica

ELEMENTI BASE DEL GIOCO

2.4. Creare ed operare con le query

Roberto Messa e Maria Teresa Mearini. il gioco degli MESSAGGERIE SCACCHISTICHE

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

LabView: Corso Base pag. 7

REGOLAMENTO. Modalità Autunno OBIETTIVO DEL GIOCO. contenuto PREPARAZIONE

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione

Roberto Messa e Maria Teresa Mearini. Il Gioco degli Scacchi

LIGHTSEEKERS TCG - REGOLE RAPIDE

Giulia Murgia e Giulia Maria Deidda PROGETTO SCRATCH: REBUS

Informatica Generale Homework di Recupero 2016

IL SET DI GIOCO PACRU, SERIE 302

Struttura di un applicazione Instant Developer

Транскрипт:

UdA 6 Applicazioni Web in PHP lezione 1 giochi sulla persistenza In questa lezione impareremo... ad applicare i campi nascosti, le sessioni e i cookies per realizzare semplici giochi Primo esempio: il gioco dell impiccato e i campi hidden In questa lezione di laboratorio vogliamo creare una semplice applicazione che legge i dati da un form e li invia alla pagina stessa secondo la tecnica del postback. In questo primo esempio (impiccato.php) per conservare i dati una volta inviati alla pagina stessa useremo i campi nascosti (hidden). Il funzionamento è abbastanza semplice, lo script riceve la scelta del carattere tramite un campo POST, la confronta con la parola segreta immessa all inizio dall avversario e invia a se stessa le statistiche riguardo al tentativo (numero di giocata, errori, stringa da visualizzare ecc.). La prima parte dello script verifica se la variabile segreta inviata in POST (che contiene la parola da indovinare) è stata settata secondo la tecnica postback (riga 5). Se si tratta del primo accesso viene mostrato il form (righe 9-17) che consente di immettere la parola segreta, come possiamo notare gli altri campi del form sono solo nascosti per consentire la persistenza delle informazioni: 2 P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, Ulrico Hoepli Editore S.p.A. 2014

Giochi sulla persistenza Lezione 1 Il codice successivo viene eseguito se si tratta del primo accesso nel quale non è stato ancora effettuato nessun tentativo da parte dell utente. Innanzi tutto viene salvata la parola segreta (riga 23) nella variabile $segreta. Vengono poi salvati anche gli altri campi POST ricevuti (righe 25-30). Se si tratta del primo tentativo (riga 32) viene creata la variabile $cript (righe 35-42) che conterrà la parola segreta coperta dagli asterischi nella parte non ancora indovinata: vengono regalati all utente il primo e l ultimo carattere. Dal primo tentativo effettuato viene eseguito il codice che assegna la parola segreta alla variabile $rimanente (riga 49). Il ciclo while successivo utilizza la variabile di comodo $finestr per forzarne l uscita dall interno (righe 50-78). In questo ciclo viene ricercata la parola che l utente immette ($giocata) nella parola $rimanente (riga 53) mediante la funzione stristr(). Se restituisce false e se la variabile che conta quanti elementi sono stati trovati sinora è diversa da zero incrementa il contatore degli errori (riga 58), in caso contrario viene aggiornata la variabile $crip e il conteggio dei caratteri trovati (righe 68-76). All uscita del ciclo vengono stampati i risultati parziali (righe 80-81). P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, Ulrico Hoepli Editore S.p.A. 2014 3

UdA 6 Applicazioni Web in PHP L ultima parte dello script verifica se la parola criptata è uguale alla parola segreta, in questo caso l utente ha vinto (righe 84-86). In caso contrario viene controllato se il numero di tentativi è uguale al limite massimo (riga 91): in questo caso l utente ha perso, altrimenti viene mostrato il form per l immissione del nuovo carattere da parte dell utente e dei dati di riepilogo parziale (righe 98-105). L esecuzione dello script è la seguente: 4 P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, Ulrico Hoepli Editore S.p.A. 2014

Giochi sulla persistenza lezione 1 Prova adesso! Utilizzare i campi nascosti Utilizzare la tecnica postback Utilizzare le sessioni APRI IL FILE impiccato.php Modifica il codice dello script in modo che i risultati parziali vengono resi persistenti mediante le sessioni invece che utilizzare i campi nascosti. Secondo esempio: la morra cinese e i cookies In questo secondo esempio (morra.php) utilizziamo i cookies per memorizzare i parziali dei risultati di una gara di morra cinese tra due utenti. Prima di tutto il codice prevede un controllo sull esistenza dei cookies necessari (righe 3-10). In caso negativo i cookies vengono creati (righe 6-7), le variabili necessarie al conteggio dei risultati vengono inizializzate (riga 8) e la pagina viene richiamata (riga 10). Se invece la pagina è stata già aperta almeno una volta vengono salvati i valori dai cookies nelle variabili $conta1 e $conta2 (righe 16-17), rispettivamente il contatore di vittorie del giocatore 1 e del giocatore 2. La generazione della scelta dell utente avviene casualmente per mezzo di un intero compreso tra 1 e 3, 0:sasso, 1:forbice, 2:carta (righe 22-23). Il codice che segue effettua i controlli per determinare il vincitore, la variabile $vincitore contiene il numero del vincitore, oppure zero in caso di pareggio: P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, Ulrico Hoepli Editore S.p.A. 2014 5

UdA 6 Applicazioni Web in PHP A questo punto vengono determinati i punteggi attraverso i cookies (righe 61-66), quindi vengono settati i nuovi punteggi nei cookies (righe 68-69). Successivamente viene stampato a video il form che mostra i risultati (righe 71-89), comprese le immagini della scelta effettuata (le immagini sono nella sottodirectory./img_morra). Se l utente preme il pulsante cancella vengono eliminati i cookies e riavviata la pagina (righe 91-95): Il codice mostra la tabella HTML visualizzata a fine pagina che contiene i pulsanti che inviano in postback i valori allo script (righe 98-102). Le ultime righe stampano il risultato parziale riguardo al vincitore della giocata (righe 105-108): 6 P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, Ulrico Hoepli Editore S.p.A. 2014

Giochi sulla persistenza Lezione 1 L esecuzione di una tipica situazione di gioco è la seguente: Terzo esempio: bim bum bam e le sessioni In questo terzo esempio (bimbumbam.php) vogliamo simulare il gioco del bim bum bam (chiamato anche gioco del pari o dispari) con il PC. Le variabili di sessione vengo usate per memorizzare i risultati rendendole persistenti tra una giocata e la successiva. Prima di tutto vengono attivate le sessioni (riga 2). Per verificare se si tratta del primo accesso Inizio del gioco) vengono verificate le variabili di sessione cont1 e cont2 (righe 3-5) ed eventualmente inizializzate. Se non è stata settato il campo POST chiamato scelta viene mostrato il riepilogo dei risultati (righe 10-11) e il form necessario per la scelta della giocata (righe 13-25). Il form invia in postback la scelta dell utente (pari o dispari - o oppure 1 - e numero da 1 a 5): P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, Ulrico Hoepli Editore S.p.A. 2014 7

UdA 6 Applicazioni Web in PHP Se invece la giocata è stata effettuata viene eseguito il ramo else dell if sulla variabile POST scelta (righe 30-82). Inizialmente viene mostrato il riepilogo dei risultati (riga 31), quindi viene salvato il numero scelto dall utente (riga 32) e la scelta effettuata (riga 34). Dopo aver stampato le scelte dell utente (righe 35-40) viene generato il numero random che simula la scelta del pc (riga 41). Adesso possiamo verificare chi ha vinto confrontando la somma dei numeri con la scelta dell utente (righe 43-57). Il form che viene mostrato consente di continuare nel gioco (riga 58). Il controllo prevede che se il risultato ($ris) è uguale alla scelta effettuata (riga 59) dall utente viene mostrato il messaggio di vittoria (riga 61) o di sconfitta (riga 66) parziale oltre al settaggio delle variabili di sessione che tengono conto dei risultati (riga 62 e riga 67): L ultima parte del codice in base ai valori delle variabili di sessione determina il vincitore globale, cioè chi ha vinto almeno 5 mani: 8 P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, Ulrico Hoepli Editore S.p.A. 2014

Giochi sulla persistenza Lezione 1 L esecuzione è indicata di seguito: P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, Ulrico Hoepli Editore S.p.A. 2014 9

UdA 6 Applicazioni Web in PHP Verifichiamo le competenze g Problemi 1 Realizzare una applicazione in PHP per simulare il gioco del Spock o Lizard. Si tratta di una variante della morra cinese in cui i simboli sono cinque: sasso, forbici, carta, Lizard e Spock. Ovviamente aumentano le combinazioni possibili co lo scopo di diminuire i pareggi. Le nuove combinazioni diventano dunque: Le forbici tagliano la carta La carta avvolge il sasso Il sasso rompe le forbici Le forbici decapitano Lizard Lizard mangia la carta La carta invalida Spock Spock vaporizza il sasso Il sasso schiaccia Lizard Lizard avvelena Spock Spock rompe le forbici 2 Modifica il gioco precedente per consentire di giocare tra due giocatori umani. 3 Realizzare una applicazione in PHP per simulare il gioco dei fiammiferi. Ci sono 11 fiammiferi e i due giocatori a turno possono levare da 1 a 3 fiammiferi per ciascuna giocata. Perde l utente che toglie l ultimo fiammifero. Anche in questo caso possiamo effettuare la partita tra un giocatore umano ed il computer, oppure tra due giocatori entrambi umani. 4 Realizzare una applicazione in PHP per simulare il gioco delle monete. Ci sono 21 monete su di un tavolo e i due giocatori, a turno, possono scartare da 1 a 3 monete. In questo caso vince chi scarta l ultima moneta. Anche in questo caso possiamo effettuare la partita tra un giocatore umano ed il computer, oppure tra due giocatori entrambi umani. 5 Realizzare una applicazione in PHP per simulare il gioco della dama ad una dimensione. In questo caso vince chi scarta l ultima moneta. La scacchiera è formata, come possiamo vedere nell immagine seguente, da 6 caselle poste in fila. I due giocatori dispongono di una pedina ciascuno, quest ultime collocate agli estremi della scacchiera. Alla prima mossa il giocatore muove la pedina di 1 o 2 posizioni, mentre nelle successive solo di una posizione. Quando la casella successiva è occupata dalla pedina dell avversario, il giocatore deve scavalcarla. Vince chi riesce a collocare per primo la sua pedina all altra estremità della scacchiera, purché il suo avversario non lo faccia alla mossa successiva. In quest ultimo caso infatti la partita termina con un pareggio. 10 P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, Ulrico Hoepli Editore S.p.A. 2014

Giochi sulla persistenza Lezione 1 6 Realizzare una applicazione in PHP per simulare il gioco della dama a 6 pedine. La scacchiera è di dimensione 3x3 e ciascun giocatore dispone di 3 pedine, come mostrato nella seguente immagine: I giocatori effettuano 2 soli tipi di mossa, alternativamente: una pedina avanza di un quadrato fino a un quadrato vuoto una pedina cattura la pedina nemica muovendosi in diagonale di un quadrato, a destra o a sinistra. Il giocatore vince quando: una pedina raggiunge la riga dell avversario cattura tutti i pezzi avversari; 7 Realizzare una applicazione in PHP per simulare il gioco dello Star Nim. I due giocatori tolgono a turno uno dei 9 gettoni posti ai vertici di una stella a nove punte, come illustrato dall immagine seguente: Il primo giocatore sceglie il gettone da togliere tra i 9 presenti, successivamente però possono essere levati solo i gettoni che risultano uniti da un segmento di retta al gettone eliminato. Vince il giocatore che prende l ultimo gettone. P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, Ulrico Hoepli Editore S.p.A. 2014 11