Problème IA ennemis Pacman
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Problème IA ennemis Pacman



  1. #1
    kisameakatsuki

    Unhappy Problème IA ennemis Pacman


    ------

    Bonjour à tous !

    Je suis entrain de créer un jeu de Pacman, et je bloque pour l'IA(l'intelligence artificielle) des ennemis
    Je ne sais pas du tout comment m'y prendre.

    J'ai penser à faire un boucle qui les raproche du héros et detecte si il y a une collision (avec les mur) pour qu'il puissent tournée. Mais le problème est que lorsque que je fais cela,
    mon programme se bloque car il est dans une boucle

    Je me réfère donc à vous, pouvez vous m'aidez ?

    Merci d'avance !

    PS: je suis nouveau sur le forum, alors si j'ai fait quelque chose qu'il ne fallait pas (trompé de partie...) je m'en excuse d'avance !

    -----

  2. #2
    kisameakatsuki

    Re : Problème IA ennemis Pacman

    Excusez-moi, j'ai oublié de préciser que je codé en C avec la bibliothèque SDL

  3. #3
    Arzhur

    Re : Problème IA ennemis Pacman

    Mettre la boucle dans un Thread séparé, c'est jouable ?

  4. #4
    galerien69

    Re : Problème IA ennemis Pacman

    slt kisameakatsuki,

    a priori, il faut que tu sois capable pour deux points donnes de ta map, de savoir quels sont les chemins disponibles, et quelles sont les distances. Si tu es capable de les calculer (ou les precalculer) alors tu peux apres choisir quel chemin prendre.

    Pour calculer les chemins d'un point quelconque à un autre, tu peux utiliser le classique Astar.
    l'idée c'est de créer tes noeuds à chaque embranchement, et pis la valeur des arretes, ben c'est le nombre de cases pour aller d'un noeud à l'autre!

  5. A voir en vidéo sur Futura
  6. #5
    kisameakatsuki

    Re : Problème IA ennemis Pacman

    Salut,
    Merci de vos réponse
    galerien69, je vais me renseigner sur Astar !
    Et Arzhur, je suis assez débutant, et je ne sais pas se qu'est un thread .
    Mais je vais me renseigner aussi !

    Merci encore pour vos réponse !

  7. #6
    Arzhur

    Re : Problème IA ennemis Pacman

    Bonjour,


    Et Arzhur, je suis assez débutant, et je ne sais pas se qu'est un thread .
    Pas de soucis...Un Thread est un truc qui te permet d'exécuter du code "en parallèle" (c'est pas tout à fait vrai mais passons) de ton "code principal". Du coup si ta boucle s'exécute "à côte" le programme ne devrait plus bloquer.

  8. #7
    grosmatou75001

    Re : Problème IA ennemis Pacman

    Ouais... Effectivement si on met la boucle dans un thread séparé le programme principal (le thread principal) ne va plus se bloquer... ça sera le deuxième thread. Et en plus on a tout les problèmes liés aux communications inter-thread en plus. Si la boucle se bloque elle est fausse et il faut trouver une version correcte, tout simplement...

  9. #8
    Arzhur

    Re : Problème IA ennemis Pacman

    Si la boucle se bloque elle est fausse et il faut trouver une version correcte, tout simplement...
    Pas forcement, j'ai compris le problème de la manière suivante : " j'ai fait un programme et dedans j'ai une boucle infinie (celle qui fait bouger les ennemis)"...Du coup la boucle est bonne,le thread principal n'est pas "bloqué" (il fait tourner la boucle) mais le programme ne répond plus.

    Il faudrait peut-etre que kisameakatsuki nous donne plus d'info sur son programme pour qu'on puisse voir ce qui bloque vraiment (si l'erreur est dans la boucle ou dans la conception de l'algo)

    on a tout les problèmes liés aux communications inter-thread
    Boaaarf ça rajoute un peu d'piment...

  10. #9
    kisameakatsuki

    Re : Problème IA ennemis Pacman

    Salut,
    C'est exactement ce que tu viens de dire Arzhur, ma boucle infini permet de faire bouger les ennemis, mais comme elle est infini, le programme ne repond pas.
    Je vais donc utiliser un thread, je vais apprendre à m'en servir avec se tutoriel http://fr.openclassrooms.com/informa...s-et-les-mutex
    Merci à tous de m'avoir aidé !

  11. #10
    bokan

    Re : Problème IA ennemis Pacman

    Il y a bien une boucle pour ton programme et à chaque iteration elle fait ceci :
    Code:
    - déplacer le pacman dans la direction en cours
    - si on est exactement sur case{
         - manger la bille si y'en a une, si c'est une super bille, passer en mode super pacman
         - lire les input et modifier les vecteurs de mouvement (speedX et speedY) de pacman en fonction
    }
    - pour chaque fantôme{
         déplacer le fantome dans la direction en cours
         si on est sur une case {
              si on est en mode normal {
                  calculer la différence entre Xpacman et XduMonstre, pareil pour Y on les appelera DeltaX et DeltaY
                  si abs(DeltaX) > abs(DeltaY){
                       on va tenter une approche sur l'axe X d'abord
                       si (DeltaX > 0)&&(on peut aller à droite){
                            on change le mouvement pour aller à droite
                       }si (DeltaX<0)&&(on peut aller à gauche){
                            on change le mouvement pour aller à gauche
                       }else {
                          on tente l'approche sur l'axe Y
                       }
                  }sinon{
                     on tente une apporche sur l'axe Y
                  }
              }sinon{
                pareil mais on tente de fuir
             }
    }
    - attendre vbl
    - Actualiser l'affichage
    C'est du pseudo code et y'a de jolies optimisations à faire.

  12. #11
    bokan

    Re : Problème IA ennemis Pacman

    Quelques infos supplémentaires. Quand je dis "sur une case" ton aire de jeu est un tableau à deux dimensions, une valeur par case. La valeur représente ce qu'est cette case ; mur, vide, bille, superbille...
    Les personnages peuvent se déplacer de case en case. Mais si tu veux que le déplacement soit fluide, il faut qu'ils fassent en plusieurs étapes intermédiaires. Pour cela il faut définir le nombre de pas intermédiaires. Plus il y en a, plus les mouvement sont fluides et lent. Je te laisse trouver comment implémenter ça.

    "L'intelligence" des montsres d'un pacman ne peut pas être qualifié d'IA, c'est vraiment trop basique.

  13. #12
    bisou10

    Re : Problème IA ennemis Pacman

    Moi justement je ne lui conseillerais pas de threader dans un premier temps. C'est trop complexe pour un débutant, de résoudre les problèmes de contextes, de race conditions, etc.

    Juste de faire en sorte que sa boucle principale tourne (et contienne tout: gestion des controles, deplacement du pacman, deplacement des ennemis + les tests idoines 'pastille' 'rencontre'). Et ensuite, quand ce sera au point, de migrer une partie du code en 1 ou plusieurs threads.

    Pense à bien découper ton code en blocs fonctionnels !

  14. #13
    kisameakatsuki

    Re : Problème IA ennemis Pacman

    Salut,
    Merci pour ta reponse !
    C'est vraiment bien expliqué
    Je mis met tous de suite !

    Aurevoir !

  15. #14
    kisameakatsuki

    Re : Problème IA ennemis Pacman

    Edit: *vos reponses

Discussions similaires

  1. bonsoir les miniers sont ils les pires ennemis de l'environnement
    Par invite9daecf8e dans le forum Environnement, développement durable et écologie
    Réponses: 11
    Dernier message: 02/12/2012, 17h07
  2. Réponses: 13
    Dernier message: 08/04/2007, 11h20