Forum
>>
Programmazione Python
>>
Videogames
>>
Sistema combattimento random
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da erik84 |
2019-02-13 13:05:35 - Sistema combattimento random
|
Ciao son di nuovo qui, stavo seguendo un tutorial che mostrava come eseguire un mini game di combattimento testuale, ma mi ritrovo con degli errori, ho provato a risolverli ma senza successo. Questo e il codice:
#!/usr/bin/python # -*- coding: UTF-8 -*- import sys import os import random class Player: def __init__(self, nome): self.nome = nome self.maxvita = 100 self.vita = self.maxvita self.attacco = 10 self.oro = 0 self.poz = 0 class Goblin: def __init__(self, nome): self.nome = nome self.maxvita = 50 self.vita = self.maxvita self.attacco = 5 self.orolasciato = 10 GoblinID = Goblin("Goblin") class Zombie: def __init__(self, nome): self.nome = nome self.maxvita = 70 self.vita = self.maxvita self.attacco = 7 self.orolasciato = 15 ZombieID = Zombie("Zombie") def main(): os.system('clear') print ("Benvenuto in questa fantastica avventura!\n") print ("1.) Inizio") print ("2.) Carica") print ("3.) Esci") scelta = input(">") if scelta == "1": inizio() elif scelta == "2": pass elif scelta == "3": sys.exit() else: print("Comando invalido, riprova.") main() def inizio(): os.system('clear') print ("Ciao, qual'è il tuo nome?") scelta = input("> ") global PlayerID PlayerID = Player(scelta) inizio1() def inizio1(): os.system('clear') print ("Nome: %s" % PlayerID.nome) print ("Attacco: %i" % PlayerID.attacco) print ("Oro: %d" % PlayerID.oro) print ("Pozioni: %d" % PlayerID.poz) print ("Vita: %i/%i" % (PlayerID.vita, PlayerID.maxvita)) print ("1.) Combattimento") print ("2.) Inventario") print ("3.) Salva") print ("4.) Esci") scelta = input("> ") if scelta == "1": precombattimento() elif scelta == "2": inventario() elif scelta == "3": pass elif scelta == "4": sys.exit() else: inizio1() def precombattimento(): global nemico nemiconum = random.randint(1, 2) if nemiconum == 1: nemico = GoblinID else: nemico = ZombieID combattimento() def combattimento(): os.system('clear') print ("%s vs %s" % (PlayerID.nome, nemico.nome)) print ("%s's Vita: %d/%d %s's Vita: %i/%i" %(PlayerID.nome, PlayerID.vita, PlayerID.maxvita, nemico.nome, nemico.vita, nemico.maxvita)) print ("Pozioni %i " % PlayerID.poz) print ("1.) Attacco") print ("2.) Bevi pozione") print ("3.) Scappa") scelta = input("> ") if scelta == "1": attaccodef() elif scelta == "2": bevipot() elif scelta == "3": scappa() else: combattimento() def attaccodef(): os.system('clear') PAttacco = random.randint(PlayerID.attacco/2, PlayerID.attacco) NAttacco = random.randint(nemico.attacco/2, nemico.attacco) if PAttacco == PlayerID.attacco/2: print ("L'hai mancato!") else: nemico.vita -= PAttacco print ("Hai colpito e fatto %i danni!" % PAttacco) scelta = input("> ") if nemico.vita <= 0: vittoria() os.system('clear') if NAttacco == nemico.attacco/2: print ("Il nemico ti ha mancato!") else: PlayerID.vita -= NAttacco print ("Il nemico ti ha causato %i danni!" % NAttacco) scelta = input("> ") if PlayerID.vita <= 0: morte() else: combattimento() def bevipot(): os.system('clear') if PlayerID.poz == 0: print ("Tu non hai pozioni da usare!") else: PlayerID.vita += 50 if PlayerID.vita > PlayerID.maxvita: PlayerID.vita = PlayerID.maxvita print ("Hai bevuto una pozione!") scelta = input("> ") combattimento() def scappa(): os.system('clear') scappanum = random.randint(1, 3) if scappanum == 1: print ("Sei riuscito a scapapre!") scelta = input("> ") inizio1() else: print ("Hai fallito, non sei riuscito a scapare!") scelta = input("> ") os.system('clear') NAttacco = random.randint(nemico.attacco/2, nemico.attacco) if NAttacco == nemico.attacco/2: print ("Il nemico ti ha mancato!") else: PlayerID.vita -= NAttacco print ("Il nemico ti ha causato %i danni!" % NAttacco) scelta = input("> ") if PlayerID.vita <= 0: morte() else: combattimento() def morte(): os.system('clear') print ("Sei morto") scelta = input("> ") main() def vittoria(): os.system('clear') nemico.vita = nemico.maxvita PlayerID.oro += nemico.orolasciato print ("Tu hai sconfitto %s" % nemico.nome) print ("Tu hai recuperato %i oro" % nemico.orolasciato) scelta = input("> ") inizio1() def inventario(): os.system('clear') pass main()Questo e il log dell'errore: premetto che sto usando un emulatore di python sul cellulare, ma vedo che mi da lo stesso errore su PC, sia con Linux che Windows Traceback (most recent call last): File "/storage/emulated/0/qpython/projects3/.last_tmp.py", line 188, in <module> main() File "/storage/emulated/0/qpython/projects3/.last_tmp.py", line 42, in main inizio() File "/storage/emulated/0/qpython/projects3/.last_tmp.py", line 57, in inizio inizio1() File "/storage/emulated/0/qpython/projects3/.last_tmp.py", line 72, in inizio1 precombattimento() File "/storage/emulated/0/qpython/projects3/.last_tmp.py", line 89, in precombattimento combattimento() File "/storage/emulated/0/qpython/projects3/.last_tmp.py", line 101, in combattimento attaccodef() File "/storage/emulated/0/qpython/projects3/.last_tmp.py", line 112, in attaccodef NAttacco = random.randint(nemico.attacco/2, nemico.attacco) File "/data/user/0/org.qpython.qpy3/files/lib/python32.zip/random.py", line 215, in randint File "/data/user/0/org.qpython.qpy3/files/lib/python32.zip/random.py", line 179, in randrange ValueError: non-integer arg 1 for randrange() 1|HWVNS-H:/ $ EDIT: ehm avrei risolto per il momento, ho sostituito "random.randrange" o "random.randint" com'era nel tutorial con "random.uniform" e sembra funzionare correttamente, può essere una cosa legata alla versione di python? magari il ragazzo che ha fatto il tutorial usava una vecchia versione il video risale al 2016 --- Ultima modifica di erik84 in data 2019-02-13 20:58:32 --- --- Ultima modifica di erik84 in data 2019-02-13 20:59:43 --- |
Pagina: 1
Esegui il login per scrivere una risposta.