CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++/SDL] Formule incorrecte ?

PanPanBoom
PanPanBoom
Niveau 10
24 octobre 2014 à 18:35:19

Bonjour/Bonsoir tout le monde !

Donc voici mon problème : Je crée un jeu de catch avec un système de combat au tour par tour ( Mon avancement : https://www.jeuxvideo.com/forums/1-33123-50882-1-0-1-0-jeu-wwe-rpg-provisoire.htm ), et dans le combat il y a 4 choix : Attaquer, se défendre, prendre un objet ou abandonner. Actuellement je travaille sur la défense.

Donc j'ai fait quelque chose de simple : J'appelle une méthode qui me retourne un pourcentage au hasard entre 25% et 75%, ensuite j'envoie ce pourcentage à une méthode qui sert à nous attaquer. (Donc, à une méthode de l'IA) Une fois dans cette méthode, elle en appelle une autre qui sert à recevoir les degats, donc j'envoie dans cette méthode le nombre de dégats à prendre et le pourcentage de défense. Une fois dans cette méthode, elle soustrait à la vie ceci :

Sachant que degats = 150 et def le pourcentage au hasard :

m_vie -= (1-def/100)*degats

Mais, le perso prend quand même 150 de degats ! Donc, pour vérifier que le pourcentage était bien pris j'ai fais un cout qui m'affiche le pourcentage et ça marche ! Or, quand je fais un cout de la formule, cela m'affiche tout le temps 150.

D'où cela peut venir ? Si vous voulez du code, faites le moi savoir ! :ok: Merci d'avance ! :)

Pseudo supprimé
Pseudo supprimé 24 octobre 2014 à 19:16:46

c'est peut être parce que tu devrais faire ça :
m_vie -= (1-(def/100))*degats

HanataMuchika
HanataMuchika
Niveau 4
24 octobre 2014 à 19:17:51

J'ai pas ton code sous la main mais j'assume que tu utilise un entier(int) pour stocker def. Si c'est le cas c'est normal.
Def / 100 te renvoie logiquement un nombre entre 0 et 1. Sauf que si def est un entier, en c++ la division de 2 entiers renvoie un entier, arrondi si nécessaire.
Le problème se répercute sur tout le calcul et au final ta valeur vaudra soit 150, soit 0

PanPanBoom
PanPanBoom
Niveau 10
24 octobre 2014 à 19:41:03

mod :d) J'ai déjà essayé, ça ne change rien :-(
Hanata :d) Donc je devrais mettre un double ?

PanPanBoom
PanPanBoom
Niveau 10
24 octobre 2014 à 19:46:10

J'ai mis un double et ça marche, merci !

swarmpan
swarmpan
Niveau 9
24 octobre 2014 à 21:13:06

Utiliser un double ou un float ou même un simple cast devrait régler le problème en effet :oui:

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment