Vous lisez 2 fils de discussion
  • Auteur
    Messages
    • #67689
      Galaga88
      Participant

      Bonjour/Bonsoir tout le monde,

      Je ne suis pas sûr de comprendre comment fonctionne la fonction math.random() dans LOVE.
      Je cherche à afficher une image de façon aléatoire au niveau de abscisse (x) dès qu’on lance le programme.
      Je donne donc à la variable x de mon image la valeur de math.random(0, 500).
      Mais chaque fois que je lance le programme, c’est toujours à la même valeur (500) que l’image s’affiche.
      Comprend pas…

      1 local Base = {}
      2 Base.img = love.graphics.newImage(« images/Base.png »)
      3 Base.largeur = Base.img:getWidth()
      4 Base.hauteur = Base.img:getHeight()
      5 Base.x = 0
      6 Base.y = 590
      7
      8 function love.load()
      9 Base.x = math.random(0, 500)
      10
      11 end
      12
      13 function love.update(dt)
      14
      15 end
      16
      17 function love.draw()
      18 love.graphics.draw(Base.img, Base.x, Base.y, 0, 0.4, 0.5, Base.largeur / 2, Base.hauteur / 2)
      19
      20 end

    • #67709
      Back2TheCode
      Participant

      Salut Galaga88,

      C’est normal car les nombres générés par math.random ne sont différents que si on considère l’exécution en cours. Dès que tu relances à nouveau ton programme ce sera effectivement la même séquence. Cela peut être d’ailleurs très pratique si tu veux garantir un même résultat qui te convient (génération de map, décors etc.).

      Pour introduire de l’aléatoire « réel » sur plusieurs exécutions différentes (ordre d’apparition des ennemis etc.) il faudra alors que tu utiles la fonction math.randomseed() avant d’exécuter ton math.randoms().

      Par exemple :

      math.randomseed(os.time())
      math.randoms(1, 500)

      Voir la doc : http://lua-users.org/wiki/MathLibraryTutorial

      Remarque importante : A good* ‘seed’ is os.time(), but wait a second before calling the function to obtain another sequence!

      • #67710
        Galaga88
        Participant

        Ça marche bien, merci Back2TheCode! (Et pour le lien aussi)

    • #67711
      Back2TheCode
      Participant

      De rien, bon code à toi.

Vous lisez 2 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.