From 72c9ef161d2006e788affbbc688b39b6f95d92b2 Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Sat, 14 Aug 2021 12:36:59 +0200 Subject: [PATCH] Put the PV into stat --- README.md | 55 +++++++++++++++++++++---------------------- rpg_maker/asci_lib.py | 20 +++++++++------- rpg_maker/sample.py | 26 ++++++++++---------- rpg_maker/sample_2.py | 18 +++++++------- 4 files changed, 60 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index 364ed65..dea00f0 100644 --- a/README.md +++ b/README.md @@ -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(): diff --git a/rpg_maker/asci_lib.py b/rpg_maker/asci_lib.py index 827527e..5e15142 100644 --- a/rpg_maker/asci_lib.py +++ b/rpg_maker/asci_lib.py @@ -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:]) diff --git a/rpg_maker/sample.py b/rpg_maker/sample.py index 7ffa5f7..d80bb99 100644 --- a/rpg_maker/sample.py +++ b/rpg_maker/sample.py @@ -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] diff --git a/rpg_maker/sample_2.py b/rpg_maker/sample_2.py index 77973f7..9a1dffa 100644 --- a/rpg_maker/sample_2.py +++ b/rpg_maker/sample_2.py @@ -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():