Asci/samples/sample_3.py

137 lines
3.9 KiB
Python
Raw Normal View History

2021-08-13 17:32:55 +02:00
from asci_lib import *
2021-08-14 17:13:34 +02:00
from random import randint
2021-08-13 17:32:55 +02:00
2021-08-14 22:27:07 +02:00
cartes = (
2021-08-30 16:35:28 +02:00
(r"""
2021-08-13 17:32:55 +02:00
__
/ \___ ### *
|<> \ ##### _
|^|____| ### / \
/_\ |^| *
__ __
2021-08-14 17:13:34 +02:00
$ ## / \___/ \ ##
2021-08-13 17:32:55 +02:00
#### |<> <>| ####
2021-08-30 16:35:28 +02:00
## |_________| ##
2021-08-13 17:32:55 +02:00
|| ||""",
2021-08-30 16:35:28 +02:00
(1, 3, 1, 5, 7),
(19, 4, 2, 4, 4)),
2021-08-13 17:32:55 +02:00
(r"""
2021-08-14 22:27:07 +02:00
+--+--+--------+--+--+
| | | | | |
| + + + + |
| |
| + + + + |
+--/ *\--------/ \--+
| |
+---|^|--------------+""",
2021-08-30 16:35:28 +02:00
(5, 7, 0, 1, 3)),
2021-08-14 22:27:07 +02:00
(r"""
+-------+
| |
| |
| |
+--|^|--+
""",
2021-08-30 16:35:28 +02:00
(4, 4, 0, 19, 4))
2021-08-13 17:32:55 +02:00
)
def pnj(data, stat):
xp, carte_actuelle, x, y = data
2021-08-13 22:32:36 +02:00
coords = (x, y)
2021-08-13 17:32:55 +02:00
2021-08-14 22:27:07 +02:00
if carte_actuelle == 0:
if coords == (24, 4):
2021-08-30 16:35:28 +02:00
if stat[0] < 100: return [0, "Oh, mais tu es blesse !", 0, (0, 50)]
2021-08-14 22:27:07 +02:00
else: return [0, "Reviens me voir quand tu seras blesse."]
2021-08-14 17:13:34 +02:00
2021-08-14 22:27:07 +02:00
elif coords == (16, 1): return {
"base": [0, "Alors ? T'en sorts-tu ?"],
2021-08-13 17:32:55 +02:00
2021-08-14 22:27:07 +02:00
0: [0, "J'ai une quete pour toi ! Un ami a moi a des problemes : un personnage louche traine autour de sa maison... Si tu pouvais l'en debarasser, il t'en serai reconnaissant. 1. Je m'en charge ! 2. Trouve quelqu'un d'autre.", 2],
1: [2, "J'etais sur que je pouvais compter sur toi ! Tiens, voila une dague et une petit bouclier.", 0, 0, 10, 10],
2: [2, "Si un jour tu as besoin de moi, tu seras sympa de m'oublier."],
2021-08-14 17:13:34 +02:00
2021-08-14 22:27:07 +02:00
3: [0, "Alors ? Il est mort ce bandit ?"],
4: [1, "Merci, tu as rendu un grand service a mon ami !"]
2021-08-14 17:13:34 +02:00
}
2021-08-14 22:27:07 +02:00
elif coords == (4, 7):
# Si le bandit vient d'être tué
if xp == 3: return [1, "Vous avez reussi la quete !"]
2021-08-13 23:57:43 +02:00
2021-08-14 22:27:07 +02:00
# Si le bandit est encore vivant
elif xp < 3: return [0, "Qu'est-ce que tu regardes toi ? Casses-toi !"]
2021-08-13 17:32:55 +02:00
2021-08-14 22:27:07 +02:00
# Si le bandit est déjà mort
else: return [0, "Vous regardez le cadavre froid du bandit."]
2021-08-13 17:32:55 +02:00
2021-08-14 22:27:07 +02:00
return [0, "Hmm ?"]
2021-08-14 17:13:34 +02:00
def ennemi(data, stat):
xp, carte_actuelle, x, y = data
2021-08-14 17:13:34 +02:00
coords = (x, y)
2021-08-14 22:27:07 +02:00
if carte_actuelle == 0:
2021-08-14 17:13:34 +02:00
if coords == (4, 7):
2021-08-25 22:56:21 +02:00
# Bandit vivant
if xp == 3:
if combat(stat, [75, randint(5, 10), randint(5, 10)]):
return [1, "Vous avez reussi la quete !"]
elif xp < 3: return [0, "Qu'est-ce tu regardes toi ? Casses-toi !"]
else: return [0, "Vous regardez le cadavre froid du bandit."]
2021-08-14 22:27:07 +02:00
2021-08-25 22:56:21 +02:00
def combat(stat, ennemi_stat):
2021-08-14 22:27:07 +02:00
defense_temporaire = defense_temporaire_ennemi = 0
while stat[0] > 0 and ennemi_stat[0] > 0:
print("Vos PV : {0}\nPV ennemi : {1}".format(stat[0], ennemi_stat[0]))
print("<*> Actions <*>")
print("1. Attaquer")
print("2. Defendre")
action = int(input(">"))
defense_temporaire = 0
if action == 1:
pv = (stat[1] - ennemi_stat[2] - defense_temporaire_ennemi) + randint(-5, 10)
if pv < 0: pv = 0
ennemi_stat[0] -= pv
elif action == 2:
defense_temporaire = randint(1, 5)
defense_temporaire_ennemi = 0
if randint(1, 2) == 1:
pv = (ennemi_stat[1] - stat[2] - defense_temporaire) + randint(-5, 10)
if pv < 0: pv = 0
stat[0] -= pv
2021-08-14 17:13:34 +02:00
else:
2021-08-14 22:27:07 +02:00
defense_temporaire_ennemi = randint(1, 5)
2021-08-14 17:13:34 +02:00
return stat[0] > 0
def affichage_stat(data, stat):
2021-08-14 22:27:07 +02:00
pv, pa, pd = stat
2021-08-14 17:13:34 +02:00
print("<*> Statistiques <*>")
2021-08-14 22:27:07 +02:00
print("Points de vie .: {}".format(pv))
print("Points attaque : {}".format(pa))
print("Points defense : {}".format(pd))
2021-08-25 22:56:21 +02:00
input()
2021-08-25 22:56:21 +02:00
evenements = {"*": pnj, "$": ennemi}
touche = {7: affichage_stat}
2021-08-15 17:27:58 +02:00
2021-08-14 22:39:30 +02:00
def mon_jeu(stat=[100, 0, 0], data=[0, 0, 0, 0]):
2021-08-25 22:56:21 +02:00
rpg_python = Asci(cartes, evenements, touche)
2021-08-22 13:57:49 +02:00
stat, data = rpg_python.mainloop(5, stat, data=data)
2021-08-14 22:39:30 +02:00
print("Pour reprendre :")
print("mon_jeu({}, {})".format(stat, data))