You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
5.7 KiB
138 lines
5.7 KiB
# coding=utf-8
|
|
from time import sleep
|
|
|
|
#======fonctions utiles======
|
|
def cls():
|
|
"""efface la console"""
|
|
print("\033[H\033[J", end="")
|
|
|
|
def affiche_fichier(path):
|
|
"""affiche le contenu d'un fichier - ici ce seront des fichiers textes"""
|
|
with open(path, 'r', encoding="utf8") as file:
|
|
for line in file:
|
|
print(line, end="")
|
|
print("")
|
|
|
|
def message_avec_suite(msg):
|
|
"""affiche un message lettre par lettre et attend que l'utilisateur presse 'Entrée'"""
|
|
for lettre in msg:
|
|
print(lettre, end="", flush=True)
|
|
sleep(0.02)
|
|
input("\n\n[Entrée]")
|
|
cls()
|
|
|
|
def affiche_pdv(joueur1, joueur2):
|
|
"""affiche les vies des joueurs"""
|
|
pdv_joueur1 = joueur1.get_pdv()*"\033[31m♥\033[0m "+(20-max(0,joueur1.get_pdv()))*"\033[37m♥\033[0m "
|
|
pdv_joueur2 = joueur2.get_pdv()*"\033[31m♥\033[0m "+(20-max(0,joueur2.get_pdv()))*"\033[37m♥\033[0m "
|
|
|
|
print(pdv_joueur1 + " "*10 + pdv_joueur2)
|
|
print("{:<45}{:>45}".format(joueur1.nom, joueur2.nom))
|
|
|
|
#===========Intros===========
|
|
def intro_longue():
|
|
"""intro du jeu, version longue
|
|
retourne le nom et la catégorie du joueur"""
|
|
cls()
|
|
|
|
#intro
|
|
message_avec_suite("Vous vous trouvez là, en face d'une porte mystérieuse.")
|
|
message_avec_suite("Hésitant un peu, vous la poussez, pour trouver un être étrange, assis derrière un bureau moderne.")
|
|
message_avec_suite("La porte se referme violemment derrière vous, comme par \033[3mmagie\033[0m.")
|
|
message_avec_suite("Vous êtes dans une fâcheuse position.")
|
|
|
|
affiche_fichier("ascii/titre_accueil.txt")
|
|
|
|
input("Appuyez sur Entrée pour jouer...")
|
|
cls()
|
|
#salutations
|
|
message_avec_suite("L'être étrange vous salue, d'une voix artificielle : \n")
|
|
affiche_fichier("ascii/etreEtrange.txt")
|
|
#nom du joueur
|
|
nomJoueur1 = input("\n\n Quel est ton nom ? : ")
|
|
while nomJoueur1 == "":
|
|
nomJoueur1 = input("J'aimerais bien savoir à qui je m'adresse ; quel est ton nom ? : ")
|
|
while len(nomJoueur1) > 40:
|
|
nomJoueur1 = input("Ce nom est un peu long... Propose-moi un autre nom, plus court : ")
|
|
#42
|
|
if nomJoueur1 == "42":
|
|
youWon("42")
|
|
return None
|
|
cls()
|
|
#2e partie de l'intro
|
|
message_avec_suite("Bon, "+nomJoueur1+", je vais t'offrir une seule chance de sortir d'ici.\nTu vas devoir affronter un de mes sbires.\nSi, par \033[3mchance\033[0m, tu arrives à gagner le combat, je te laisse sortir.")
|
|
q_reth = input("Acceptes-tu mon petit jeu ? (oui/oui) ")
|
|
if q_reth != "oui":
|
|
print("Parfait ! J'étais sûr que tu accepterais.")
|
|
message_avec_suite("Alors commençons...")
|
|
|
|
##choix des persos
|
|
|
|
print("Tu peux incarner 4 personnages.\nTous disposent d'une potion énergisante, qu'ils prendront automatiquement avant le combat.\n\n")
|
|
#guerrier
|
|
print("Le premier est le guerrier.")
|
|
affiche_fichier("ascii/guerrier.txt")
|
|
print("Voici ses stats: \nclasse d'attaque : 10 \nclasse de défense : 8")
|
|
print("Son arme préférée est l'épée.")
|
|
input("\n\nAppuyez sur Entrée pour voir le personnage suivant...")
|
|
cls()
|
|
#magicien
|
|
print("Le deuxième est le magicien.")
|
|
affiche_fichier("ascii/magicien.txt")
|
|
print("Voici ses stats: \nclasse d'attaque : 10 \nclasse de défense : 7")
|
|
print("Son arme préférée est le bâton.")
|
|
input("\n\nAppuyez sur Entrée pour voir le personnage suivant...")
|
|
cls()
|
|
#voleur
|
|
print("Le troisième est le voleur.")
|
|
affiche_fichier("ascii/voleur.txt")
|
|
print("Voici ses stats: \nclasse d'attaque : 3 \nclasse de défense : 3")
|
|
print("Son arme préférée est la dague.")
|
|
input("\n\nAppuyez sur Entrée pour voir le personnage suivant...")
|
|
cls()
|
|
#elfe
|
|
print("Le dernier est l'elfe.")
|
|
affiche_fichier("ascii/elfe.txt")
|
|
print("Voici ses stats: \nclasse d'attaque : 8 \nclasse de défense : 8")
|
|
print("Son arme préférée est l'arc.")
|
|
input("\n\nAppuyez sur Entrée pour choisir votre personnage...")
|
|
cls()
|
|
|
|
|
|
|
|
catJoueur1 = input("Donc, quel personnage choisis-tu ? \n Ecris le nom de ta catégorie en toutes lettres (guerrier/magicien/voleur/elfe) : ")
|
|
while not(catJoueur1 in ["guerrier","magicien", "voleur", "elfe"]):
|
|
cls()
|
|
print("Tu dois choisir une catégorie parmi : \n guerrier, \n magicien, \n voleur, \n et elfe.")
|
|
catJoueur1 = input("Donc, quel personnage choisis-tu ? \n Ecris le nom de ta catégorie en toutes lettres (guerrier/magicien/voleur/elfe) : ")
|
|
message_avec_suite("Que le combat commence !...")
|
|
return nomJoueur1, catJoueur1
|
|
|
|
def intro_courte():
|
|
"""intro du jeu, version courte
|
|
retourne le nom et la catégorie du joueur"""
|
|
|
|
nomJoueur1 = input("nom : ")
|
|
while len(nomJoueur1) > 40:
|
|
nomJoueur1 = input("nom trop long (plus de 40 lettres) ; proposez un autre nom : ")
|
|
#42
|
|
if nomJoueur1 == "42":
|
|
youWon("42")
|
|
return None
|
|
print("Les catégories sont : \n guerrier => entrez 0 \n magicien => entrez 1 \n voleur => entrez 2 \n elfe => entrez 3.")
|
|
catJoueur1 = input("catégorie : ")
|
|
while catJoueur1 not in ["0", "1", "2", "3"]:
|
|
print("Les catégories sont : \n guerrier => entrez 0 \n magicien => entrez 1 \n voleur => entrez 2 \n elfe => entrez 3.")
|
|
catJoueur1 = input("catégorie : ")
|
|
catJoueur1 = ["guerrier","magicien","voleur","elfe"][int(catJoueur1)]
|
|
|
|
return nomJoueur1, catJoueur1
|
|
#========Fins de partie==============
|
|
def youWon(nom):
|
|
"""affiche message de félicitation lorsque le joueur a gagné"""
|
|
print("Cher "+nom+", tu as gagné la partie ! (et ta liberté !)")
|
|
affiche_fichier("ascii/youWon.txt")
|
|
def gameOver():
|
|
"""affiche message de game over lorsque le joueur a perdu"""
|
|
affiche_fichier("ascii/game_over.txt")
|
|
print("Dommage...")
|