Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mouvement aléatoire d'un perso

[SDL] Plus question rapide sur la génération d'un nombre aléatoire

Sujet résolu
    11 février 2007 à 20:58:25

    Bonjour (ou plutôt bonsoir ... ^^ ),

    Dans le jeu que je développe actuellement, j'ai un personnage qui doit avoir un mouvement aléatoire. Je l'ai défini à l'aide de la fonction "rand()%". Le problème c'est que pour que le mouvement change en cours de route, j'ai été obligé de mettre un "rand()%" à chaque "tour de boucle" du programme.

    Conséquence ==> le mouvement est aléatoire, mais le personnage va en avant, puis en arrière ... Bref, il reste sur place ou dans une petite zone de fenêtre ... Je n'ai pas d'idée quant à "comment générer un mouvement aléatoire" qui se tienne ...

    Si quelqu'un a une petite idée, ou si quelqu'un a déjà fait quelque chose de similaire, je suis ouvert à toute proposition ! :D

    ************************************************************************************************

    Ma petite question rapide : sur l'IDE que j'utilisais auparavant (à l'IUT), on avait une fonction "randomize()" qui permet de faire un "random" qui soit vraiment un random ... C'est-à-dire qu'on a une valeur différente à chaque démarrage du programme, ce qui n'est pas le cas actuellement dans mon programme : le personnage que contrôle le joueur doit manger des petits carrés et ces petits carrés, placés aléatoirement dans la fenêtre, sont toujours à la même place à chaque niveau du jeu ...

    En clair : existe-t-il une fonction pour initialiser la génération aléatoire d'un nombre ?


    Je vous remercie par avance de vos suggestions et vos réponses ! ^^
    • Partager sur Facebook
    • Partager sur Twitter
      11 février 2007 à 21:07:09

      tu fais deux rands : un pour le nombre de cases que le personnage va se déplacer dans la direction désirée, et un autre pour la direction elle meme.
      en pseudo code sa donne sa :


      si(nombre_de_cases == 0){
          tant que (direction == direction_en_memoire){
              direction = aleatoire (les directions possible)
          }
          direction_en_memoire = direction
          nombre_de_cases = aleatoire(position actuelle+1, position maxi)
      }
      //deplacement du preso

      EDIT: Y'avait un petit bug dans le code que je t'avais donné ^^"
      • Partager sur Facebook
      • Partager sur Twitter
        11 février 2007 à 21:12:34

        Perso, pour mon snake j'utilise rand() mais juste avant chaque rand() je mets srand(SDL_GetTicks()); à la palce de mettre srand(time(NULL)); au début du programme
        Et ça marche plutôt bien.
        • Partager sur Facebook
        • Partager sur Twitter
          11 février 2007 à 21:33:40

          giovanni :

          Ah ... J'avais pas encore testé ... Mais l'idée me semble intéressante, il faut que je vois comment je peux l'intégrer simplement à mon programme ... lol ... Je ne compte plus les fonctions et les lignes ... Je vois l'idée ^^ ... bah, ça ne fera qu'un argument de plus parmi les 17 autres de ma fonction ... xD


          Sinon pour le srand, merci ! ^^ Je ne connaissais pas ...
          • Partager sur Facebook
          • Partager sur Twitter
            11 février 2007 à 21:50:22

            Et si tu mettais un x et y aléatoire en faisant un rand()%X et rand()%Y?
            • Partager sur Facebook
            • Partager sur Twitter
              11 février 2007 à 21:51:54

              Citation : Pole

              Et si tu mettais un x et y aléatoire en faisant un rand()%X et rand()%Y?



              Oui mais lui il veut que son perso se déplace d'un point A a un point B , pas qu'il saute de coordonnées en coordonnées .
              • Partager sur Facebook
              • Partager sur Twitter
                11 février 2007 à 21:54:43

                Alors utilise l'interpolation linéaire.

                Moi je ne sais pas ce qu'il veut dire dans "une position aléatoire" pour la bonne raison qu'un nombre aléatoire n'existe pas.
                • Partager sur Facebook
                • Partager sur Twitter
                  11 février 2007 à 21:58:12

                  Je pense qu'il veut faire une peuso-IA de déplacement , le personnage se déplace aléatoirement sur la map selon direction correspondante au nombre alétoire généré :

                  exemple :
                  si nombre aléatoire = 1
                  perso se dirige vers la droite
                  si nombre aléatoire = 2
                  perso se dirige vers la gauche
                  ect ect

                  et son problème c'est que le rand s'effectue a chaque pas donc son perso reste toujours dans le meme perimetre .
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 février 2007 à 22:06:18

                    La position n'est pas aléatoire, elle est définie en fonction d'une variable qui définie le mouvement.
                    4 cas possible pour le mouvement : avant, arrière, droite et gauche.

                    C'est cette variable qui change en fonction du temps. Je viens de tester la solution que m'a proposé giovanni est elle se trouve satisfaisante (en tout cas c'est bien mieux que ce que j'avais mis moi ... ^^ )

                    Merci bien pour vos réponses ! (Si vous avez d'autres idées, n'hésitez pas ! ;) )


                    EDIT : C'est exactement ce que j'ai fait honest_knight ! :D
                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 mars 2017 à 17:24:13

                      Je veux Faire une animation aléatoire des ennemis ou des entités secondaires dans un jeu 2 D avec SDL
                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 mars 2018 à 11:47:36

                        Vous pouvez mettre votre code stp ?

                        -
                        Edité par BELHADJYAHIAAziz 2 avril 2018 à 21:02:16

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Mouvement aléatoire d'un perso

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown