Exercice 2 héros de RPG - Simulation d’un combat par le texte
NostalGeek Il y a 4 jours Premium PRO à vie0

Bonjour ou Bonsoir.

Voici la suite donnée à mon petit projet 😉

CAHIER DES CHARGES :

Simuler un combat pour infliger des dommages, et voir le résultat final.

GESTION DU PROJET :

1- Commentaire.

Cette mise en pratique étant la suite du premier exercice héros de RPG, j’ai donc continué d’utiliser la même représentation visuelle pour plus de cohérence.

Je me suis imposé une nouvelle contrainte, toujours dans le but d’être créatif.

Ma testeuse est toujours mon épouse et sa critique constructive.

2- Contrainte.

Donner l’illusion au joueur de jouer le combat.

3- Définition.

Simuler le déroulement du combat, entre le héros et le monstre, selon les règles d’un livre dont vous êtes le héros.

4- Réflexion.

Le principe de fonctionnement de ces livres, concernant le « Rendez-vous au numéro de paragraphe » pour connaître la suite des événements, m’as permis, grâce à l’affichage d’une mise en scène textuelle, d’indiquer au joueur comment procéder pour réaliser le combat contre le monstre.

5- Stratégie.

Demander au joueur de réaliser un lancé de dés (réel ou fictif) pour l’attaque du héros et du monstre, afin d’obtenir un chiffre entre 1 et 6.

Puis aller écrire ce chiffre directement dans les lignes du code, de l’exécuter, pour ainsi voir le résultat du combat.

Cela permet donc de faire interagir le « joueur » avec le code, et ceux malgré le fait qu’à ce niveau de programmation on ne puisse pas encore « jouer » réellement.

6- Réalisation.

Écrire une mise en scène, afin d’expliquer les étapes à réaliser pour faire combattre le héros et le monstre.

« Vous êtes un Nain à la recherche d’or, et de richesse.

Vous marchez depuis un long moment, dans cette mine froide et humide.

Au détour d’un long couloir, droit devant vous, se tient un monstre prêt à vous fracasser le crâne.

Vous n’avez pas d’autre choix que d’engager le combat,

Jetez 1D6 pour l’attaque du personnage et rendez-vous ligne 213 pour y reporter le chiffre dans Attaque(heros, 0).

Jetez 1D6 pour l’attaque du monstre et rendez-vous ligne 214 pour y reporter le chiffre dans Attaque(Monstre, 0).

Cliquez dans le ruban du haut sur ►► pour connaître le résultat du combat.

Peut être aurez-vous la vie sauve !!! »

« Le monstre préfère prendre la poudre d’escampette, quel couard…

Le combat prend donc fin, quel magnifique victoire !!!

Les points de vie du personnage sont remis à leur maximum. »

« L’aventure continue !!! »

Puis coder les calculs mathématique afin d’obtenir le résultat du combat, et l’afficher à l’écran en respectant la charte graphique du premier exercice personnage de RPG.

7- Code.

Le code comporte aussi le premier exercice pour plus de cohérence et de compréhension.

Ne pas hésiter à agrandir la fenêtre de la console de sortie en bas de ZeroBrane Studio, afin de voir le rendu final dans son ensemble.

— Exercice 1_atelier 1_vidéo 8 : Créer une feuille de personnage RPG avec des variables contenant les valeurs

heros = {}

heros.nom =  » NOSTALGEEK LE REVANCHARD « 

heros.pv = 30

heros.endurance = 20

heros.habilite = 10

heros.pieceOr = 100

heros.equipement1 =  » • Hache à 2 mains « 

heros.equipement2 =  » • Petite dague « 

encadrement = {}

encadrement.haut = « ┌──────────────────────────────┐ »

encadrement.verticalHorizontal = « ├──────────────────────────────┤ »

encadrement.bas = « └──────────────────────────────┘ »

encadrement.vertical = « │ »

encadrement.verticalDouble = « │ │ »

encadrement.demiHaut = « ├──────────────┬───────────────┤ »

encadrement.demiCentre = « ├──────────────┼───────────────┤ »

encadrement.demiBas = « ├──────────────┴───────────────┤ »

encadrement.decoratif = « │►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄│ »

texte = {}

texte.espaceBlanc =  » « 

texte.intro1 = « ░ Feuille d’aventure ░ »

texte.intro2 = « ░ Dont vous êtes le héros ░ »

texte.nomPerso =  » ♀ Nom du personnage ♂ « 

texte.pv =  » ♥ ► « 

texte.habilite = « Habilité ► « 

texte.endurance = « Endurance ► « 

texte.pieceOr =  » Or ► « 

texte.equipement =  » ╬ Équipement transporté ╬ « 

— Impression de la feuille de personnage ligne par ligne

— Ligne1

print (encadrement.haut)

— Ligne2

Ligne2 = encadrement.vertical..texte.intro1..encadrement.vertical

print (Ligne2)

— Ligne3

Ligne3 = encadrement.vertical..texte.intro2..encadrement.vertical

print (Ligne3)

— Ligne4

print (encadrement.verticalHorizontal)

— Ligne5

print (encadrement.decoratif)

— Ligne6

print (encadrement.verticalHorizontal)

— Ligne7

Ligne7 = encadrement.vertical..texte.nomPerso..encadrement.vertical

print (Ligne7)

— Ligne8

Ligne8 = encadrement.vertical..heros.nom..encadrement.vertical

print (Ligne8)

— Ligne9

print (encadrement.demiHaut)

— Ligne10

Ligne10_1 = encadrement.vertical..texte.pv..texte.espaceBlanc..heros.pv..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..encadrement.vertical

Ligne10_2 = texte.endurance..heros.endurance..texte.espaceBlanc..encadrement.vertical

Ligne10 = Ligne10_1..Ligne10_2

print (Ligne10)

— Ligne11

print (encadrement.demiCentre)

— Ligne12

Ligne12_1 = encadrement.vertical..texte.habilite..heros.habilite..texte.espaceBlanc..encadrement.vertical

Ligne12_2 = texte.pieceOr..heros.endurance..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..encadrement.vertical

Ligne12 = Ligne12_1..Ligne12_2

print (Ligne12)

— Ligne13

print (encadrement.demiBas)

— Ligne14

Ligne14 = encadrement.vertical..texte.equipement..encadrement.vertical

print (Ligne14)

— Ligne15

print (encadrement.verticalDouble)

— Ligne16

Ligne16 = encadrement.vertical..heros.equipement1..encadrement.vertical

print (Ligne16)

— Ligne17

Ligne17 = encadrement.vertical..heros.equipement2..encadrement.vertical

print (Ligne17)

— Ligne18

print (encadrement.verticalDouble)

— Ligne19

print (encadrement.verticalHorizontal)

— Ligne20

print (encadrement.decoratif)

— Ligne21

print (encadrement.bas)

— Mise en pratique_atelier 1_vidéo 10 : infliger des dégats & restaurer l’état initial

texteCombat = {}

texteCombat.introCombat1 = « ░ Feuille de rencontre ░ »

texteCombat.introCombat2 = « ░ Avec un monstre ░ »

texteCombat.perso = « ♀ PERSONNAGE ♂ »

texteCombat.monstre =  » ♀ MONSTRE ♂ « 

texteCombat.combat = « ░ COMBAT ░ »

texteCombat.combatFin = « ░ FIN DU COMBAT ░ »

texteCombat.attaque = « Attaque ► « 

texteCombat.pvRestant =  » ♥ restant »

texteCombat.ambiance1 = « §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ »

texteCombat.ambiance2 = « § § »

monstre = {}

monstre.pv = 16

monstre.habilite = 3

heros.pvMax = 30

texte.pvMax =  » ♥ personnage restaurés = « 

function Attaque(personnage, resultat1D6)

personnage.habilite = personnage.habilite + resultat1D6

end

function DegatsHeros(valeur1, valeur2)

heros.pv = valeur1 – valeur2

end

function DegatsMonstre(valeur1, valeur2)

monstre.pv = valeur1 – valeur2

end

function RestaurationFinCombat()

heros.pv = heros.pvMax

end

— Impression texte d’ambiance

print(texteCombat.ambiance1)

print(texteCombat.ambiance2)

print(« § Vous êtes un Nain à la recherche d’or, et de richesse. § »)

print(« § Vous marchez depuis un long moment, dans cette mine froide et humide. § »)

print(« § Au détour d’un long couloir, droit devant vous, se tient un monstre prêt à vous fracasser le crâne. § »)

print(« § Vous n’avez pas d’autre choix que d’engager le combat !!! § »)

print(« § Jetez 1D6 pour l’attaque du personnage et rendez-vous ligne 213 pour y reporter le chiffre dans Attaque(heros, 0). § »)

print(« § Jetez 1D6 pour l’attaque du monstre et rendez-vous ligne 214 pour y reporter le chiffre dans Attaque(Monstre, 0). § »)

print(« § Cliquez dans le ruban du haut sur ►► pour connaître le résultat du combat. § »)

print(« § Peut être aurez-vous la vie sauve !!! § »)

print(texteCombat.ambiance2)

print(texteCombat.ambiance1)

— Impression de la feuille de combat ligne par ligne

— Ligne1

print(encadrement.haut)

— Ligne2

Ligne2 = encadrement.vertical..texteCombat.introCombat1..encadrement.vertical

print(Ligne2)

— Ligne3

Ligne3 = encadrement.vertical..texteCombat.introCombat2..encadrement.vertical

print(Ligne3)

— Ligne4

print (encadrement.verticalHorizontal)

— Ligne5

print (encadrement.decoratif)

— Ligne6

print (encadrement.demiHaut)

— Ligne7

Ligne7 = encadrement.vertical..texteCombat.perso..encadrement.vertical..texteCombat.monstre..encadrement.vertical

print(Ligne7)

— Ligne8

print(encadrement.demiCentre)

— Ligne9

Ligne9 = encadrement.vertical..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.pv..heros.pv..texte.espaceBlanc..encadrement.vertical..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.pv..monstre.pv..texte.espaceBlanc..encadrement.vertical

print(Ligne9)

— Ligne10

Ligne10 = encadrement.vertical..texte.habilite..heros.habilite..texte.espaceBlanc..encadrement.vertical..texte.espaceBlanc..texte.habilite..monstre.habilite..texte.espaceBlanc..texte.espaceBlanc..encadrement.vertical

print(Ligne10)

— Ligne11

print(encadrement.demiBas)

— Ligne12

Ligne12 = encadrement.vertical..texteCombat.combat..encadrement.vertical

print(Ligne12)

— Ligne13

print(encadrement.demiHaut)

— Ligne14

Attaque(heros, 0)

Attaque(monstre, 0)

Ligne14 = encadrement.vertical..texteCombat.attaque..heros.habilite..texte.espaceBlanc..texte.espaceBlanc..encadrement.vertical..texte.espaceBlanc..texteCombat.attaque..monstre.habilite..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..encadrement.vertical

print(Ligne14)

— Ligne15

print(encadrement.demiCentre)

— Ligne16

Ligne16 = encadrement.vertical..texteCombat.pvRestant..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..encadrement.vertical..texte.espaceBlanc..texteCombat.pvRestant..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..encadrement.vertical

print(Ligne16)

— Ligne17

DegatsHeros(heros.pv, monstre.habilite)

DegatsMonstre(monstre.pv, heros.habilite)

Ligne17 = encadrement.vertical..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..heros.pv..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..encadrement.vertical..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..monstre.pv..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..texte.espaceBlanc..encadrement.vertical

print(Ligne17)

— Ligne18

print(encadrement.demiBas)

— Ligne19

print(encadrement.decoratif)

— Ligne20

print(encadrement.bas)

— Impression texte d’ambiance

print(texteCombat.ambiance1)

print(texteCombat.ambiance2)

print(« § Le monstre préfère prendre la poudre d’escampette, quel couard… § »)

print(« § Le combat prend donc fin, quel magnifique victoire !!! § »)

print(« § Les points de vie du personnage sont remis à leur maximum. § »)

print(texteCombat.ambiance2)

print(texteCombat.ambiance1)

— Impression feuille de fin de combat

— Ligne1

print(encadrement.haut)

— Ligne2

print(encadrement.vertical..texteCombat.combatFin..encadrement.vertical)

— Ligne3

print(encadrement.verticalHorizontal)

— Ligne4

RestaurationFinCombat()

Ligne4 = encadrement.vertical..texte.pvMax..heros.pvMax..texte.espaceBlanc..texte.espaceBlanc..encadrement.vertical

print(Ligne4)

— Ligne5

print(encadrement.verticalHorizontal)

— Ligne6

print(encadrement.decoratif)

— Ligne7

print(encadrement.bas)

— Impression texte d’ambiance

print(texteCombat.ambiance1)

print(texteCombat.ambiance2)

print(« § L’aventure continue !!! § »)

print(texteCombat.ambiance2)

print(texteCombat.ambiance1)

print( » « )

8- Rendu graphique.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.