Il s'agit d'un rapport de projet concernant le codage du jeu des allumettes en langage C, comprenant toutes les phases du projet, de la conception au code. En particulier, le rapport contient la création d'une intelligence artificielle. Il s'agit d'un rapport de 1ère année de Grande Ecole d'Ingénieurs.
[...] Cahier des charges 1 Fonctions de base nécessaires au programme : - interface joueurs/machine en mode texte - affichage des allumettes - actualisation de l'avancement de la partie - reconnaissance de la fin d'une partie - choix du jeu à un ou deux joueurs - existence d'une intelligence artificielle 2 Fonctions avancées - choix du niveau d'intelligence artificielle - choix du nom du (des) joueur(s) - déclaration personnalisée du vainqueur - historique des victoires et défaites des joueurs Découpage en modules 1 Module Programme Principal Le module principal gère l'interface entre les utilisateurs et la machine, il permet tout d'abord de choisir le nombre de joueurs, leurs noms, le choix du niveau d'intelligence artificielle (dans le cas du jeu à un seul joueur) puis il crée un tableau de six cases qui représente l'état initial du jeu : la première prend la valeur un, la deuxième deux, etc. Une case de ce tableau représente une ligne d'allumettes, et la valeur prise par cette case représente le nombre d'allumettes sur cette ligne. Il invite alors le joueur à présenter sa requête et utilise les autres modules pour faire évoluer le jeu en conséquence. Plusieurs fonctions et procédures ont été créés pour simplifier le main : - la procédure saisieJoueur prend en argument le numéro du joueur et le nom d'une variable de type chaîne de caractères. [...]
[...] Afin de pouvoir utiliser l'une des trois intelligences artificielles selon le choix du joueur, nous avons créé un pointeur sur procédure *pF qui prend selon les cas, la valeur intelligence1, intelligence2, ou intelligence3. La modification de ce pointeur est faite par la procédure choixIntelligence, qui prend en paramètre un pointeur sur pointeur sur procédure. Nous avons opté pour l'utilisation de la commande switch pour gérer les choix des joueurs, ce qui permet une plus grande lisibilité du programme et évite des imbrications de if A chaque nouveau tour, on vérifie que le tableau n'est pas vide en additionnant le contenu de toutes ses cases, par l'intermédiaire de la fonction finJeu. [...]
[...] De même, on vérifie seulement que le tableau rentré soit réaliste Tests complémentaires Les tests complémentaires ont eu pour but de vérifier que l'utilisateur reste dans le cadre imposé par le programme : - le programme n'avance pas s'il appuie sur ENTREE sans avoir rentré le nombre de joueurs (et il affiche un rappel si ce qui est rentré est différent de 1 ou - le programme n'avance pas si l'utilisateur appuie sur ENTREE sans avoir tapé son nom - toute entrée autre que ou 3 dans le choix du niveau d'intelligence, entraîne un message de rappel et un retour à la question Choisissez un niveau d'intelligence : - le programme affiche un rappel si l'utilisateur tape un chiffre autre que 1 et 2 lors de la demande rejouer/quitter et il n'avance pas tant que rien n'est entré par le joueur - lorsque l'utilisateur entre une chaîne de caractères au lieu d'un nombre, le programme s'arrête. - un test est effectué chaque fois que la fonction un malloc est utilisée. Il entraîne l'arrêt du programme s'il n'est pas possible de réserver des ressources pour enregistrer des données relatives au jeu, en l'occurrence le tableau de jeu. [...]
[...] Nous avons donc préféré utiliser un fichier binaire, car il permet une modification directe d'un élément lu dans le fichier. Ce fichier utilise cependant la même structure que celle utilisée avec le fichier texte. Afin d'alléger la procédure historique, nous avons créé deux autres procédures ; l'une, print_historique() , affiche la totalité du fichier binaire, l'autre, insertion_nouveau, permet d'ajouter une nouvelle structure au fichier, dans le cas où c'est la première partie du joueur. La procédure historique prend en premier argument le nom du gagnant, et celui du perdant en second. [...]
[...] Nous avons cependant créé quelques petites fonctions afin d'alléger le main. Au début du jeu, un message rappelle la règle au(x) joueur(s), ainsi que la commande CTRL-C pour quitter le jeu en cours de partie. L'utilisation du nom des joueurs permet à la fois de proposer une interface plus agréable et personnalisée, mais aussi de pouvoir gérer un historique des victoires et des défaites. Nous avons utilisé pour stocker ces noms des tableaux statiques de 16 caractères maximum. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture