As des As (or Ace of Aces originally) is a plane fight board game published in 1980. This program is a playable version with multiple AIs, made with the logical programming langage Prolog. Each turn the two players will choose three actions that will be executed at the same time. During each move, a plane shoots its enemy if he is in range, which makes the latter lose one life point. A player wins when the other player's life has reached 0.
Beware! If a player is out of the board at the end of the three moves, he loses the game.
We provide many IA with different behaviour such as:
- Random.
- Offensive.
- Defensive.
- Hybrid.
In order to make this program, as ludic as possible, we provide the possibility to switch between an AI and a human player, to challenge each IA.
We have developed a light web interface to show the fight result between 2 AIs or to take part of the battle!
selectPlayers(J1, J2)
- -1->Human player
- 0->aiRandom
- 1->aiOffensive
- 2->aiDefensive
- 3->aiDraw
- 4->aiOffensiveBest
- 5->aiDefensiveBest
- 6->aiDrawBest
- 7->aiProbab with 0.5 agro
- 8->aiOrOffensive
- 9->aiOrDefensive
- 10->aiOrOffensiveBest
- 11->aiOrDefensiveBest
- 12->aiHybride
- 13->aiHybrideNonDeterministe
- 14->aiMechante
- lancer game.pl
- "selectPlayer(X,Y)." avec X et Y les nombres correspondant aux types de joueur (voir description des IAs)
- pour afficher la partie et jouer pas à pas lancer "game."
- pour ne pas avoir d'affichage( seulement le vainceur à la fin) lancer "gameNoDisplay."
- lancer server.pl
- "server(8000)"
- ouvrir la page avion.html contenu dans le dossier Interface
- suivre les instructions de la page html
- creer un module dans le dossier IA
- l'IA doit être appelée selon ce format: 'monIA(Idx).' ou Idx est l'indice du joueur utilisant cette IA (1 ou 2)
- une IA doit modifier le fait 'action(Idx, ListeAction)' avec Idx l'indice du joueur et ListeAction la liste d'action generée
- importer le module de l'IA dans le fichier game.pl et ajouter les entêtes d'import dans le fichier de l'IA
- ajouter dans game.pl un predicat 'playIA(Idx, NumeroIA)' qui appelle 'monIA(Idx)'
- voila votre IA prète pour la bataille
- lancer game.pl
- "load_test_files(_)."
- "run_tests".
- 0 : genere des listes de 3 coups aléatoirement.
La logique de cette IA est de se rapprocher le plus possible de sa cible tout en selectionnant les coups qui lui permettent de tirer sur celle ci, elle ne prend pas en compte les degats qui lui sont fait.
- 1 :Cette IA selectionne aléatoirement un meilleur coup LOCAL (meilleur que ceux d'avant).
- 4 :Cette IA selectionne aléatoirement un meilleur coup GLOBAL (meilleur que ceux d'avant et après).
- 8 :En plus de l'heuristique générale cette IA finit toujours orientée vers la partie du plateau ou il y a le plus d'espace.Cette IA selectionne aléatoirement un meilleur coup LOCAL (meilleur que ceux d'avant).
- 10 :En plus de l'heuristique générale cette IA finit toujours orientée vers la partie du plateau ou il y a le plus d'espace.Cette IA selectionne aléatoirement un meilleur coup GLOBAL (meilleur que ceux d'avant et après).
La logique de cette IA est de s eloigner le plus de son adversaire tout en prenant le moins de coups possible elle ne prend pas en compte les degats potentiels qu elle peut infliger
- 2 :Cette IA selectionne aléatoirement un meilleur coup LOCAL (meilleur que ceux d'avant).
- 5 :Cette IA selectionne aléatoirement un meilleur coup GLOBAL (meilleur que ceux d'avant et après).
- 9 :En plus de l'heuristique générale cette IA finit toujours orientée vers la partie du plateau ou il y a le plus d'espace.Cette IA selectionne aléatoirement un meilleur coup LOCAL (meilleur que ceux d'avant).
- 11 :En plus de l'heuristique générale cette IA finit toujours orientée vers la partie du plateau ou il y a le plus d'espace.Cette IA selectionne aléatoirement un meilleur coup GLOBAL (meilleur que ceux d'avant et après).
Ces IAs combinent des comportements offensifs et defensifs.
- 3 :Cette IA cherche l'égalité, par collision ou par tirs simultanés, selectionne aléatoirement un meilleur coup LOCAL (meilleur que ceux d'avant).
- 6 :Cette IA cherche l'égalité, par collision ou par tirs simultanés, selectionne aléatoirement un meilleur coup GLOBAL (meilleur que ceux d'avant et après).
- 7 :Cette IA utilise des probabilités pour generer des coups soit offensifs soit defensifs, selectionne aléatoirement un meilleur coup LOCAL (meilleur que ceux d'avant).
- 12 :La logique de cette IA est de privilegier les actions lui permettant de tirer sur son adversaire sans se faire tirer dessus, elle prend la meilleure solution globale en premiere position.
- 13 :La logique de cette IA est de privilegier les actions lui permettant de tirer sur son adversaire sans se faire tirer dessus, elle prend une des meilleures solutions globales de manière aléatoire.
- 14 :La logique de cette IA est d'utiliser l'IA 7(probabiliste) en changeant les ratios d'offensivité/defensivité en fonction de sa situation actuelle(points de vie).