M3 - Programació estructurada / Exercicis UF2: Mastermind

De wikiserver
Dreceres ràpides: navegació, cerca

Escriviu un programa que jugui al joc del mastermind. El programa genera quatre dígits aleatoris entre 0 i 9. L’objectiu del joc és encertar els quatre dígits així com les seves posicions en el mínim nombre de jugades possibles. Cada vegada el jugador introdueix quatre dígits i el programa respon amb una pista, dient el nombre d’encerts i d’aproximacions. Un dígit es considera encertat quan existeix en aquella posició, mentre que una aproximació representa un dígit que existeix però no està ben col·locat. Per no complicar el joc, cal controlar que els quatre dígits que es generen siguin tots diferents.

Com del que es tracta és de fer disseny descendent, podem veure el programa principal d’aquesta forma (aproximadament).

Programa Mastermind
  declaració de variables
  inicialitzacions
  generar_jugada_maquina
  Mentre (no final) fer
    llegir_jugada_jugador
    trobar_numero_encerts
    trobar_numero_aproximacions
  fmentre
fPrograma
  • Variables que necessitarem com a mínim:
-Dues taules de quatre números per guardar la jugada de la màquina i del jugador
-Dues variables que ens guardin el número d’encerts i d’aproximacions.
-Seria convenient una variable que ens compti el número de jugades que ha fet el jugador, de forma que si és un inútil i no encerta mai, el programa acabi després d’un cert nombre d’intents.
  • Funcions que necessitem:
- generar_jugada_maquina (maquina)
Ens crea la jugada de la màquina amb nombres aleatoris entre 0 i 9. Cal controlar que no hi hagin números repetits.
- llegir_jugada_jugador (jugador)
Simplement s’ha de llegir de teclat els quatre valors i posar-los a la taula
- final (encerts)
En principi aquesta funció només seria certa quan el nombre d’encerts fos igual a 4 però com he dit abans seria interessant acabar en un nombre de jugades determinat. Si ho féu així, s’ha de passar com a paràmetre el nombre de jugades actual.
- trobar_numero_encerts (maquina, jugador)
Calcula i retorna el nombre d’encerts de la jugada actual
- trobar_numero_aproximacions (maquina, jugador)
Calcula i retorna el nombre d’aproximacions de la jugada actual