Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 58 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
58
Dung lượng
5,83 MB
Nội dung
MEMOIRE DE FIN D’ETUDES MASTER D’INFORMATIQUE Conception et Développement d’un moteur d’intelligence artificielle pour un jeu d’échecs multiplateformes Étudiant : HOANG Duc Viet Superviseurs : HO Tuong Vinh NGUYEN Duc Thinh Hanoi, Juin 2014 Table de matières Table de matières Table de figures Remerciements Résumé Introduction Contexte du stage 1.1 IFI 1.2 Société Newwave 1.3 Projet du jeu vidéo Jingci Motivation et objectif du stage Contribution Chapitre État de l’art : Epreuves générales de la programmation de jeux d’échecs 10 Représentation des données 10 Gestion des mouvements 11 2.1 Génération des mouvements 11 2.2 Evaluation de mouvements 11 2.3 Recherche de mouvements 12 Algorithmes de recherche (Minimax, Alpha-Beta) 14 3.1 Algorithme Minimax 14 3.2 Algorithme Elagage Alpha-Beta (Alpha-Beta pruning) 16 Chapitre Épreuves du projet 18 Description générale du jeu 18 Spécifications d’exigences fonctionnelles 19 Spécifications d’exigences non-fonctionnelles 23 Capacité de réfléchir du noyau d’Intelligence artificielle 23 Difficultés de calcul 24 Chapitre Solutions proposées 26 Arbres de positions 27 Equation d’évaluation 29 Stratégies de décisions 30 3.1 Tactique défensive 30 3.2 Tactique offensive 31 Chapitre Réalisation et résultats 33 Ingénierie de développement 33 1.1 Méthode de développement 33 1.2 Langage de programmation et plateformes 35 1.3 Gestion de code et de changement 37 Conception et Développement 38 2.1 Représentation des données 39 2.2 Implémentation de règles et de contrains 43 2.3 Implémentation de la recherche de mouvement 44 2.4 Améliorations 45 Résultat & évaluation 49 3.1 Test 49 3.2 Évaluation 50 Conclusion 56 Conclusion 56 Perspectives 56 Bibliographies 57 Table de figures Figure 1-1 Arbre de positions du jeu Tictactoe [8] 11 Figure 1-2 Exemple de l’évaluation de l’heuristique [15] 12 Figure 1-3 Jeux de deux somme nulle: Echecs[16], Echecs chinoises[17], Tictactoe[18], Go[19], Othello[20], Gomoku[21] 13 Figure 1-4 Illustration de l’algorithme Minimax [9] 14 Figure 1-5 Algorithme Minimax pour trouver la solution de Tictactoe [8] 15 Figure 1-6 Algorithme Alpha-Beta [9] 16 Figure 2-1 Terrain du football [13] 19 Figure 2-2 Tablier de jeu 20 Figure 2-3 Pièces de jeu: Ballon, Joueurs, Gardiens (de goal) 20 Figure 2-4 Portée de courses: pour le ballon et pour le joueur 20 Figure 2-5 Portée de pièce et de ballon selon le cas 21 Figure 2-6 Illustration du cas de répétition de jeu 21 Figure 2-7 Illustration du cas de ballon bloqué 22 Figure 2-8 Illustration du cas de ballon bloqué 22 Figure 2-9 Initiation du jeu 23 Figure 3-1 Elagage Alpha-Beta [14] 27 Figure 3-2 Exemple de la coupure Alpha [14] 28 Figure 3-3 Facteurs d’évaluation d’une position de jeu 29 Figure 3-4 Tactique défensive 31 Figure 3-5 Tactique offensive 31 Figure 4-1 Diagramme Gantt du projet Jingci 34 Figure 4-2 Plan de réalisation du Jingci 35 Figure 4-3 Architecture de l’application NDK [12] 37 Figure 4-4 Structure de codage du projet Jingci 38 Figure 4-5 Diagramme de classes du noyau IA 39 Figure 4-6 Représentation de tablier dans le mémoire 40 Figure 4-7 Représentation de tablier et des sentinelles 41 Figure 4-8 Représentation de la surface de but 41 Figure 4-9 Représentation de la zone de gardien de but 42 Figure 4-10 Classe Piece 42 Figure 4-11 Classe d’une position du jeu JingciNode 43 Figure 4-12 Algorithme de trouver les carres disponibles 44 Figure 4-13 Algorithme de décision 46 Figure 4-14 Tactique offensive 47 Figure 4-15 Tactique défensive 48 Figure 4-16 Ecran du programme Jingci et écran d’étape d’initiation 51 Figure 4-17 Ecrans d’étape de préparation 52 Figure 4-18 Ecrans de mouvement du jeu 52 Figure 4-19 Ecrans du tir au goal 53 Figure 4-20 Ecrans de la victoire et de l’échec 53 Remerciements Je remercie mes collègues dans la société Newwave, pour m’avoir permis d’effectuer ce stage dans les meilleures conditions possibles, qui ont pris du temps pour me guider dans mon stage J’ai eu l’opportunité de pouvoir travailler pendant mois en tant que stagiaire au sein de la société Newwave oự jai reỗu un accueil chaleureux de la part de toutes les personnes présentes dans cette entreprise Je remercie également mes professeurs d’informatique l’IFI pour m’avoir enseigné les connaissances nộcessaires Mes sincốres remerciements mes professeurs de franỗais pour mavoir accompagnộ dans lapprentissage du franỗais nộcessaire pour mes études l’IFI en particulier et mon métier en général Je remercie également M Nguyen Van Tuan et Mme Nguyen Thi Hong Loan pour leurs aides concernant les procédures administratives pendant mon Master a l’IFI Je tiens remercier mes parents pour leur mobilisation, l’encouragement constant et pour leur aide financière Ils m’ont permis de réaliser mes études et mon stage dans de bonnes conditions Enfin, je remercie amicalement mes amis vietnamiens et mes amis franỗais qui sont toujours côté de moi pour partager des difficultés et m’encourager effectuer les études IFI et ce stage Résumé Ces dernières années, le domaine des jeux vidéo s’est développé sans cesse grâce au développement de matériel et d’algorithmes En simulant le football, Jingci est un nouveau jeu du type d’échecs et nous voulons construire un jeu vidéo multiplateforme pour présenter ses intérêts Dans le projet Jingci, nous nous concentrons dans le but de développer un moteur d’intelligence artificielle afin d’attirer les utilisateurs étudier les règles et jouer au jeu Malgré la croissance des performances des appareils portables, la programmation de jeux d’échecs est tournée vers la recherche de solution dans un espace contenant énormément de positions Des algorithmes ont été inventés pour résoudre le problème, par exemple Minimax, Alpha-Beta, etc En évaluant les contraintes de temps de traitement et la limitation de ressource des appareils portables pendant la durée de réalisation, nous avons décidé d’appliquer l’Alpha-Beta pour implémenter un jeu vidéo qui soit déployé sur la plateforme mobile Dans le cadre de ce mémoire, nous allons exposer les problématiques, l’analyse et les solutions d’application l’algorithme d’élagage Alpha-Beta et les tactiques de football Enfin, nous allons présenter le résultat et l’évaluation de la bonne efficacité en appliquant l’élagage Alpha-Beta pour réduire l’espace de recherche de solution et des stratégies de réflexion pour le moteur d’intelligence artificiel proposé pendant la réalisation Mots-clés : intelligence artificielle, moteur de jeu vidéo, jeux mobiles, jeux d’échecs, jeux somme nulle, élagage alpha-beta Introduction 1.1 Contexte du stage IFI L’Institut de la Francophonie pour l'Informatique [23] est un institut international d’études supérieures en informatique située Hanoi (Vietnam) et appuyée par l’Agence Universitaire de la Francophonie (AUF) et par l’Université Nationale du Vietnam L’Université de La Rochelle [24] est partenaire depuis plusieurs années avec l’IFI L’IFI offre deux formations Master et une double diplomation franco-vietnamienne pour ses étudiants: Systèmes Intelligence & Multimédia et Réseaux & Systèmes Communiquant Pour ma part j’ai suivi le Master Systèmes Intelligences & Multimédia qui est enseigné totalement en franỗais 1.2 Sociộtộ Newwave Newwave est une jeune sociộtộ vietnamienne [25] Elle a été créée en 2011 par un groupe d’ingénieurs chaleureux et ambitieux Ils étaient ingénieurs au début En développement constant, la société se compose en ce moment de plus de 30 jeunes membres Plusieurs projets ont été menés avec la satisfaction du client Etant membre de l’association de logiciel du Vietnam, la société se concentre sur le domaine informatique, particulièrement dans le service outsourcing pour le marché japonais et le marché domicile Dans son élan de développement, la société est en train de chercher le chemin afin de participer au marché européen avec des solutions et des productions techniques de hauts niveaux Ayant des bonnes expériences avec les ressources libres (SugarCRM, CMSMS, vTiger, Apache LAMP, etc.) et des technologies modernes (HTML5, PHP/Javascript) et des plateformes (Microsoft, Java, iOS, Android), l’orientation en terme de développement est tourné vers des services informatiques principaux : - 1.3 Développement de Logiciels personnalisés ; Développement d’Applications Mobiles ; Externalisation de Logiciels (Software Outsourcing) ; Maintenance de Logiciels Projet du jeu vidéo Jingci Jingci est un jeu du type stratégique qui a été inventé par un auteur japonais il y a quelques années C’est un jeu du type jeu d’échecs simulant le football avec deux adversaires qui essayent toujours de marquer le but l’un de l’autre adversaire Actuellement, ce jeu n’est pas connu au Japon ou dans le monde d’entier Pour intéresser les joueurs aux caractéristiques et au potentiel, notre client décide de développer un jeu vidéo sur la plateforme mobile, particulièrement sur iOS et sur Android Pour ce fait, la difficulté de l’intelligence artificielle du programme est une grande épreuve, mais c’est aussi une occasion pour la société Newwave de surmonter cette épreuve pour prouver au client son efficacité Ce stage a été effectué dans le cadre du projet Jingci, plus précisément dans le développement du noyau de l’intelligence artificielle Motivation et objectif du stage Jingci est un nouveau jeu qui est maintenant en période d’être commercialisé La motivation principale du projet est d’élargir l’utilisation du jeu Autrement dit, on veut populariser le jeu Jingci C’est pourquoi on construit la première version du jeu vidéo ayant pour le but de présenter les règles, les contraintes et comment on joue ce jeu pour montrer les intérêts du jeu Le défi du projet est que l’on doit construire un programme complet qui doit avoir le noyau ayant capacités humaines : - Capacité de réagir : déplacer les pièces d’échecs suivant les règles ; Capacité de réfléchir : calculer les mouvements les plus dangereux (qui peuvent vaincre l’utilisateur) Le processus de développement de ce jeu vidéo se compose en plusieurs étapes: analyse des exigences, conception, implémentation de GUI, implémentation de noyau IA, intégration du noyau IA au GUI et déploiement L’objectif principal du stage se concentre sur l’implémentation du noyau d’intelligence artificielle Pour réaliser ce but, on doit passer plusieurs étapes: - Evaluer et choisir une plateforme utile de développement de jeux vidéo pour périphériques portables ; Evaluer et choisir une approche efficace de la programmation du jeu d’échecs ; Implémenter d’un noyau IA qui a la capacité de réfléchir ; Tester et améliorer le noyau IA ; Participer la publication du jeu sur la plateforme mobile (l’intégration au GUI, le déploiement sur iOS et sur Android, etc.) Contribution En participant au développement d’un projet complet, partir de zéro jusqu’à un programme accompli, mes contributions vont se porter sur plusieurs points : Premièrement, j’ai effectué une étude des langages et des moteurs de développement de jeux vidéo Deuxièmement, j’ai étudié des solutions et des algorithmes actuels dans le domaine de programmation de jeux d’échecs Troisièmement, j’ai implémenté le noyau IA Finalement, j’ai collaboré avec notre équipe pour intégrer notre noyau IA notre GUI et puis déployer une application complète Chapitre État de l’art : Épreuves générales de la programmation de jeux d’échecs Dans ce chapitre, on va faire des études sur les approches connues dans le domaine de programmation de jeux d’échecs Représentation des données Représentation des données est une mission importante de développement de jeux vidéo car si on peut bien modéliser le monde du jeu par des types utiles de données, le programme peut être marche efficacement et peut économiser mieux les ressources du système Pour un jeu d’échecs, la représentation de données concerne directement la représentation du tableau de jeu, des pièces de jeu et des états de jeu Dans cette partie, on va concentrer sur l’analyse de la représentation de tableau de jeu car elle influence indirectement la présentation des caractères de pièces et d’états du jeu Cette partie va aborder le problème suivant : comment le tablier de jeu est représenté dans la mémoire du programme La structure de données qui présente le tableau de jeu et les pièces, est un facteur important pour l’efficacité de traitement du programme En réalité, il y a deux approches principales de la représentation de données qui sont les plus populaires du domaine de programmation de jeux d’échecs : - Utiliser le tableau en une ou deux dimensions (le tableau d’entier ou le tableau de bits) pour présenter les carrés et les pièces Utiliser une liste des carrés ou des pièces Chaque approche a ses avantages et ses inconvénients, par exemple, pour une liste de carrés, l’espace de mémoire utilise pour le stocker est plus petite que pour un tableau, mais en utilisant la liste (liste chnée, etc.), on perd plus d’efficacité pour examiner tous les carrés Figure 4-12 Algorithme de trouver les carres disponibles 2.3 Implémentation de la recherche de mouvement Pour la recherche de mouvement en théorie, on doit chercher dans un espace complet de mouvements possibles Chaque mouvement peut être une solution optimisée Pour examiner tous ces mouvements possibles, on doit calculer le poids de chaque mouvement pour on évaluer laquelle est la meilleure solution L’évaluation d’une solution peut utiliser l’un des facteurs suivants : Facteurs constituant le poids d’une solution : - La distance minimum entre le ballon et le joueur d’adversaire La distance minimum entre le ballon et le but d’adversaire La distance minimum entre le ballon et le joueur La distance minimum entre le ballon et le but 44 - La capacité d’utiliser le PASS La capacité d’utiliser le BOUND La capacité d’état de réinitialisation La capacité de marquer le but On peut expliquer un peu pour quoi on a choisi ces facteurs Imaginez que l’on doit déterminer un mouvement réaliser Dans ce cas-là : si la distance minimum entre le ballon et un de nos joueur, on appelle dBW, si c’est inférieure la distance minimum entre le ballon et un des joueurs ennemis - dBN, alors, notre capacité de contrôle le ballon est supérieure celle du joueur ennemi De plus, si la distance minimum entre le ballon et le but adversaire, on appelle dBGn, si c’est inférieure la distance minimum entre le ballon et notre but - dBGw, alors, notre capacité de contrôle le ballon est supérieure adversaire, la situation est favorable pour notre équipe pour marquer le but Dans le cas inverse, les joueurs ennemis peuvent marquer plus facilement le but Pour les facteurs de capacité marquer le but et d’utiliser le PASS et le BOUND, on mesure la capacité de marquer le but dans un ou deux mouvements Cela veut dire que, dans cette situation-là, on peut choisir directement la solution finale par un mouvement direct, ou par un mouvement plus un PASS ou BOUND Par contre, on doit chercher une solution défensive pour éviter maximum le mouvement d’adversaire qui provoque notre échec du jeu Le choix du vecteur de poids pour chaque solution possible : Il n’y a pas un facteur parfait qui est efficace pour toutes les situations d’un match La recherche de solutions est très complexe car l’équation de poids d’une solution est le plus grand problème du développement Si l’équation est très compliqué, alors, pour chaque solution, même si on applique l’élagage Alpha-Beta, on perd encore beaucoup de temps pour calculer, et évidemment que on perd aussi la performance et le temps de réflexion Niveau de profondeur de recherche : Au début du développement, on a seulement un niveau de recherche qui correspond un seul niveau de difficulté Le besoin de ce niveau de difficulté est qu’il n’est pas très fort ce qu’il peut ennuyer l’utilisateur Mais il n’est pas très stupide pour pouvoir entrainer l’utilisateur et il peut créer des épreuves pour l’utilisateur Nous cherchons la valeur de niveau de profondeur de pour qu’elle soit une valeur raisonnable : pour un mouvement, le ballon peut traverser maximum carrées en appliquant le PASS ou le BOUND La taille du tableau de jeu est de 9x9 alors, dans mouvements parfaits, on peut approcher le but de l’ennemi La valeur plus grande est seulement nécessaire dans le cas de niveau de plus de difficulté 2.4 Améliorations 2.4.1 Amélioration la performance de recherche de mouvements Dans la première période de la réalisation, le noyau IA (avec la recherche de mouvement appliquant l’algorithme Alpha-Beta) marche assez bien mais il demande beaucoup de temps et de ressources Pendant la période suivante, on cherche des approches pour améliorer l’efficacité en réalisant des tactiques de football proposées précédemment En particulier, on a implémenté la tactique offensive et la tactique défensive Imaginez que le noyau IA au début doit toujours chercher les mouvements possibles pour toutes les pièces (8 joueurs, gardien 45 de goal, ballon) Apres l’amélioration, le noyau actuel doit chercher normalement pour de pièces en moyenne Cette réduction de l’espace de recherche manifeste une efficacité visible Le temps de réflexion du noyau se réduit beaucoup En avant, le noyau peut réfléchir assez longtemps pour réagir contre les mouvements difficiles da l’adversaire Actuellement, le noyau peut réfléchir pendant le temps acceptable pour les utilisateurs (moins de 10 seconds en combinant avec les autres améliorations) Figure 4-13 Algorithme de décision 46 Figure 4-14 Tactique offensive 47 Figure 4-15 Tactique défensive 2.4.2 Amélioration de l’utilisation de la mémoire vive Au début du développement, on utilise les variables normales qui se sont occupées des espaces de la mémoire vive Pour la première période, quand on exécute le programme sur un ordinateur, la consommation de mémoire vive n’est pas un grand problème Mais quand on veut déployer l’application sur l’appareil mobile, c’est grave Pour optimiser la consommation de mémoire, nous avons modifié le programme en utilisant les variables pointeurs De cette faỗon, on peut diminuer lallocation de lespace de mémoire De plus, après l’utilisation de ces variables, on libère leurs mémoires alors, le programme économise beaucoup d’espace de mémoire D’autre côté, on a aussi optimisé la consommation de ressources multimédia (pour les images et les contenus audio) en utilisant les sprites (les images de textures 2D) composées dans une grande image de texture et en réduisant la taille des fichiers audio Par conséquence, on a diminué la taille de l’application et les ressources du système en marche En mesurant, le programme natif (la première version) s’occupe normalement environ de 90 Mo et pour le pire de cas, il s’occupe de 140 Mo de mémoire Apres l’amélioration, le programme utilise environs entre 40 Mo et 55 Mo pour le fonctionnement normal, et environ maximum 75 Mo pendant le processus le plus compliqué (la recherche de mouvements du noyau IA) 48 2.4.3 Amélioration du choix de résultat par hasard pour éviter la répétition Une autre difficulté pendant le développement du jeu est que, le noyau IA a tendu vers la répétition Cette tendance peut être expliquée car le noyau essaye toujours de trouver la meilleure solution Dans le cas l’utilisateur a conscience de répéter les mouvements, alors, le noyau va calculer l’action de contreoffensive qui est toujours la même Ce problème peut provoquer une situation sans issue La stratégie que nous adoptions pour résoudre ce problème est que nous améliorons le noyau pour calculer les meilleures solutions au lieu d’une comme la version précédente Par conséquence, on a plus d’une solution choisir et en appliquant une méthode de choix par hasard avec le taux de probabilité spéciale pour chaque niveau de difficulté, on peut diminuer les cas de répétition 2.4.4 Implémentation de queue de priorité En calculant le poids de chaque solution on applique la méthode d’arranger la queue de priorité Par conséquence, on peut retenir une queue de solutions triées En sachant que l’algorithme Alpha-Beta est très sensible pour les données triées, alors, cette application est très efficace pour l’exécution de AlphaBeta De plus, il aide l’amélioration du choix les solutions : il propose plus de candidats pour choisir au lieu d’un comme expliquant dans la partie ci-dessus 3.1 Résultat & évaluation Test Pendant le développement, on réalise aussi des tests (test unitaire, test d’intégrité du noyau et du GUI, test acceptable par le client) Le tableau de résultat général de tests est illustré ci-dessous (O : test passé, X : test non-passé) ID Tâche Vérifier les carrées possibles aller Vérifier les carrées interdits Vérifier l’état d’initiation Déplacer une pièce Vérifier la répétition du jeu Vérifier le redémarrage après le ballon bloque Présenter des pièces Présenter les carrées disponibles Présenter le carrée d’origine et le carrée de but Présenter l'animation de mouvement Présenter des pièces après le mouvement 10 11 Test unitaire O O O O O Test d’intégrité O O O O O Test acceptable O O O O X O O O O Fixé Final O O O O O O X O O O O O O - O O O O O - O O O O - O O O O - O 12 Présenter les messages après avoir marqué de but O O X O O 13 Présenter le message après le redémarrage de jeu O O X O O 14 Présenter le message après le mouvement O O X O O 49 Présenter le message de suggestion avant le mouvement Intégrer le noyau IA au GUI 15 O O X O O - O O - O 17 Vérifier les messages du noyau IA correspondants la représentation sur le GUI - O O - O 18 Vérifier la représentation du GUI correspondant l’état actuel du noyau de jeu - O O - O 19 Réaliser un cycle de vie complet du jeu sur plusieurs appareils portables (iPhone, iPad, téléphone portable et tablet d’Android) - O O - O 20 Vérifier les informations de tracking d’un match - O O - O 16 3.2 Évaluation 3.2.1 Résultats Pour le bilan des travaux en fin de la réalisation, on a déjà implémenté l’application du jeu Jingci qui répond bien les exigences du client La réalisation peut être divise en deux étapes principales : - Accomplissement du noyau IA : la première version de jeu en console avec les fonctions de bases ; Accomplissement du programme : la version finale du programme Jingci avec les améliorations d’algorithme et de performance, en intégrant au GUI sur multiplateforme A partir d’une exigence précise d’un moteur du jeu, on a accompli une application complète qui est publié sur le Google Play et sur l’iStore On a déjà accueilli des nouvelles demandes du client : le déploiement de l’application de multi-langue, l’élargissement de niveau de difficulté de jeu, l’ajout d’un module d’entrainement des utilisateurs, etc 50 Figure 4-16 Ecran du programme Jingci et écran d’étape d’initiation 51 Figure 4-17 Ecrans d’étape de préparation Figure 4-18 Ecrans de mouvement du jeu 52 Figure 4-19 Ecrans du tir au goal Figure 4-20 Ecrans de la victoire et de l’échec 53 Actuellement, la fin du stage, on a déployé la première version en japonais sur Android et sur iOS Et on est en train de continuer la publication des versions dans d’autres langues (en chinois, en coréen, en anglais, en espagnol, etc.) 3.2.2 Evaluation Dans la phase d’évaluation du programme, on propose quelques critères pour déterminer que le jeu est acceptable ou non Concernant les exigences fonctionnelles, le critère est que toutes les règles et les contraintes sont appliquées Concernant les exigences non-fonctionnelles, les critères sont : - Le temps de réponse n’est pas trop long (moins de 10 secondes est acceptable) ; La demande de stockage n’est pas très grosse ; La demande de mémoire vive n’est pas très grosse ; Le programme peut être lance sur iOS et sur Android ; La difficulté est de niveau moyen ; Le programme peut être adaptatif aux vieux appareils En mesurant la fin du projet, on a obtenu les résultats positifs sous tous les critères : - Les exigences fonctionnelles sont bien observées après le test acceptable du client Le temps de réponse est environ de secondes en moyen et de 10 secondes au pire de cas La taille de stockage est environ de Mo (pour l’installeur) et de 12 Mo après l’installation La taille de mémoire vive est environ entre 40 Mo et 55 Mo pour le fonctionnement normal et environ 75 au pire de cas Le programme peut être bien installé sur iOS (à partir d’iOS 6) et sur Android (à partir de Android 2.2) La difficulté est divise en trois niveau : facile, normale, intermédiaire L’adaptation du programme est flexible On a bien testé le jeu sur plusieurs appareils : iPhone3GS (256Mo RAM, écran 320x480), iPhone5(1Go RAM, écran 640x1136), HTC Hero(256Mo RAM, écran 320x480), Samsung Galaxy Y(290Mo RAM, écran 240x320), LG Optimus G(2Go RAM, écran 768x1280) Le programme peut bien marcher avec la spécification minimal de matériel : l’espace de stockage 15Mo, l’espace de mémoire vive de 75 Mo, l’écran de résolution 320x480 pixels (le programme peut être bien affiché sur l’écran de résolution plus petite mais il est difficile de jouer, par exemple sur Samsung Galaxy Y) Cette demande de matériel permet beaucoup d’appareils portables lancer le jeu sans problème Cela est justifié par des tests sur des téléphones portables publiés depuis 2009 (HTC Hero, iPhone3GS) ou sur des téléphones modernes (iPhone5, LG Optimus G) En conclusion, en appliquant les solutions prộsentộes dans le chapitre de faỗon dynamique, on a obtenu un bon résultat Du côté de la programmation d’intelligence artificielle, la réponse pour la question « comment un programme informatique peut imiter la réflexion humaine » est le défi le plus grand Dans notre cas particulier, nous cherchons les idées partir de la réalité et nous avons essayộ de simuler la faỗon dont on rộflộchit dans le football En cherchant les réponses pour les questions « comment on arrange la formation de l’équipe ? » et « quelle est la meilleure stratégie jouer ? », on a proposé des tactiques 54 pratiques et applicables (la défense active, l’offense active, etc.) qui apportent la réflexion naturelle au programme Du côté de la programmation en général, et de la programmation de jeux d’échecs en particulier, la représentation de données, la recherche de solutions possibles et l’équation d’évaluation de solutions sont les facteurs très importantes qui sont effectuées directement au fonctionnement du programme - - - La représentation de données, particulièrement la représentation d’échiquier de jeu, effectue directement au développement du jeu Si on utilise une liste (liste chainée) pour représenter les cellules, la recherche de solution peut perdre beaucoup de temps pour examiner travers la liste chaque mouvement Si on utilise un tableau de bit (un tableau plat ou un tableau de dimension, etc.), on peut économiser beaucoup d’espace de mémoire, mais l’interaction avec le tableau de bits est difficile qu’avec le tableau d’integer Pour la recherche de solutions, le Minimax est l’algorithme le plus simple pour examiner un arbre Mais il a le problème d’explosion combinatoire, en réalité, on doit chercher des stratégies pour réduire l’espace de recherche L’algorithme Alpha-Beta, il n’est pas le meilleur algorithme mais il est l’algorithme le plus efficace Pour l’évaluation de poids d’une solution, il n’y a pas de facteur parfait pour bien et rapidement évaluer L’équation d’évaluation se compose normalement des facteurs et le choix de ces facteurs est dépendant de la consigne et des expériences Les développeurs doivent équilibrer l’efficacité d’évaluation et la performance de calcul Du côté de génie logiciel, le choix du langage de programmation est important ainsi que le choix du moteur de jeux Pour les jeux de plateforme isolée, le choix du langage de programmation n’est pas vraiment grave Mais pour le développement de multiplateforme, on doit les évaluer et les comparer attentivement pour trouver un des langages possibles pour que l’efficacité soit la meilleure Malgré le fait que le langage C/C++ ne soit pas facile développer, il a aussi des avantages suivants : - - Le langage C/C++ est un langage concordant avec le programme qui demande beaucoup de ressources et de performance (car ce langage peut accéder fortement aux ressources du système) et qui demande de déployer sur multiplateforme (car presque tous les OS supportent l’exécution ou l’appel de programme et de librairie en C/C++) Le moteur de jeux Cocos2dx est un moteur puissant pour le développement des jeux vidéo Il supporte des traitements d’effets et de multimédia et de déploiement sur multiplateforme Il y a des moteurs de jeux sur le marché qui ont ces avantages (par exemple Unity3D, MS XNA, etc.), mais du côté de développement dirigeant vers un outil gratuit, Cocos2dx est un choix de valeur acceptable 55 Conclusion Conclusion J’ai présenté dans ce document la réalisation d’un noyau d’intelligence artificielle pendant mon stage la société Newwave En conclusion, nous avons accompli un jeu vidéo : le jeu Jingci simulant le jeu football, qui satisfait toutes les demandes de notre client En particulier, le noyau IA de jeu dộchec est bien conỗu, implộmentộ, ensuite intộgrộ au GUI pour publier aux utilisateurs Nos solutions sont effectuées de faỗon efficace pour dộployer un jeu vidộo en rộalitộ : - l’application de l’algorithme Alpha-Beta pour l’élagage de l’espace de recherche de solutions possibles d’un noyau de jeu vidéo ; l’application des tactiques de réflexion proposées pour le noyau d’intelligence artificielle ; la réalisation des solutions pour améliorer la performance du programme Perspectives Apres avoir développé le jeu vidéo Jingci, il y a des perspectives pour améliorer l’application : - - - Installer le module de communication qui permet aux utilisateurs de se battre ensemble via le réseau local ou via internet Maintenant, on peut jouer au jeu Jingci seulement en se battant contre le noyau d’intelligence artificielle Si on peut jouer avec nos amis, le jeu sera plus intộressant Amộliorer le noyau IA de faỗon augmenter la difficulté On doit chercher plus de solutions et des algorithmes pour améliorer l’efficacité car si on fait seulement enlever le niveau de profondeur de recherche, c’est aussi que le temps de calcul est augmenté Améliorer le noyau IA de faỗon ajouter les positions douverture de jeu ou les positions de fermeture de jeu Ces positions d’ouverture et de fermeture peuvent aider le noyau IA rộflộchir de faỗon plus intéressante et plus rapide 56 Bibliographies Articles, livres [1] Stuart J Russell and Peter Norvig 2010 Artificial Intelligence: A Modern Approach (3 ed.) Pearson Education, pp 161-189 [2] Donald E.Knuth and Ronald W Moore An Analysis of Alpha-Beta Pruning, Artificial Intelligence, (1975), 293-326 [3] Andreas Junghanns, Are there practical alternatives to alpha-beta in computer chess?, ICCA J 21 (I) (1998) 14-32 [4] C E Shannon 1988 Programming a computer for playing chess In Computer chess compendium, David Levy (Ed.) Springer-Verlag New York, Inc., New York, NY, USA 2-13 [5] Victor Allis, Searching for Solutions in Games and Artificial Intelligence Ph.D Thesis, University of Limburg, Maastricht, The Netherlands, 1994, pp 171-175 [6] Timothy Hart and Daniel Edwards 1963 The Alpha-Beta Heuristic Technical Report Massachusetts Institute of Technology, Cambridge, MA, USA [7] Leif Oppermann On the choice of programming languages for developing location-based mobile games GI Jahrestagung (1) 2008: 481-488 Liens de references [8] Chris Thornton, courses Intelligent Systems Techniques, [online, page consultée en 11/2013] : http://www.sussex.ac.uk/Users/christ/crs/kr-ist/lec05a.html 57 [9] Chua Hock Chuan, course Java Game Programming, [online, page consultée en 11/2013] : http://www3.ntu.edu.sg/home/ehchua/programming/java/JavaGame_TicTacToe_AI.html [10] Wolfram Math World, Chess, [online, page consultée en 11/2013]: en 11/2013] : http://mathworld.wolfram.com/Chess.html [11] Chess.com, Mathematics and chess, [online, page consultée http://www.chess.com/chessopedia/view/mathematics-and-chess [12] Intel Software, Android Application Development and Optimization on the Intel Atom Platform [online, page consultée en 10/2013] : http://software.intel.com/en-us/articles/androidapplication-development-and-optimization-on-the-intel-atom-platform [13] Terrain de football, [online, page consultée en 12/2013] http://as-villersexel- esprels.footeo.com/actualite/2012/12/04/tracage-du-terrain.html [14] Alpha Beta prunning, [online, page consultée en 12/2013] http://pixelcodeteam.fr/author/itech/ [15] Clotures du Jeu d’échecs, [online, page consultée en 12/2013] http://www.permutationpuzzles.org/chess/Elkies/Elkies10.html [16] Tablier du Jeu d’échecs, [online, page consultée en 11/2013] http://www.intuitor.com/chess/ [17] Tablier du Jeu d’échecs chinois, [online, page consultée en 11/2013] http://ancientchess.com/page/04.htm [18] Jeu Tictactoe, [online, page consultée en 11/2013] http://www.math.cornell.edu/~numb3rs/blanco/Two_daughters.html [19] Talier du Jeu GO, [online, page consultée en 12/2013] http://www.contrib.andrew.cmu.edu/~amengle/finalreport.html [20] Jeu Othello, [online, page consultée en 12/2013] http://othelloacademy.blogspot.com/p/tournaments.html [21] Jeu Gomoku, [online, page consultée en 12/2013] http://www.papg.com/show?1TN3 [22] Alpha-Beta, [online, page consultée en 10/2013] http://anna.fi.muni.cz/~x139877/prezentace/2011_03_24_prednaska_mafye_teorie_ her/combin_theory/alphabeta.pdf [23] Institut de la Francophonie pour l’Informatique, [online, page consultée en 02/2014] : http://www.ifi.vnu.edu.vn [24] Université de la Rochelle, [online, page consultée en 02/2014] : http://www.univ-larochelle.fr [25] Société Newwave, [online, page consultée en 02/2014] http://newwave.vn 58 ... nœuds B(5) et C(