Diferència entre revisions de la pàgina «ASIX-M3-UF2-A2.2-Pràctiques recursivitat»

De wikiserver
Dreceres ràpides: navegació, cerca
(Es crea la pàgina amb «==Buscamines== Cal dissenyar i implementar el joc del “Buscamines”, tenint en compte les següents consideracions: '''Introducció''' L'objectiu del Buscamines...».)
 
(Buscamines)
 
(Hi ha una revisió intermèdia del mateix usuari que no es mostren)
Línia 1: Línia 1:
==Buscamines==
 
  
Cal dissenyar i implementar el joc del “Buscamines”, tenint en compte les següents consideracions:
 
 
'''Introducció'''
 
 
L'objectiu del Buscamines és trobar totes les mines el més aviat possible, sense descobrir cap. Si es descobreix una mina, es perdrà la partida. Depenent del tauler que triï el jugador, es repartiran pel tauler un nombre de mines:
 
 
{|border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;"
 
|-
 
| 10x10|| 10 mines
 
|-
 
| 15x15|| 15 mines
 
|-
 
| 20x20|| 20 mines
 
|}
 
 
El joc comença demanant a l’usuari quin tipus de tauler vol. A partir d’aquí és col·loquen les mines i es mostra el tauler:
 
 
[[Fitxer:uf2_pract_recursivitat_2.png|400px|center Recursivitat]]
 
 
El símbol # indica que la casella no s’ha descobert.
 
 
El símbol X indicarà que s’ha marcat una mina.
 
 
A partir d’aquí comença a jugar indicant si vol marcar (‘M’) o descobrir (‘D’) i a quina posició (fila, columna).
 
 
En el cas que es descobreixi una casella que no tingui una mina s’haurà de:
 
 
* Si la casella no està contigua a cap mina, descobrir-se totes les caselles que estan buides i contigües a la casella descoberta (aquesta haurà de ser una funció recursiva, donat que al descobrir una casella s’haurà de tornar a executar per a totes les adjacents).
 
 
* Si la casella està contigua a alguna mina, indicar el nombre de mines que té aquesta casella a la seva al voltant.
 
 
[[Fitxer:uf2_pract_recursivitat_1.png|400px|center Recursivitat]]
 
 
Si es descobreix una casella que conté una mina, el joc ha de finalitzar.
 
 
Al final de la partida se li mostrarà el temps que ha fet.
 
 
Per a fer-ho cal utilitzar el següent codi:
 
<source lang="java">
 
Quan comenci a jugar, guardar l'hora actual:
 
 
  long inici = System.currentTimeMillis();
 
 
Quan acabi de jugar, guardar l'hora actual:
 
 
  long fi = System.currentTimeMillis();
 
</source>
 
 
I fer la resta. Cal tenir present que el temps està donat en mil·lisegons i per tant per mostrar els segons de joc cal dividir per 1000.
 
 
Ha de donar també la possibilitat de tornar a començar la partida.
 
 
'''Possibles millores'''
 
 
* Oferir la possibilitat de desmarcar una mina.
 
 
* Poder interrompre el joc durant la partida i no haver d’esperar al final per sortir.
 
del programa
 
 
* Mostrar una pantalla inicial d’Ajut /Introducció al joc, en la qual s’expliqui l’objectiu i el funcionament del joc.
 

Revisió de 10:12, 6 abr 2021