AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -34%
-34% LG OLED55B3 – TV OLED 4K 55″ 2023 ...
Voir le deal
919 €

 

 Afficher des coups critiques

Aller en bas 
3 participants
AuteurMessage
diditigrou
Pas mal



Messages : 34

Afficher des coups critiques Empty
MessageSujet: Afficher des coups critiques   Afficher des coups critiques EmptyMer 20 Jan 2016 - 18:12

Bonsoir,

Avec votre aide mes attaques fonctionnent correctement et j'ai implémenté en plus un système de jet d'attaque et de jet de parade, ainsi qu'un système de dégâts critiques quand l'attaque est bien supérieure à la défense.

Par contre, je ne sais pas comment faire pour que mes coups critiques apparaissent d'une autre couleur/taille que ceux des dégâts normaux.

Je vous mets le code d'attaque et celui d'affichage des dégâts.

Code:
rebours = 1 * room_speed;

if ((point_distance(heros_object.x, heros_object.y, goblin.x, goblin.y)) <= heros_object.portee) && (((irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6))+ heros_object.attaque_rapproche) >= ((irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6))+ goblin.parade))
    if (((irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6))+ heros_object.attaque_rapproche) - ((irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6)+irandom_range(1,6))+ goblin.parade)) > 7
    {
    heros_object.degats = (irandom_range(heros_object.degats_min,heros_object.degats_max))*2;
        gob_vie -= heros_object.degats;
    }
    else
    {
        heros_object.degats = irandom_range(heros_object.degats_min,heros_object.degats_max);
        gob_vie -= heros_object.degats;
    }

Code:
black = make_color_rgb(0,0,0);
red = make_color_rgb(255,0,0);
green = make_color_rgb(0,255,0);
draw_healthbar(goblin.x-25, goblin.y-25, goblin.x+25, goblin.y-30, gob_vie * (20/3), black, red, green, 0, 1, 1);

//texte pour les dégâts
if ((point_distance(heros_object.x, heros_object.y, goblin.x, goblin.y)) < heros_object.portee)
    {
    draw_set_halign(fa_center); // On aligne le texte au centre, sinon le texte sera décalé.
        if (rebours > 0) // On vérifie que le compte à rebours ne soit pas terminé
            {
            draw_text(x, y - 45, heros_object.degats); // On affiche les dégâts arrondis à l'unité
            rebours -= 1;
            }
    draw_set_halign(fa_left); // On remet l'alignement par défaut, pour éviter de décaler du texte ailleurs censé être aligné à gauche
    }
else {};

Est-il possible de simplifier mon code d'attaque ? Parce que là si ça continue, je vais avoir des if derrière des if derrière des if...
Revenir en haut Aller en bas
GDOR1
Très bonne participation
GDOR1


Messages : 130

Afficher des coups critiques Empty
MessageSujet: Re: Afficher des coups critiques   Afficher des coups critiques EmptyMer 20 Jan 2016 - 18:48

Pour afficher différemment les coups critiques, tu as les fonctions draw_set_color et draw_set_font.
Après tu n'as plus qu'à créer un font pour les coups critiques, et le choisir avant de dessiner le texte.
Après il te reste à trouver un moyen de savoir si c'est un coup critique, et faire une condition. Je pencherais pour une variable dans l'objet gobelin, qui se met sur 1 à chaque coup critique, puis se remet sur 0 quand rebours == 0.

Après pour simplifier ton code d'attaque, je comprends pas trop à quoi servent tous les irandom_range(1,6). Ce ne serait pas plus simple de mettre irandom_range(5,30) plutôt que 5 fois irandom_range(1,6) ?
Revenir en haut Aller en bas
diditigrou
Pas mal



Messages : 34

Afficher des coups critiques Empty
MessageSujet: Re: Afficher des coups critiques   Afficher des coups critiques EmptyMer 20 Jan 2016 - 19:39

Je regarderai cela pour l'affichage.

Concernant les 5 irandom_range, c'est pour simuler le jet de 5 dés.
Revenir en haut Aller en bas
hyper
Utilisateur confirmé: Rang ****



Messages : 1455

Afficher des coups critiques Empty
MessageSujet: Re: Afficher des coups critiques   Afficher des coups critiques EmptyMer 20 Jan 2016 - 20:24

GDOR1 a écrit:
Après pour simplifier ton code d'attaque, je comprends pas trop à quoi servent tous les irandom_range(1,6). Ce ne serait pas plus simple de mettre irandom_range(5,30) plutôt que 5 fois irandom_range(1,6) ?
Ton pentadé aura autant de chances de donner 5 que 10 ou 30 ou n'importe quelle valeur. Alors que 5 dés séparés auront plus de chance de donner la médiane (ici 17 ou 18) que 5 ou 30 Wink
Mais ça reste inutile Razz

_________________
côt.
Revenir en haut Aller en bas
https://cagibi.itch.io/
diditigrou
Pas mal



Messages : 34

Afficher des coups critiques Empty
MessageSujet: Re: Afficher des coups critiques   Afficher des coups critiques EmptyDim 24 Jan 2016 - 17:43

Cela reste inutile de faire 5 dés ?

Voici le code que j'ai mis, d'après mes tests, on dirait que ça fonctionne :

Code:
black = make_color_rgb(0,0,0);
red = make_color_rgb(255,0,0);
green = make_color_rgb(0,255,0);
draw_healthbar(goblin.x-25, goblin.y-25, goblin.x+25, goblin.y-30, gob_vie * (20/3), black, red, green, 0, 1, 1);

//texte pour les dégâts
if (((point_distance(heros_object.x, heros_object.y, goblin.x, goblin.y)) < heros_object.portee)&&(heros_object.attaque = 1)&&(heros_object.critique =1))
    {
    draw_set_colour(red); // On met la couleur en rouge
    draw_set_halign(fa_center); // On aligne le texte au centre, sinon le texte sera décalé.
        if (rebours > 0) // On vérifie que le compte à rebours ne soit pas terminé
            {
            draw_text(x, y - 45, (heros_object.degats * 2)); // On affiche les dégâts arrondis à l'unité
            rebours -= 1;
            }
    draw_set_colour(black); // On met la couleur en noir
    }
    else
    {
    if (((point_distance(heros_object.x, heros_object.y, goblin.x, goblin.y)) < heros_object.portee)&&(heros_object.attaque = 1))
        {
        draw_set_halign(fa_center); // On aligne le texte au centre, sinon le texte sera décalé.
        if (rebours > 0) // On vérifie que le compte à rebours ne soit pas terminé
            {
            draw_text(x, y - 45, heros_object.degats); // On affiche les dégâts arrondis à l'unité
            rebours -= 1;
            }
        }
        else {};
    }
draw_set_halign(fa_left); // On remet l'alignement par défaut, pour éviter de décaler du texte ailleurs censé être aligné à gauche
Revenir en haut Aller en bas
Contenu sponsorisé





Afficher des coups critiques Empty
MessageSujet: Re: Afficher des coups critiques   Afficher des coups critiques Empty

Revenir en haut Aller en bas
 
Afficher des coups critiques
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: