Carta Forbice sasso
Si vuole realizzare un gioco in cui il computer esegue una sfida tra due giocatori. Il pc estrae valori casuali per i tre simboli disponibili ed esegue un confronto per calcolare il vincitore.
Questi i simboli disegnati con caratteri ASCII:
Carta:
_____
| |
| |
|_____|
Forbice:
\ /
\/
/\
o o
Sasso:
_
( )
(___)
Prima fase
Iniziare la programmazione scrivendo una struttura base del codice che poi completeremo in passaggi successivi. Il codice inizialmente sarà così strutturato:
import azione dei moduli randint e sleep per estrarre numeri casuali e rallentare l’esecuzione dell’estrazione:
from random import randint from time import sleep
creazione della lista carte[][] contenente i disegni ASCII, tre disegni separati su quattro linee:
carte=[[" _____ ","| |","| |","|_____|"], ["\ /"," \/ "," /\\ ","o o"], [" "," _ "," ( ) ","(___)"]]
estrazione di due valori casuali con randint(0,2):
plA=randint(0,2) plB=randint(0,2)
verifica tra i valori estratti per determinare il vincitore. La verifica deve essere eseguita tre volte. Ai valori 0,1,2 corrispondo i tre simboli
if plA==0: if plB==0: print("Patta") elif plB==1: print("Vince plB") else: print("Vince plA")
Seconda fase
In seguito aggiungeremo le istruzioni per far comparire i due simboli scelti:
for riga in range(4):
print(carte[plA][riga])
print()
for riga in range(4):
print(carte[plB][riga])
e le variabili necessarie a memorizzare i nomi dei giocatori e il punteggio:
plA_nome="Omar"
plA_punteggio=0
plB_nome="Sabrina"
plB_punteggio=0
In seguito a ciò, i l codice che esegue la verifica deve essere aggiornato inserendo le variabili appena create:
if plA==0:
if plB==0:
print("Patta")
elif plB==1:
print("Vince "+plB_nome)
plB_punteggio += 1
else:
print("Vince "+plA_nome)
plA_punteggio += 1
Se non si inserisce il codice dentro un ciclo che lo ripeta più volte, la partita verrà giocata una sola volta.
Dopo la definizione delle variabili aggiungere quindi un contatore, selezionare il codice ed indentarlo premendo TAB:
for count in range(100):
sleep(1) #pausa inserita per permettere la visualizzazione delle singole mani
.....
.....
else:
print("Vince "+plA_nome)
plA_punteggio += 1
Il programma termina visualizzando il punteggio totale:
print("Punteggio totale: ")
print(plA_nome+" : "+str(plA_punteggio))
print(plB_nome+" : "+str(plB_punteggio))
Aggiungere le seguenti istruzioni se si vuole che la shell venga pulita dopo ogni mano:
import os
os.system("clear")
Terza fase
Aggiungere un’animazione che mostra il mescolamento delle carte.
Quarta fase
Introdurre l’impiego degli oggetti per la creazione di giocatori e relative proprietà.