Put the PV into stat

This commit is contained in:
Shadow15510 2021-08-14 12:36:59 +02:00
parent 1fe3ac5e65
commit 72c9ef161d
4 changed files with 60 additions and 59 deletions

View File

@ -76,10 +76,9 @@ dialogues = {
Les listes sont, elles, de la forme :
```
[xp_gagne, pv_gagne, "le texte du dialogue", booleen, ...]
[xp_gagne, "le texte du dialogue", booleen, ...]
```
`xp_gagne` correspond aux nombres de points d'expérience gagné lors de la lecture de ce dialogue.
`pv_gagne` même principe qu'avec l'XP, mais avec les points de vie.
`booleen` détermine s'il s'agit d'un monologue du PnJ ou si vous pouvez répondre au PnJ.
`...` correspond à des modificateurs des stats. Vous pouvez tout à fait les oublier en première utilisation
@ -101,9 +100,9 @@ def dialogue(xp, pv, carte_actuelle, x, y, stat):
...
# Si le PnJ est bien sur la map, mais n'a aucun dialogue d'assigné :
return [0, 0, "Hmm ?", False]
return [0, "Hmm ?", False]
```
Vous pouvez également créer des dialogues. Pour cela, il vous suffit de mettre le booleen sur `True` et de mettre les réponses possibles dans le corps du dialogue, par exemple : `[0, 0, "Ceci est une question ? 1. Réponse 1 2. Réponse 2", True]`. Le numéro de la réponse correspond au nombre de point d'expérience qu'elle rapporte, cela vous permet de gérer les différents cas dans al suite du dialogue.
Vous pouvez également créer des dialogues. Pour cela, il vous suffit de mettre le booleen sur `True` et de mettre les réponses possibles dans le corps du dialogue, par exemple : `[0, "Ceci est une question ? 1. Réponse 1 2. Réponse 2", True]`. Le numéro de la réponse correspond au nombre de point d'expérience qu'elle rapporte, cela vous permet de gérer les différents cas dans al suite du dialogue.
#### Finalisation
@ -112,10 +111,10 @@ Il reste à faire une petite fonction qui va créer un "modèle" de jeu de rôle
La fonction est vraiment triviale :
```
def mon_jeu():
rpg_python = Asci(carte_monde, dialogue, 10, [])
rpg_python = Asci(carte_monde, dialogue, 10, [100])
rpg_python.mainloop()
```
Les deux premiers arguments `carte_monde` et `dialogue` ont déjà été vu. Le `10` correspond aux nombres de points d'expérience au bout duquel le programme s'arrête, il s'agit de la fin de la partie si vous voulez. La liste passée en dernier argument correspondent aux stats.
Les deux premiers arguments `carte_monde` et `dialogue` ont déjà été vu. Le `10` correspond aux nombres de points d'expérience au bout duquel le programme s'arrête, il s'agit de la fin de la partie si vous voulez. La liste passée en dernier argument correspondent aux stats, vous devez impérativement mettre les points de vie de votre personnage.
### Exemples et astuces
@ -142,23 +141,23 @@ Nous n'avons pas de maisons, juste un PnJ
Nous allons faire parler notre PnJ ! Et comme on est chaud, on va directement faire un petit dialogue. Pour bien séparer les réactions à la question du reste, je met un niveau d'indentation supplémentaire, ça ne change rien au comportement du code.
```
def dialogue(xp, pv, carte_actuelle, x, y, stat):
coords = (x, y)
coords = (x, y)
if carte_actuelle == 0:
if coords == (2, 5): return {
0: [0, 0, "Coucou ! Comment ca va ? 1. Ca va, et toi ? 2. Bof... 3. Je t'emmerde.", True],
1: [3, 0, "Je vais bien, merci !", False],
2: [3, 0, "Ow, desole...", False],
3: [4, 0, "He, reviens quand tu seras de meilleure humeur !", False],
if carte_actuelle == 0:
if coords == (2, 5): return {
0: [0, "Coucou ! Comment ca va ? 1. Ca va, et toi ? 2. Bof... 3. Je t'emmerde.", True],
1: [3, "Je vais bien, merci !", False],
2: [3, "Ow, desole...", False],
3: [4, "He, reviens quand tu sera de meilleure humeur !", False],
4: [2, 0, "Bon et bien, je crois bien que cette premiere carte s'est bien passee !", False],
5: [1, 0, "Je vais y aller, appelles moi si tu as besoin ;)", False],
6: [1, 0, "A pluche o/", False],
4: [2, "Bon et bien, je crois bien que cette premiere carte s'est bien passee !", False],
5: [1, "Je vais y aller, appelle moi si tu as besoin ;)", False],
6: [1, "A pluche o/", False],
"base": [0, 0, "Oui ?", False]
}
"base": [0, "Oui ?", False]
}
return [0, 0, "Hmm ?", False]
return [0, "Hmm ?", False]
```
Pour mettre en place vos dialogues (parce que j'espère que vous aurez un peu plus qu'un seul PnJ) faire un arbre de progression de l'XP peut être une bonne idée ;) je vais essayer de le faire en ASCII-art pour vous montrer, mais avec une feuille et un stylo c'est plus simple.
```
@ -202,19 +201,19 @@ def dialogue(xp, pv, carte_actuelle, x, y, stat):
if carte_actuelle == 0:
if coords == (2, 5): return {
0: [0, 0, "Coucou ! Comment ca va ? 1. Ca va, et toi ? 2. Bof... 3. Je t'emmerde.", True],
1: [3, 0, "Je vais bien, merci !", False],
2: [3, 0, "Ow, desole...", False],
3: [4, 0, "He, reviens quand tu seras de meilleure humeur !", False],
0: [0, "Coucou ! Comment ca va ? 1. Ca va, et toi ? 2. Bof... 3. Je t'emmerde.", True],
1: [3, "Je vais bien, merci !", False],
2: [3, "Ow, desole...", False],
3: [4, "He, reviens quand tu sera de meilleure humeur !", False],
4: [2, 0, "Bon et bien, je crois bien que cette premiere carte s'est bien passee !", False],
5: [1, 0, "Je vais y aller, appelles moi si tu as besoin ;)", False],
6: [1, 0, "A pluche o/", False],
4: [2, "Bon et bien, je crois bien que cette premiere carte s'est bien passee !", False],
5: [1, "Je vais y aller, appelle moi si tu as besoin ;)", False],
6: [1, "A pluche o/", False],
"base": [0, 0, "Oui ?", False]
"base": [0, "Oui ?", False]
}
return [0, 0, "Hmm ?", False]
return [0, "Hmm ?", False]
def mon_jeu():

View File

@ -56,9 +56,12 @@ class Screen:
class Asci:
def __init__(self, maps, fn_dialogue, end_game, stat, data=[0, 100, 0, 0, 0], screen_width=21, screen_height=6):
# Load save ; data = [XP, PV, map_id, x, y]
# Load save ; data = [XP, map_id, x, y]
self.data = data
self.stat = stat
if not stat:
self.stat = [100]
else:
self.stat = stat
# Load data
self.maps = maps
@ -143,7 +146,7 @@ class Asci:
# Stat
if key == 8:
self.screen.clear()
print("<*> Statistiques <*>\nExperience ...: {0}\nPoints de vie : {1}\n<*> ------------ <*>".format(self.data[0], self.data[1]))
print("<*> Statistiques <*>\n")
input()
# Quit
@ -168,14 +171,13 @@ class Asci:
# XP and PV modification
self.data[0] += dialogue[0]
self.data[1] += dialogue[1]
# Stat modification
for index in range(len(dialogue[4:])):
stat[index] += dialogue[4 + index]
for index in range(len(dialogue[3:])):
stat[index] += dialogue[3 + index]
answer_selected = self.screen.display_text(dialogue[2])
if dialogue[3]: self.data[0] += convert(answer_selected)
answer_selected = self.screen.display_text(dialogue[1])
if dialogue[2]: self.data[0] += convert(answer_selected)
def _get_map(self, direction):
x, y = self._looked_case(direction)
@ -193,7 +195,7 @@ class Asci:
def mainloop(self):
key = key_buffer = 0
while key != 9 and self.data[1] > 0 and self.data[0] < self.end_game:
while key != 9 and self.stat[0] > 0 and self.data[0] < self.end_game:
self.screen.clear_data()
self.screen.set_data(self.data[-2:])

View File

@ -31,30 +31,30 @@ def get_dialogue(xp, pv, current_map, x, y, stat):
if current_map == 0:
if coords == (16, 1): return {
0: [1, 0, "Hey, bienvenue dans la map de test d'Asci !", False],
1: [0, 0, "Comment vas-tu aujourd'hui ? 1. Tres bien, merci ! Et vous-meme ? 2. La ferme le vieux ! ", True],
2: [4, 0, "Je vais bien ^.^", False],
3: [0, 0, "Oh, insultant personnage !", False],
0: [1, "Hey, bienvenue dans la map de test d'Asci !", False],
1: [0, "Comment vas-tu aujourd'hui ? 1. Tres bien, merci ! Et vous-meme ? 2. La ferme le vieux ! ", True],
2: [4, "Je vais bien ^.^", False],
3: [0, "Oh, insultant personnage !", False],
6: [0, 0, "Belle journée, n'est-ce pas ?", False],
6: [0, "Belle journée, n'est-ce pas ?", False],
"base": [0, 0, "Bonjour, besoin d'aide ?", False],
"base": [0, "Bonjour, besoin d'aide ?", False],
}
elif coords == (24, 4):
if pv >= 100: return [0, 50, "Tsst, est-ce que je tape sur des gens moi ? Bah alors ? J'ai panse tes plaies, mais fait gaffe a toi...", False]
else: return [0, 0, "Tu es en pleine forme !", False]
if pv >= 100: return [0, "Tsst, est-ce que je tape sur des gens moi ? Bah alors ? J'ai panse tes plaies, mais fait gaffe a toi...", False, 50]
else: return [0, "Tu es en pleine forme !", False]
elif current_map == 1:
if coords == (4, 3): return {
3: [0, 0, "Tsst, tu as encore insulte quelqu'un ? 1. Oui... 2. Hein ? Quoi ?", True],
4: [0, 0, "C'est pas tres malin, tu sais ?", False],
5: [0, 0, "Je n'aime pas les menteurs. Sort de chez moi.", False],
3: [0, "Tsst, tu as encore insulte quelqu'un ? 1. Oui... 2. Hein ? Quoi ?", True],
4: [0, "C'est pas tres malin, tu sais ?", False],
5: [0, "Je n'aime pas les menteurs. Sort de chez moi.", False],
"base": [0, 0, "Oui ?", False]
"base": [0, "Oui ?", False]
}
return [0, 0, "Hmmm ?", False]
return [0, "Hmmm ?", False]

View File

@ -19,19 +19,19 @@ def dialogue(xp, pv, carte_actuelle, x, y, stat):
if carte_actuelle == 0:
if coords == (2, 5): return {
0: [0, 0, "Coucou ! Comment ca va ? 1. Ca va, et toi ? 2. Bof... 3. Je t'emmerde.", True],
1: [3, 0, "Je vais bien, merci !", False],
2: [3, 0, "Ow, desole...", False],
3: [4, 0, "He, reviens quand tu sera de meilleure humeur !", False],
0: [0, "Coucou ! Comment ca va ? 1. Ca va, et toi ? 2. Bof... 3. Je t'emmerde.", True],
1: [3, "Je vais bien, merci !", False],
2: [3, "Ow, desole...", False],
3: [4, "He, reviens quand tu sera de meilleure humeur !", False],
4: [2, 0, "Bon et bien, je crois bien que cette premiere carte s'est bien passee !", False],
5: [1, 0, "Je vais y aller, appelle moi si tu as besoin ;)", False],
6: [1, 0, "A pluche o/", False],
4: [2, "Bon et bien, je crois bien que cette premiere carte s'est bien passee !", False],
5: [1, "Je vais y aller, appelle moi si tu as besoin ;)", False],
6: [1, "A pluche o/", False],
"base": [0, 0, "Oui ?", False]
"base": [0, "Oui ?", False]
}
return [0, 0, "Hmm ?", False]
return [0, "Hmm ?", False]
def mon_jeu():