Intelligence artificielle

Bonsoir tout le monde

Ca y'est je vais pouvoir reprendre et consacrer un peu plus de temps à  la programmation...

J'aimerais adapter un de mes jeux sur Ipad et j'aimerais ajouter la possibilité de jouer contre une IA.
Si quelqu'un connais le sujet ou a une piste, je suis preneur car là  je ne vois pas du tout par où commencer.

En gros pour un jeux comme othello/reversi comment fait-on, c'est quoi les bases ? J'imagine qu'il faut faire tester toutes les combinaisons possible à  l'IA, mais comment. Le temps doit être super long aussi pour tout tester.

Enfin bref si certains ont des infos (type jeu othello/puissance4/echec) je veux bien car j'ai rein trouver de concret.


Merci beaucoup.

Réponses

  • AliGatorAliGator Membre, Modérateur
    22:10 modifié #2
    Regarde du côté des algorithmes A* (prononcer "A-étoile"), du backtracking, etc...
  • lugdanumlugdanum Membre
    22:10 modifié #3
    Excellent !

    Merci ça c'est un bon point de départ. 
  • DrakenDraken Membre
    22:10 modifié #4
    Je ne vois pas trop le rapport entre le A* et les jeux de plateaux. C'est un algorithme "chercheur de chemins", pour trouver le trajet le plus rapide sur une carte. Bon d'accord, on peut comparer un damier a une minuscule carte. Le A* est notamment utilisé dans les jeux en temps réels, type Starcraft, pour déplacer les unités. Il suffit de sélectionner une unité et de cliquer sur une destination, pour qu'elle voyage toute seule, guidée par son "chercheur de chemin".

    Tu peux trouver des infos sur le sujet en cherchant "pathfinder" ou "A*"
  • CéroceCéroce Membre, Modérateur
    décembre 2011 modifié #5
    Les cours de Stanford en vidéo.
    (J'ai pas tout compris à  l'organisation, mais les vidéos des cours ont tout de même l'air d'être dispo sur YouTube).
  • cyranocyrano Membre
    22:10 modifié #6

    Je ne vois pas trop le rapport entre le A* et les jeux de plateaux


    pas faux, pour les jeux de plateau à  2 joueurs (echecs, dames, othello...) c'est l'alpha-beta.

    faire qque chose de "costaud" n'est pas trivial.

    regarde la : http://www.ffothello.org/info/algos.php

    après si tu as des questions, tu seras le bien venu ;-)

  • AliGatorAliGator Membre, Modérateur
    22:10 modifié #7
    Si tu t'ennuies et a besoin de lecture sinon, il existe Une liste complète des algorithmes existants, classés par genre, sur Wikipedia :P
  • AliGatorAliGator Membre, Modérateur
    22:10 modifié #8
    Et sinon pour des jeux type Othello le plus simple à  implémenter est quand même je pense le backtracking.
    Un peu à  la Prolog (j'ai pas mal codé en prolog, c'est assez puissant pour ce genre de cas d'usage, le code prolog consiste à  "énoncer les règles" -- avec une syntaxe structurée -- et ensuite t'as plus qu'à  lui fournir un plateau en entrée et il te dis toutes les suites de coups permises, celles qui donnent le plus de points, etc...)
    Perso j'aime bcp le Prolog pour ce genre de cas, ça m'a toujours bluffé qu'en quelques lignes de code tu expliques les règles de Sudoku et il sait soit te générer des grilles à  la volée, soit te les résoudre, soit te dire si une grille finie (ou pas) est valide, ...

    Bon après ça reste du backtracking. Mais pour un Othello ça me semble assez simple à  mettre en place (peut-être pas le plus performant, mais pour une première IA le concept est simple, tu testes tous les chemins, procèdes par élimination au plus tôt quand tu vois qu'un chemin va bloquer, et tu retiens celui qui te donne le plus de points, sachant que pour augmenter le niveau de ton IA tu peux la faire prévoir de plus en plus de coups à  l'avance par exemple)
  • lugdanumlugdanum Membre
    22:10 modifié #9
    Bonsoir

    Merci à  vous tous pour vos conseils.

    Je vais voir tout ça, le backtracking, l'alpha-beta et voir les liens que vous m'avez donnés.

    Merci !!
    :)
  • cyranocyrano Membre
    22:10 modifié #10
    le backtracking comme l'explique Ali, c'est l'alpha-beta  :D

    c'est un othello que tu veux developper?
  • lugdanumlugdanum Membre
    22:10 modifié #11
    Bonsoir

    Non ce n'est pas un othello, c'est un jeu à  moi que je voudrais adapter. C'est un jeu de type abstrait, donc avec un fonctionnement proche de ce genre de jeu quand même.

    Merci.
    :)
  • DrakenDraken Membre
    22:10 modifié #12
    Certains jeux d'échecs utilisent des bibliothèques de coups pour les débuts et les fins de partie.

  • AliGatorAliGator Membre, Modérateur
    22:10 modifié #13
    Si ça reste un "jeu à  somme nulle" (ce qui est le cas de la plupart des jeux où les 2 joueurs démarrent avec les mêmes pièces/choix et ont les mêmes chances de gagner), le principe de l'algo alpha-beta restera le même donc Othello ou pas c'est pareil ;)
  • lugdanumlugdanum Membre
    22:10 modifié #14
    Ok, donc je vais me concentrer plus sur l'algo alpha-beta.

    Encore merci pour tout  :D
  • DrakenDraken Membre
    22:10 modifié #15
    Le principe de l'alpha-bête n'a rien d'extraordinaire, c'est juste une méthode pour éviter d'évaluer TOUTES les combinaisons possibles de mouvement. Il "élague" les branches de possibilités non prometteuses. Il a besoin d'une fonction d'évaluation du tableau de jeu à  un moment donné. C'est à  toi de la créer, en fonction des règles de ton jeu. Bon courage !

  • cyranocyrano Membre
    22:10 modifié #16

    Il "élague" les branches de possibilités non prometteuses.


    non, il élague sans risque les mauvaises possibilités. Pour les branches non prometteuses (qui semblent être une mauvaise possibilités) il y a d'autres techniques.
  • tabliertablier Membre
    22:10 modifié #17
    Certains jeux d'échecs utilisent des bibliothèques de coups pour les débuts et les fins de partie
    Et les bons joueurs les connaissent par coe“ur: Le mat de Legal, l'ouverture sicilienne, le coup du capitaine, le mat du berger, l'ouverture Ruy Lopez  ...... etc.  Rien ne remplace l'expérience  et l'apprentissage!
  • DrakenDraken Membre
    22:10 modifié #18
    Un lien tout bête sur le sujet.

    [url=http://fr.wikipedia.org/wiki/à‰lagage_alpha-beta]http://fr.wikipedia.org/wiki/à‰lagage_alpha-beta
    [/url]

Connectez-vous ou Inscrivez-vous pour répondre.