Libertà vo cercando, ch'è sì cara, come sa chi per lei vita rifiuta

Categoria: game

[Python3.1] Trova la pepita 2.0 !

Ed ecco la seconda versione del gioco più appasionante del momento!
Tutti lo vogliono!
Migliorato con la collaborazione di Risca.
Controlla che sia ancora l’ultima versione qui !

  • Migliorata grafica schema;
  • risolto problemi di rilevamento vicinanza alla pepita;
  • inseriti indici numerici del campo;
  • memorizzazione e visualizzazione dei tentativi falliti;
  • eliminata la possibilità di fare più volte lo stesso errore;

 

#! /usr/bin/env python3.1
# -*- coding: utf-8 -*-
"""
Gioco dimostrativo creato per l'Accademia debianizzati.

Copyright 2011 risca
Copyright 2011 TuxErrante

GPLv2 or later

"""

import sys
import random

errore = []
benvenuto = "\n \n \n \n \n \nBenvenuto nella miniera TuxErrante & Risca co.!\n\
Sarò lieto di condividere con te il nostro oro, a patto che \
tu riesca a trovarlo!\n\
Hai {0} cariche di esplosivo e {1} cave da esplorare.\n\
Sei pronto?\nEcco lo schema del cantiere\n"
#pepita = [-10, -10]
def stampaCantiere(campo,pepita=[-10,-10], errore=[]):
# se passo la pepita allora deve controllare cella per cella
# quale sia quella giusta dove metterla
print("-"*50)
print(" ", end=' ')
for i in range(campo):
if i < 9:
print("{} ".format(i+1), end=' ')
else:
print("{}".format(i+1), end=' ')
print()
for r in range(campo):
if r < 9:
print(' {}'.format(r + 1), end=' ')
else:
print(r + 1, end=' ')
for c in range(campo):
if [r , c] in errore:
print(" O ",end='')
elif r == pepita[0] and c == pepita[1]:
print(" X ",end='')
else:
print(" . ",end='')
print() # manda a capo per ogni nuova riga



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. \n
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(benvenuto.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 [1 ..{}] \n x = ".format(campo))
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)
bangx -= 1
bangy -= 1
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,errore)
exit(" Complimenti!! L'hai trovata! Siamo ricchiiiii \n \
Ci devi una percentuale, ricordatelo!!")
elif ([bangx,bangy] in errore):
print(" errare è umano perseverare è diabolico!")
continue
else: # dice se si è lontani o meno dalla pepita
tent -=1
errore.append([bangx, bangy]) # inserisco nella lista errori
print("\n")
stampaCantiere(campo,[-10,-10],errore)
testX = abs(pepita[0] - bangx)
testY = abs(pepita[1] - bangy)
if (testX == 1 or testX == 0) and (testY == 1 or testY == 0):
print(" Ci sei vicino !!")
else:
print(" No, no, non ci siamo. \n")
if tent >= 1:
print(" Dai ritenta !!")
else:
print("\n Peccato che abbia finito l'esplosivo !!\n Ecco dov'era :")
stampaCantiere(campo,pepita,errore)




# 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)

  • puoi trovarlo anche qui

[Python3.1] Trova la pepita !

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)



Powered by WordPress & Theme by Anders Norén