J'ai ça :
+ Une "carte" de 3x3 lieux (pas aléatoire), que l'on visite en choisissant la direction cardinale.
- mais qui ne garde aucune mémoire des actes du perso. Chaque lieu est un pavé copié/collé qui ressemble à (plusieurs éléments sont seulement pour tester, ou des aides visuelles pour débug) :
Code:
def in_d10():
while True:
clean()
d10.connect(rien, e10, d11, rien)
print (" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print (" ")
print (" Vous êtes dans une forêt à flanc de montagne.")
print (" ")
print (" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print (" ")
print (Colour.CYAN + " Rencontres : " + Colour.END)
print (" !!!")
alea_fauna()
print (" !!!")
print (" ")
print (" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print (" ")
print (Colour.CYAN + " Spécificités du lieu : " + Colour.END)
print (" ")
print (" ")
print (" ")
print (" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print (" ")
print (Colour.CYAN + " Actions possibles : " + Colour.END)
print (" i - consulter l'inventaire")
print (" f - catalogue de la faune")
print (" p - catalogue de la flore")
print (" ")
print (Colour.CYAN + " Voyager : " + Colour.END)
print (" n - Au nord : {} ".format(d10.nord.name) + Colour.LPURPLE + "{}".format(d10.nord.desc) + Colour.END)
print (" s - Au sud : {} ".format(d10.sud.name) + Colour.LPURPLE + "{}".format(d10.sud.desc) + Colour.END)
print (" e - À l'est : {} ".format(d10.est.name) + Colour.LPURPLE + "{}".format(d10.est.desc) + Colour.END)
print (" o - À l'ouest : {} ".format(d10.ouest.name) + Colour.LPURPLE + "{}".format(d10.ouest.desc) + Colour.END)
print (" ")
print (Colour.CYAN + " Autres : " + Colour.END)
print (" ? - ouvrir une page d'aide ")
print (" q - quitter DraMu")
print (" ")
print (" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print (" ")
print (Colour.DARKCYAN + " Tapez la lettre correpondant à votre action, puis Entrée" + Colour.END)
option = input(Colour.DARKCYAN + " Votre choix -> " + Colour.END).lower()
if option == "c":
bad_input()
elif option == "b":
bad_input()
elif option == "i":
in_sac()
clean()
continue
elif option == "f":
in_fauna()
clean()
continue
elif option == "p":
in_flora()
clean()
continue
elif option == "n":
bad_input()
elif option == "s":
in_e10()
elif option == "e":
in_d11()
elif option =="o":
bad_input()
elif option == "?":
in_aide()
elif option == "q": #arrêter le programme et sortir
do_quit()
else:
bad_input()
+ Un système de sauvegarde et chargement basique, qui garde le nom et les attributs du perso
- mais pour le moment pas le reste (rencontres passées, lieu...)
+ À chaque lieu, une rencontre aléatoire non interactive pour le moment (ça pioche dans le bestiaire selon un résultat de dès)
- mais chaque fois que le perso fait un truc, genre ouvrir l'inventaire, ça rafraichi le lieu et la rencontre avec.
Je ne sais pas trop comment faire pour avoir une rencontre "stable", qui reste au moins tant que le perso n'a pas changer de lieu.
+ Un lieu Village avec arène, et une arène avec des options de combat (coup précis, rapide, lourd...) qui modifient les dégâts et la fatigue
- mais chaque fois à la place de faire un tour de combat et de redonner le choix d'attaque au joueur, ça retourne au village, et pas dans l'arène.
Cette arène me bloque pour le moment... L'arène seule fonctionnait, mais une fois mise avec le village et les options en tour de combat, ça foire.
Code:
def in_arena():
clean()
alter = (random.choice(FAUNA))
print (" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print (" ")
print (" {} (".format(ego.name) + Colour.GREEN + "{}".format(ego.matorg) + Colour.END + "|" + Colour.GREEN + "{}".format(ego.fougue) + Colour.END + ") vs {} (".format(alter.name) + Colour.GREEN + "{}".format(alter.matorg) + Colour.END + ")")
print (" ")
print (" {}".format(alter.desc))
print (" ")
print (" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print (" ")
print (" d - attaque directe * -5 fougue ")
print (" r - attaque rapide * + toucher, -10 fougue ")
print (" l - attaque lourde * - toucher, ++ dégâts, -15 fougue ")
print (" p - attaque précise * +++ toucher, +++ dégâts, -25 fougue ")
print (" ")
print (" a - attendre * +10 fougue ")
print (" ")
print (" f - fuir et abandonner le combat ")
print (" ")
print (" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print (" ")
print (Colour.DARKCYAN + " Touche Entrée pour une attaque directe" + Colour.END)
option = input(Colour.DARKCYAN + " Votre choix -> " + Colour.END).lower()
# ego.dead = False
# alter.dead = False
if option == "":
do_attack_directe()
elif option =="d":
do_attack_directe()
else:
bad_input()
# elif option == "r":
# do_attack_rapide()
# elif option == "l":
# do_attack_lourde()
# elif option == "x":
# do_attack_precise()
# elif option == "a":
# do_attack_wait()
# elif option == "f":
# bad_input()
def do_attack_directe():
if ego.matorg > 1:
ego_attack_directe()
alter_attack()
ego.fougue += ego.regen
else:
lose()
def ego_attack_directe():
cmbt_ftg = 5 # fatigue de combat, réduit la fougue
ego_alea = (1, 4, 9) # pifomètre pour tester un peu d'aléatoire, en attendant de travailler à l'équilibre des atributs
alter_alea = (2, 5, 10)
ego_off = (ego.nerf *3 + ego.fluide *2 + ego.chimie + ego.gaz) + (random.choice(ego_alea)) # Offense
alter_off = (alter.nerf *3 + alter.fluide *2 + alter.chimie + alter.gaz) + (random.choice(alter_alea))
ego_def = (ego.chimie *3 + ego.gaz * 2 + ego.nerf + ego.fluide) + (random.choice(ego_alea)) # Défense
alter_def = (alter.chimie *3 + alter.gaz *2 + alter.nerf + alter.fluide) + (random.choice(alter_alea))
ego_dmg = (ego.fluide *3 + ego.chimie *2 + ego.nerf + ego.gaz) + (random.choice(ego_alea)) # Dommages
alter_dmg = (alter.fluide *3 + alter.chimie *2 + alter.nerf + alter.gaz) + (random.choice(alter_alea))
ego_res = (ego.gaz *3 + ego.chimie * 2 + ego.nerf + ego.fluide) + (random.choice(ego_alea)) # Résistance
alter_res = (alter.gaz *3 + alter.chimie * 2 + alter.nerf + alter.fluide) + (random.choice(alter_alea))
# L'ego attaque toujours en premier. Si ego_offense >= alter_def, alors l'ego réussi son attaque. Autrement, l'alter attaque.
# Si ego_dmg >= alter_res, alors l'ego blesse l'alter. Ensuite c'est au tour de l'alter
print ("")
ego.fougue -= cmbt_ftg
print (ego.fougue)
if ego.fougue > 1:
if ego_off >= alter_def:
if (ego_dmg - alter_res) < 1:
alter.matorg -= 0
print (" Vous touchez et n'infligez " + Colour.PURPLE + "aucun dégâts " + Colour.END + "({} vs {}, {} vs {}) !".format(ego_off, alter_def, ego_dmg, alter_res))
else:
alter.matorg -= (ego_dmg - alter_res)
print (" Vous touchez et infligez " + Colour.GREEN + "{} dégâts ".format(ego_dmg - alter_res) + Colour.END + "à l'alter ({} vs {}, {} vs {}).".format(ego_off, alter_def, ego_dmg, alter_res))
else:
print (" Vous " + Colour.PURPLE + "ratez " + Colour.END + "votre coup ({} vs {}) !".format(ego_off, alter_def))
else :
print (" Trop fatigué")
pause(1)