
Vogliamo sviluppare il gioco della morra cinese in Python, conosciuto anche come carta, forbice o sasso.
Ci siamo divertiti a creare questo gioco anche con Scratch. Chi vuole può dunque consultare la guida al link: morra cinese con Scratch.
Come si gioca
Innanzitutto ricordiamo le regole del gioco!
In questo gioco ci sono due giocatori e ciascuno può quindi scegliere un oggetto: forbice (f), sasso (s) o carta (c).
Sasso si rappresenta con la mano a pugno;
Carta si rappresenta con la mano aperta;
Forbice invece si rappresenta con soli indice e medio distesi.
Dunque chi vince? È piuttosto semplice:
Il sasso batte la forbice (cioè la rompe);
La forbice batte la carta (cioè la taglia);
La carta batte il sasso (cioè lo avvolge).
Se si sceglie lo stesso oggetto allora il punteggio è pari.
Implementazione della morra cinese in Python
Innanzitutto facciamo giocare il computer e per questo utilizziamo il metodo randint(), che genera un numero random intero in un intervallo specificato tra le parentesi tonde.
Ad esempio randint(0,2) genera un numero random tra 0 e 2.
Adesso pensiamo di associare arbitrariamente:
0 a sasso;
1 a forbice;
2 a carta;
Chiaramente potevamo decidere diversamente!
Quindi impostiamo queste condizioni, solo per rendere più facile fare il controllo successivamente:
if computer==0: computer=‘s’
elif computer==1: computer=‘f’
else: computer=‘c’
All’utente facciamo quindi decidere cosa scegliere inserendo un valore: c, s oppure f.
utente=input(‘Inserisci c per carta, s per sasso ed f per forbice: ‘)
Dopo facciamo i controlli in base alle regole spiegate sopra.
Ecco dunque una possibile implementazione del gioco della morra cinese in python:
import random
print(‘Ciao, oggi giochiamo a morra cinese’)
computer=random.randint(0,2)
if computer==0: computer=‘s’
elif computer==1: computer=‘f’
else: computer=‘c’
utente=input(‘Inserisci c per carta, s per sasso ed f per forbice: ‘)
if utente!=‘s’ and utente!=‘f’ and utente!=‘c’:
print(‘La lettera non corrisponde a nulla’)
elif utente==computer:
print(‘parità!’)
elif utente==‘s’ and computer==‘f’ or utente==‘f’ and computer==‘c’ or utente==‘c’ and computer==‘s’:
print(‘Hai vinto!’)
else:
print(‘Ha vinto il computer!’)
N. B. Nel caso della parità, al posto di
elif utente==’s’ and computer==’s’ or utente==’c’ and computer==’c’ or utente==’f’ and computer==’f’:
potremmo semplificare e scrivere:
elif utente==computer:
Quando affronteremo le liste proporrò un’altra possibile soluzione al gioco della morra cinese in Python.
Alcuni link utili
Indice tutorial sul linguaggio Python
1 – Introduzione al linguaggio Python
2 – Le variabili
3 – Operatori aritmetici e di assegnazione
4 – Stringhe
5 – Casting
6 – Input e print
8 – Errori in Python
9 – Script Python
10 – Scambio di variabili
elif utente==‘s’ and computer==‘f’ or utente==‘f’ and computer==‘c’ or utente==‘c’ and computer==‘s’:
print(‘Hai vinto!’)
–> Qui non servono le parentesi tra le condizioni in AND?
L’and ha la precedenza sull’or, dunque non sono necessarie!