Morra cinese in Python

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

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

2 thoughts on “Morra cinese in Python

  1. 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?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *