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

De wikiserver
Dreceres ràpides: navegació, cerca
(Buscamines)
 
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="python">
 
import time
 
 
Quan comenci a jugar, guardar l'hora actual:
 
 
inici = time.strftime("%H:%M:%S") # Format 24 hores  (time.strftime("%I:%M:%S") #Formato de 12 horas)
 
 
Quan acabi de jugar, guardar l'hora actual:
 
 
fi = time.strftime("%H:%M:%S") # Format 24 hores
 
 
# si volem calcular el temps transcorregut: time.time()
 
# Cal tenir present que el temps està donat en mil·lisegons i per tant per mostrar els segons de joc cal dividir per 1000.
 
</source>
 
 
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