Un piccolo gioco in python3.1, giusto per prenderci la mano con la chiamata di funzioni, le doctype e per mettere a frutto un'idea nata nel bus per fornire materiale all'Accademia :)
Vai all'ultima versione!
#! /usr/bin/env python3.1 # -*- coding: utf-8 -*- import sys import random def stampaCantiere(campo,pepita=None): # se passo la pepita allora deve controllare cella per cella # quale sia quella giusta dove metterla if pepita != None: for r in range(campo): for c in range(campo): if r == pepita[0] and c == pepita[1]: print("|X|",end='') else: print("|_|",end='') print() # altrimenti fai una stampa veloce # separo i due casi per evitare di eseguire sempre del codice molto pesante else: for i in range(campo): print("|_|"*campo) def trovaPepita(tent,campo): """\nCrea una matrice di dimensione campo*campo dove pone una 'pepita' in modo casuale attraverso la funzione randomint(), che bisognerà cercare di trovare per vincere. Se la distanza tra la 'cava' inserita e quella della pepita è di uno, ci avvertirà della vicinanza. Puo' essere invocato senza argomenti, nel caso in cui i valori di default saranno 6 tentativi e una matrice 6x6, altrimenti accetta due numeri dove il numero dei tentativi deve essere inferiore al numero delle cave.""" if tent>=campo*campo: exit(" Così non si puo' giocare! ") print("\n Benvenuto nella miniera di TuxErrante ! \n Sarò lieto di \ condividere con te il mio oro, a patto che tu riesca a trovarlo!\n \ Hai {0} cariche di esplosivo e {1} cave da esplorare. \n \ Sei pronto ? \n Ecco lo schema del cantiere \n".format(tent,campo*campo)) # prendi le coordinate della pepita casualmente tra 0 e la dimensione del campo-1 pepita=[random.randint(0,campo-1),random.randint(0,campo-1)] stampaCantiere(campo) # stampa il campo vuoto while tent>0: bangx = input("\n Inserisci le coordinate in cui vuoi piazzare la mina \ comprese tra [0 ..{}] \n x = ".format(campo-1)) bangy = input(" y = ") if not bangx.isnumeric() or not bangy.isnumeric(): print(" Inserisci delle coordinate numeriche per favore! \n") continue else: bangx, bangy = int(bangx), int(bangy) if bangx < 0 or bangx >= campo or bangy < 0 or bangy >= campo: print(" Per favore inserisci delle coordinate corrette ! \n \ Ricorda che quelli che hai in mano sono esplosivi !! \n") continue else: # coordinate inserite ammissibili if (pepita[0] == bangx) and (pepita[1] == bangy): # svela dove è la pepita ! print(" coordinate segrete {},{}".format(pepita[0],pepita[1])) stampaCantiere(campo,pepita) exit(" Complimenti!! L'hai trovata! Siamo ricchiiiii !!") else: # dice se si è lontani o meno dalla pepita tent -=1 if abs(pepita[0] - bangx) == 1 or abs(pepita[1] - bangy) == 1: print(" Ci sei vicino !!") else: print(" No, no, non ci siamo. \n") if tent >= 1: print(" Dai ritenta !!") else: print(" Peccato che abbia finito l'esplosivo !! \n Ecco dov'era :") stampaCantiere(campo,pepita) # chiamata della funzione principale # se viene chiamata senza argomenti gli verranno passati di default 6 e 6 # chiamare lo script con '-h' per vedere la documentazione if len(sys.argv) == 3: trovaPepita(int(sys.argv[1]), int(sys.argv[2])) elif len(sys.argv) == 2 and sys.argv[1] == '-h': print (trovaPepita.__doc__) else: trovaPepita(6,6)

0 commenti:
Posta un commento