libri-javascript-python

In questa lezione sviluppiamo 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.

Nell’ambito della programmazione ludica, la Morra Cinese, nota anche come “carta, forbice, sasso”, si presenta come un gioco coinvolgente. In questa lezione, esploreremo come implementare questo gioco utilizzando il linguaggio Python, offrendo un’esperienza interattiva e stimolante.

Disponibile il libro su Python “50 Algoritmi per imparare Python”


Come si gioca

Prima di immergerci nella codifica, è importante comprendere le regole del gioco. In Morra Cinese, due giocatori fanno una scelta tra tre oggetti: forbice (rappresentata dalla mano con indice e medio distesi), sasso (rappresentato da un pugno chiuso) o carta (rappresentata da una mano aperta). Le dinamiche di vittoria sono semplici:

  • Il sasso batte la forbice (la rompe).
  • La forbice batte la carta (la taglia).
  • La carta batte il sasso (lo avvolge).
  • Se entrambi i giocatori scelgono lo stesso oggetto, il risultato è un pareggio.


Implementazione della morra cinese in Python

Passiamo ora alla parte pratica, implementando il gioco utilizzando Python. Inizieremo facendo giocare il computer. Per farlo, useremo la funzione randint() del modulo random, che ci consente di generare un numero casuale tra un intervallo specificato, nel nostro caso tra 0 e 2.

Supponiamo dunque che ci sia questa corrispondenza:

  • il numero 0 corrisponde a sasso;
  • 1 corrisponde a forbice;
  • 2 corrisponde a carta;

Chiaramente è possibile cambiare a piacimento questa corrispondenza. In ogni caso, utilizzare questa assegnazione ci semplifica notevolmente il controllo delle corrispondenze.

Ecco dunque il nostro algoritmo della morra cinese in Python:

import random

print('Benvenuto nella Morra Cinese!')

computer = random.randint(0, 2)

if computer == 0:
    computer_choice = 'sasso'
elif computer == 1:
    computer_choice = 'forbice'
else:
    computer_choice = 'carta'

player_choice = input('Inserisci s per sasso, f per forbice o c per carta: ')

if player_choice not in ['s', 'f', 'c']:
    print('Scelta non valida!')
elif player_choice == computer_choice:
    print('Pareggio!')
elif (player_choice == 's' and computer_choice == 'forbice') or (player_choice == 'f' and computer_choice == 'carta') or (player_choice == 'c' and computer_choice == 'sasso'):
    print('Hai vinto!')
else:
    print('Ha vinto il computer!')

Il seguente algoritmo importa il modulo random per generare numeri i casuali. Quindi uilizza la funzione randint(0, 2) per generare un numero casuale tra 0 e 2.

Dopo associamo il numero generato a una delle opzioni del gioco (sasso, forbice o carta) utilizzando una serie di istruzioni if-elif-else. Quindi chiediamo all’utente di inserire la propria scelta utilizzando le lettere ‘s’, ‘f’ o ‘c’ per rappresentare rispettivamente sasso, forbice o carta.

Controlliamo poi se la scelta del giocatore è valida, ossia se corrisponde a una delle opzioni consentite. Se la scelta non è valida, stampiamo un messaggio di avviso e terminiamo il gioco. Altrimenti, procediamo con la verifica delle scelte.

Se dunque entrambi i giocatori scelgono la stessa opzione, il risultato è un pareggio e stampiamo un messaggio appropriato. Altrimenti, controlliamo le combinazioni possibili di scelte per determinare il vincitore:

  • Se la scelta del giocatore batte la scelta del computer secondo le regole della Morra Cinese, il giocatore vince e stampiamo un messaggio di vittoria.
  • Altrimenti, il computer vince e stampiamo un messaggio appropriato.

Conclusioni

In questa lezione abbiamo sviluppato un algoritmo sulla Morra Cinese in Python. Questo algoritmo utilizza le istruzioni condizionali e il modulo random per implementare in modo efficace le regole del gioco della Morra Cinese. È un esempio pratico di come la programmazione può essere utilizzata per creare giochi divertenti e interattivi.

Continuando a praticare con esercizi come questo, possiamo migliorare le nostre capacità di programmazione e ampliare il nostro bagaglio di conoscenze in Python.

Incoraggio tutti a sperimentare ulteriormente con il codice, apportando modifiche e aggiunte per personalizzare e arricchire l’esperienza di gioco. Il processo di sperimentazione è essenziale per il nostro apprendimento e ci consente di scoprire nuove tecniche e approcci nella programmazione. Continuiamo a esplorare e a divertirci con Python nelle prossime lezioni!

Alcuni link utili

Corso in diretta su Python

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