Skip to content

Soluzione all'esame di "Introduzione alla Programmazione per il web" - giugno 2020 Università di Trento professore Ronchetti.

Notifications You must be signed in to change notification settings

Pater999/UNITN-programmazione-web-esame-giugno2020

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Programmazione web unitn - Soluzione esame giugno 2020

Testo esame

Si richiede di realizzare una versione on-line del gioco Minesweeper (descritto nel seguito). Si accede al gioco via web. Il gioco è individuale, ma il server web deve essere in grado di gestire tanti utenti simultanei (ciascuno gioca da solo, indipendentemente dagli altri).

  1. Operazioni lato WebServer: A. Inizio: Quando arriva un nuovo utente, gli viene offerta una videata iniziale che chiede il nome dell'utente (obbligatorio) e presenta un bottone “start” che è associato all'operazione “crea un nuovo gioco” B. Crea nuovo gioco:

    • definisce (server side) una matrice 9x9 di elementi. Chiameremo “cella” ciascuno di questi 81 elementi. La matrice viene definita nel seguente modo:
      1. a dieci celle scelte in modo random attribuisce il valore “bomba”.
      2. Per ognuna delle altre celle, conta quante celle bomba ci sono tra i suoi 8 vicini (2 in verticale, 2 in orizzontale, 4 in diagonale) – ovviamente le celle sul bordo hanno meno vicini – ed assume come proprio valore il risultato del conto. NOTA: in prima battuta può essere conveniente usare una matrice di prova predefinita e concentrarsi sul resto del compito, e solo successivamente generare dinamicamente la matrice corretta.
    • Manda al client la pagina mostrata all'inizio, comprendente:
      1. Un saluto che include il nome dell'utente
      2. una tabella composta da 9x9 elementi, ciascuno dei quali visualizza una cella senza però indicarne il valore (il valore delle celle inizialmente NON DEVE essere noto al client). Chiameremo questi elementi “CellaVisualizzata”.
      3. un bottone “Test” e due popup menu, in ciascuno dei quali scegliere un numero tra 1 e 9 (corrispondente a riga e colonna da testare).
      4. un bottone “Restart” che distrugge il gioco in corso e riporta l'utente alla videata iniziale.

    C. “getValue” con parametri i e j: Risponde ad una richiesta asincrona restituendo al client il valore della cella(i,j).

  1. Operazioni lato Client: a. Il bottone Test richiama in modo asincrono getValue con i parametri selezionati, e mostra il valore ottenuto in un campo della pagina (senza ricaricarla) b. Un click su una delle CelleVisualizzate richiama in modo asincrono (senza ricaricare la pagina) getValue con i parametri i e j corrispondenti alla posizione dell'elemento nella matrice, e mostra entro la CellaVisualizzata selezionata il valore (ottenuto dal server). Inoltre se il valore è “bomba”, viene mostrato un pop-up che dice “hai perso” e mostra un bottone “Restart” che crea una nuova partita (senza passare per la pagina iniziale di richiesta del nome all'utente, che viene mantenuto).
  1. Uso di CSS: si provveda ad usare i CSS per modificare la CellaVisualizzata, cambiandone l’aspetto a seconda che il suo valore sia ignoto, bomba o numerico.

Nota: il gioco terminerebbe con la vittoria quando tutti gli elementi “non bomba” sono stati scoperti, ma l’implementazione di questo requisito non è richiesta.

Alcuni screenshot della mia soluzione

Pagina iniziale
In gioco
Partita persa

Zip con il progetto

Potete scaricare lo zip con il progetto di Netbeans a QUESTO LINK.