bollet.c
1 year ago
11 changed files with 315 additions and 75 deletions
@ -0,0 +1,11 @@ |
|||
.-''-. .---. ________ .-''-. |
|||
.'_ _ \ | ,_| | | .'_ _ \ |
|||
/ ( ` ) ',-./ ) | .----' / ( ` ) ' |
|||
. (_ o _) |\ '_ '`) | _|____ . (_ o _) | |
|||
| (_,_)___| > (_) ) |_( )_ || (_,_)___| |
|||
' \ .---.( . .-' (_ o._)__|' \ .---. |
|||
\ `-' / `-'`-'|___ |(_,_) \ `-' / |
|||
\ / | \| | \ / |
|||
`'-..-' `--------`'---' `'-..-' |
|||
|
|||
|
@ -0,0 +1,10 @@ |
|||
.-. .-') .-') _ _ .-') |
|||
\ ( OO ) ( OO ) ) ( \( -O ) |
|||
;-----.\ .-'),-----. ,--./ ,--,' ,--. .-'),-----. ,--. ,--. ,------. |
|||
| .-. | ( OO' .-. '| \ | |\ .-')| ,|( OO' .-. ' | | | | | /`. ' |
|||
| '-' /_)/ | | | || \| | )( OO |(_|/ | | | | | | | .-') | / | | |
|||
| .-. `. \_) | |\| || . |/ | `-'| |\_) | |\| | | |_|( OO )| |_.' | |
|||
| | \ | \ | | | || |\ | ,--. | | \ | | | | | | | `-' /| . '.' |
|||
| '--' / `' '-' '| | \ | | '-' / `' '-' '(' '-'(_.-' | |\ \ |
|||
`------' `-----' `--' `--' `-----' `-----' `-----' `--' '--' |
|||
|
@ -0,0 +1,7 @@ |
|||
___ ___ |
|||
/ __| __ _ _ __ ___ o O O / _ \ __ __ ___ _ _ |
|||
| (_ | / _` | | ' \ / -_) o | (_) | \ V / / -_) | '_| |
|||
\___| \__,_| |_|_|_| \___| TS__[O] \___/ _\_/_ \___| _|_|_ |
|||
_|"""""|_|"""""|_|"""""|_|"""""| {======|_|"""""|_|"""""|_|"""""|_|"""""| |
|||
"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'./o--000'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-' |
|||
|
@ -0,0 +1,11 @@ |
|||
▄████ █ ██ ▓█████ ██▀███ ██▀███ ██▓▓█████ ██▀███ |
|||
██▒ ▀█▒ ██ ▓██▒▓█ ▀ ▓██ ▒ ██▒▓██ ▒ ██▒▓██▒▓█ ▀ ▓██ ▒ ██▒ |
|||
▒██░▄▄▄░▓██ ▒██░▒███ ▓██ ░▄█ ▒▓██ ░▄█ ▒▒██▒▒███ ▓██ ░▄█ ▒ |
|||
░▓█ ██▓▓▓█ ░██░▒▓█ ▄ ▒██▀▀█▄ ▒██▀▀█▄ ░██░▒▓█ ▄ ▒██▀▀█▄ |
|||
░▒▓███▀▒▒▒█████▓ ░▒████▒░██▓ ▒██▒░██▓ ▒██▒░██░░▒████▒░██▓ ▒██▒ |
|||
░▒ ▒ ░▒▓▒ ▒ ▒ ░░ ▒░ ░░ ▒▓ ░▒▓░░ ▒▓ ░▒▓░░▓ ░░ ▒░ ░░ ▒▓ ░▒▓░ |
|||
░ ░ ░░▒░ ░ ░ ░ ░ ░ ░▒ ░ ▒░ ░▒ ░ ▒░ ▒ ░ ░ ░ ░ ░▒ ░ ▒░ |
|||
░ ░ ░ ░░░ ░ ░ ░ ░░ ░ ░░ ░ ▒ ░ ░ ░░ ░ |
|||
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ |
|||
|
|||
|
@ -0,0 +1,10 @@ |
|||
▄▄▄▄███▄▄▄▄ ▄████████ ▄██████▄ ▄█ ▄████████ ▄█ ▄████████ ███▄▄▄▄ |
|||
▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███▀▀▀██▄ |
|||
███ ███ ███ ███ ███ ███ █▀ ███▌ ███ █▀ ███▌ ███ █▀ ███ ███ |
|||
███ ███ ███ ███ ███ ▄███ ███▌ ███ ███▌ ▄███▄▄▄ ███ ███ |
|||
███ ███ ███ ▀███████████ ▀▀███ ████▄ ███▌ ███ ███▌ ▀▀███▀▀▀ ███ ███ |
|||
███ ███ ███ ███ ███ ███ ███ ███ ███ █▄ ███ ███ █▄ ███ ███ |
|||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ |
|||
▀█ ███ █▀ ███ █▀ ████████▀ █▀ ████████▀ █▀ ██████████ ▀█ █▀ |
|||
|
|||
|
@ -0,0 +1,26 @@ |
|||
88888888888 888 .d88888b. 888 |
|||
888 888 d88P" "Y88b 888 |
|||
888 888 888 888 888 |
|||
888 88888b. .d88b. 888 888 888 888 .d88b. .d8888b 888888 |
|||
888 888 "88b d8P Y8b 888 888 888 888 d8P Y8b 88K 888 |
|||
888 888 888 88888888 888 Y8b 888 888 888 88888888 "Y8888b. 888 |
|||
888 888 888 Y8b. Y88b.Y8b88P Y88b 888 Y8b. X88 Y88b. |
|||
888 888 888 "Y8888 "Y888888" "Y88888 "Y8888 88888P' "Y888 |
|||
Y8b |
|||
.d888 |
|||
d88P" |
|||
888888 .d88b. 888d888 |
|||
888 d88""88b 888P" |
|||
888 888 888 888 |
|||
888 Y88..88P 888 |
|||
888 "Y88P" 888 |
|||
|
|||
.d888 888 |
|||
d88P" 888 |
|||
888 888 |
|||
888888 888d888 .d88b. .d88b. .d88888 .d88b. 88888b.d88b. |
|||
888 888P" d8P Y8b d8P Y8b d88" 888 d88""88b 888 "888 "88b |
|||
888 888 88888888 88888888 888 888 888 888 888 888 888 |
|||
888 888 Y8b. Y8b. Y88b 888 Y88..88P 888 888 888 |
|||
888 888 "Y8888 "Y8888 "Y88888 "Y88P" 888 888 888 |
|||
|
@ -0,0 +1,12 @@ |
|||
/$$ |
|||
| $$ |
|||
/$$ /$$ /$$$$$$ | $$ /$$$$$$ /$$ /$$ /$$$$$$ |
|||
| $$ /$$//$$__ $$| $$ /$$__ $$| $$ | $$ /$$__ $$ |
|||
\ $$/$$/| $$ \ $$| $$| $$$$$$$$| $$ | $$| $$ \__/ |
|||
\ $$$/ | $$ | $$| $$| $$_____/| $$ | $$| $$ |
|||
\ $/ | $$$$$$/| $$| $$$$$$$| $$$$$$/| $$ |
|||
\_/ \______/ |__/ \_______/ \______/ |__/ |
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1,8 @@ |
|||
__ __ U ___ u _ _ U ___ u _ _ _ |
|||
\ \ / / \/"_ \/U |"|u| | __ __ \/"_ \/ | \ |"| U|"|u |
|||
\ V / | | | | \| |\| | \"\ /"/ | | | |<| \| |> \| |/ |
|||
U_|"|_u.-,_| |_| | | |_| | /\ \ /\ / /\.-,_| |_| |U| |\ |u |_| |
|||
|_| \_)-\___/ <<\___/ U \ V V / U\_)-\___/ |_| \_| (_) |
|||
.-,//|(_ \\ (__) )( .-,_\ /\ /_,-. \\ || \\,-. |||_ |
|||
\_) (__) (__) (__) \_)-' '-(_/ (__) (_") (_/ (__)_) |
|||
|
@ -1,12 +1,125 @@ |
|||
class FenetreCombat(): |
|||
def __init__(self, nom, texte_de_presentation): |
|||
"""initialise une interface pour un combat""" |
|||
self.texte_de_presentation = texte_de_presentation |
|||
|
|||
self.instructions() |
|||
def instructions(self): |
|||
print(texte_de_presentation) |
|||
from time import sleep |
|||
|
|||
#======fonctions utiles====== |
|||
def cls(): |
|||
"""efface la console""" |
|||
print("\033[H\033[J", end="") |
|||
|
|||
def affiche_fichier(path): |
|||
with open(path, 'r') as file: |
|||
"""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) |
|||
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() |
|||
|
|||
|
|||
#===========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 ? : ") |
|||
#42 |
|||
if nomJoueur1 == "42": |
|||
youWon() |
|||
cls() |
|||
#2e partie de l'intro |
|||
#demander si 2 1ere l. pas superflues |
|||
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 : ") |
|||
#42 |
|||
if nomJoueur1 == "42": |
|||
youWon() |
|||
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...") |
@ -1,38 +1,67 @@ |
|||
from random import randint, choice |
|||
from personnage import Personnage |
|||
from interface import Accueil |
|||
from interface import * |
|||
|
|||
def combat(perso1, perso2): |
|||
"""simule un combat jusqu'à ce que les joueurs n'aient plus de vies""" |
|||
cls() |
|||
input("Pressez Entrée pour combattre...") |
|||
cls() |
|||
|
|||
attaquant = perso1 |
|||
defenseur = perso2 |
|||
while perso1.pdv > 0 and perso2.pdv > 0: |
|||
perso1_anciens_pdv = perso1.pdv |
|||
perso2_anciens_pdv = perso2.pdv |
|||
if attaquant.jet_attaque() > defenseur.jet_defense(): |
|||
defenseur.change_pdv(-randint(1,8)) |
|||
elif attaquant.jet_attaque() < defenseur.jet_defense(): |
|||
attaquant.change_pdv(-randint(1,4)) |
|||
perso1.affiche_caracteristiques() |
|||
perso2.affiche_caracteristiques() |
|||
#perso1.affiche_caracteristiques() |
|||
#perso2.affiche_caracteristiques() |
|||
cls() |
|||
print("Vous avez\033[36m",perso1.pdv,"\033[0mpoints de vie", end=" ") |
|||
diff = perso1.pdv - perso1_anciens_pdv |
|||
if diff < 0: |
|||
color = 31 |
|||
else: |
|||
color = 39 |
|||
print("(\033["+str(color)+"m"+str(diff)+"\033[0m points)") |
|||
print("Votre ennemi a\033[36m",perso2.pdv,"\033[0mpoints de vie", end=" ") |
|||
diff = perso2.pdv - perso2_anciens_pdv |
|||
if diff < 0: |
|||
color = 32 |
|||
else: |
|||
color = 39 |
|||
print("(\033["+str(color)+"m"+str(diff)+"\033[0m points)\n") |
|||
input("[Entrée]") |
|||
|
|||
attaquant, defenseur = defenseur , attaquant |
|||
|
|||
#changement de l'exp |
|||
if perso1.pdv > 0: |
|||
perso1.change_exp(1) |
|||
else: |
|||
perso2.change_exp(1) |
|||
|
|||
def main(): |
|||
accueil("Jeu de rôle") |
|||
print("Bienvenue dans...") |
|||
affiche_fichier("ascii/titre_accueil.txt") |
|||
"""programme principal""" |
|||
intro_bool = input("Voulez-vous l'intro longue ou courte ? (longue/courte) : ") |
|||
if intro_bool == "longue": |
|||
(nomJoueur1, catJoueur1) = intro_longue() |
|||
else: |
|||
(nomJoueur1, catJoueur1) = intro_courte() |
|||
|
|||
|
|||
nomJoueur1 = input("Quel est votre nom ? ") |
|||
print("Vous pouvez être : \n guerrier \n magicien \n voleur \n elfe") |
|||
catJoueur1 = input("Quel est votre catégorie (l'écrire en toutes lettres) ? ") |
|||
while not(catJoueur1 in ["guerrier","magicien","voleur","elfe"]): |
|||
print("Vous devez choisir une catégorie parmi : \n guerrier, \n magicien, \n voleur, \n et elfe.") |
|||
catJoueur1 = input("Quel est votre personnage (l'écrire en toutes lettres) ? ") |
|||
joueur1 = Personnage(nomJoueur1, catJoueur1) |
|||
joueur2 = Personnage("ennemi", choice(["guerrier","magicien","voleur","elfe"])) |
|||
|
|||
#le combat ! |
|||
combat(joueur1, joueur2) |
|||
#affichage des résultats |
|||
if joueur1.exp > joueur2.exp: |
|||
youWon(perso1.nom) |
|||
else: |
|||
gameOver() |
|||
|
|||
if __name__ == "__main__": |
|||
main() |
@ -1,57 +1,60 @@ |
|||
from random import randint |
|||
class Personnage: |
|||
def __init__(self, nom, cat): |
|||
self.nom = nom |
|||
self.pdv = 20 |
|||
self.exp = 1 |
|||
self.cat = cat |
|||
def __init__(self, nom, cat): |
|||
"""initialise le personnage""" |
|||
self.nom = nom |
|||
self.pdv = 20 |
|||
self.exp = 1 |
|||
self.cat = cat |
|||
|
|||
self.switcher_obj = { |
|||
"guerrier" : "épée", |
|||
"magicien" : "bâton", |
|||
"voleur" : "dague", |
|||
"elfe" : "arc", |
|||
} |
|||
self.inventaire = [self.switcher_obj.get(self.cat)] |
|||
self.inventaire.append("potion") |
|||
self.switcher_obj = { |
|||
"guerrier" : "épée", |
|||
"magicien" : "bâton", |
|||
"voleur" : "dague", |
|||
"elfe" : "arc", |
|||
} |
|||
self.inventaire = [self.switcher_obj.get(self.cat)] |
|||
self.inventaire.append("potion") |
|||
|
|||
def jet_attaque(self): |
|||
"""renvoie le jet d'attaque""" |
|||
dé = randint(1,20) |
|||
self.switcher_classe = { |
|||
"guerrier" : 10, |
|||
"magicien" : 10, |
|||
"voleur" : 3, |
|||
"elfe" : 8, |
|||
} |
|||
self.classe = self.switcher_classe.get(self.cat) |
|||
return dé + self.exp * self.classe |
|||
|
|||
def jet_defense(self): |
|||
"""renvoie le jet de défense""" |
|||
dé = randint(1,20) |
|||
self.switcher_classe = { |
|||
"guerrier" : 8, |
|||
"magicien" : 7, |
|||
"voleur" : 3, |
|||
"elfe" : 8, |
|||
} |
|||
self.classe = self.switcher_classe.get(self.cat) |
|||
return dé + self.exp * self.classe |
|||
|
|||
def change_pdv(self, nb_pdv): |
|||
self.pdv += nb_pdv |
|||
|
|||
def change_exp(self, nb_exp): |
|||
self.exp += nb_exp |
|||
def jet_attaque(self): |
|||
"""renvoie le jet d'attaque""" |
|||
dé = randint(1,20) |
|||
self.switcher_classe = { |
|||
"guerrier" : 10, |
|||
"magicien" : 10, |
|||
"voleur" : 3, |
|||
"elfe" : 8, |
|||
} |
|||
self.classe = self.switcher_classe.get(self.cat) |
|||
return dé + self.exp * self.classe |
|||
|
|||
def affiche_caracteristiques(self): |
|||
"""affiche les caractéristiques du personnage""" |
|||
print("nom : ", self.nom) |
|||
print("catégorie : ", self.cat) |
|||
print("points de vie : ", self.pdv) |
|||
print("expérience : ", self.exp) |
|||
print("") |
|||
def affiche_inventaire(self): |
|||
"""affiche l'inventaire du personnage""" |
|||
print("inventaire : ", self.inventaire) |
|||
def jet_defense(self): |
|||
"""renvoie le jet de défense""" |
|||
dé = randint(1,20) |
|||
self.switcher_classe = { |
|||
"guerrier" : 8, |
|||
"magicien" : 7, |
|||
"voleur" : 3, |
|||
"elfe" : 8, |
|||
} |
|||
self.classe = self.switcher_classe.get(self.cat) |
|||
return dé + self.exp * self.classe |
|||
|
|||
def change_pdv(self, nb_pdv): |
|||
"""change le total de points de vie""" |
|||
self.pdv += nb_pdv |
|||
|
|||
def change_exp(self, nb_exp): |
|||
"""change le nombre de points d'experience""" |
|||
self.exp += nb_exp |
|||
|
|||
def affiche_caracteristiques(self): |
|||
"""affiche les caractéristiques du personnage""" |
|||
print("nom : ", self.nom) |
|||
print("catégorie : ", self.cat) |
|||
print("points de vie : ", self.pdv) |
|||
print("expérience : ", self.exp) |
|||
print("") |
|||
def affiche_inventaire(self): |
|||
"""affiche l'inventaire du personnage""" |
|||
print("inventaire : ", self.inventaire) |
Loading…
Reference in new issue