ASIX-M3-UF2-A2.2-Pràctiques recursivitat

De wikiserver
Dreceres ràpides: navegació, cerca

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:

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:

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.

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:

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.

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.