Conception et Développement d un moteur d intelligence artificielle pour un jeu d échecs multiplateformes

Dimension: px
Commencer à balayer dès la page:

Download "Conception et Développement d un moteur d intelligence artificielle pour un jeu d échecs multiplateformes"

Transcription

1 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 Superviseurs : HOANG Duc Viet : HO Tuong Vinh NGUYEN Duc Thinh Hanoi, Juin 2014

2 Table de matières Table de matières... 2 Table de figures... 4 Remerciements... 5 Résumé... 6 Introduction Contexte du stage IFI Société Newwave Projet du jeu vidéo Jingci Motivation et objectif du stage Contribution... 8 Chapitre 1 État de l art : Epreuves générales de la programmation de jeux d échecs Représentation des données Gestion des mouvements Génération des mouvements Evaluation de mouvements Recherche de mouvements Algorithmes de recherche (Minimax, Alpha-Beta) Algorithme Minimax Algorithme Elagage Alpha-Beta (Alpha-Beta pruning) Chapitre 2 Épreuves du projet Description générale du jeu Spécifications d exigences fonctionnelles Spécifications d exigences non-fonctionnelles Capacité de réfléchir du noyau d Intelligence artificielle Difficultés de calcul Chapitre 3 Solutions proposées Arbres de positions Equation d évaluation Stratégies de décisions Tactique défensive

3 3.2 Tactique offensive Chapitre 4 Réalisation et résultats Ingénierie de développement Méthode de développement Langage de programmation et plateformes Gestion de code et de changement Conception et Développement Représentation des données Implémentation de règles et de contrains Implémentation de la recherche de mouvement Améliorations Résultat & évaluation Test Évaluation Conclusion Conclusion Perspectives Bibliographies

4 Table de figures Figure 1-1 Arbre de positions du jeu Tictactoe [8] Figure 1-2 Exemple de l évaluation de l heuristique [15] Figure 1-3 Jeux de deux à somme nulle: Echecs[16], Echecs chinoises[17], Tictactoe[18], Go[19], Othello[20], Gomoku[21] Figure 1-4 Illustration de l algorithme Minimax [9] Figure 1-5 Algorithme Minimax pour trouver la solution de Tictactoe [8] Figure 1-6 Algorithme Alpha-Beta [9] Figure 2-1 Terrain du football [13] Figure 2-2 Tablier de jeu Figure 2-3 Pièces de jeu: Ballon, Joueurs, Gardiens (de goal) Figure 2-4 Portée de courses: pour le ballon et pour le joueur Figure 2-5 Portée de pièce et de ballon selon le cas Figure 2-6 Illustration du cas de répétition de jeu Figure 2-7 Illustration du cas de ballon bloqué Figure 2-8 Illustration du cas de ballon bloqué Figure 2-9 Initiation du jeu Figure 3-1 Elagage Alpha-Beta [14] Figure 3-2 Exemple de la coupure Alpha [14] Figure 3-3 Facteurs d évaluation d une position de jeu Figure 3-4 Tactique défensive Figure 3-5 Tactique offensive Figure 4-1 Diagramme Gantt du projet Jingci Figure 4-2 Plan de réalisation du Jingci Figure 4-3 Architecture de l application NDK [12] Figure 4-4 Structure de codage du projet Jingci Figure 4-5 Diagramme de classes du noyau IA Figure 4-6 Représentation de tablier dans le mémoire Figure 4-7 Représentation de tablier et des sentinelles Figure 4-8 Représentation de la surface de but Figure 4-9 Représentation de la zone de gardien de but Figure 4-10 Classe Piece Figure 4-11 Classe d une position du jeu JingciNode Figure 4-12 Algorithme de trouver les carres disponibles Figure 4-13 Algorithme de décision Figure 4-14 Tactique offensive Figure 4-15 Tactique défensive Figure 4-16 Ecran du programme Jingci et écran d étape d initiation Figure 4-17 Ecrans d étape de préparation Figure 4-18 Ecrans de mouvement du jeu Figure 4-19 Ecrans du tir au goal Figure 4-20 Ecrans de la victoire et de l échec

5 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 6 mois en tant que stagiaire au sein de la société Newwave où j ai 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 m avoir accompagné dans l apprentissage 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. 5

6 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 6

7 Introduction 1. Contexte du stage 1.1 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 3 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, 7

8 Android), l orientation en terme de développement est tourné vers des services informatiques principaux : - Développement de Logiciels personnalisés ; - Développement d Applications Mobiles ; - Externalisation de Logiciels (Software Outsourcing) ; - Maintenance de Logiciels. 1.3 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. 2. 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.). 3. 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 : 8

9 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. 9

10 Chapitre 1 É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. 1. 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 chaînée, etc.), on perd plus d efficacité pour examiner tous les carrés.

11 2. Gestion des mouvements 2.1 Génération des mouvements Le noyau de jeu a une autre mission. C est qu il doit générer tous les mouvements légaux du jeu - les mouvements possibles (pour l équipe rouge et pour l équipe bleue) - pour que l on puisse comparer et choisir le meilleur mouvement. Si le programme n a pas la capacité de générer tous les mouvements légaux, alors, pendant le processus de détermination, le programme choisit un mouvement illégal qui provoque une erreur ou il ne peut pas choisir le meilleur mouvement. Figure 1-1 Arbre de positions du jeu Tictactoe [8] On peut observer la génération de mouvements par l illustration ci-dessus : pour le jeu tictactoe, à partir d une position au début, on peut avoir un arbre de toutes positions possibles en fin. La mission du noyau IA pour la génération de mouvements est de construire l arbre complet à partir d une position du jeu. 2.2 Evaluation de mouvements Le programme a la capacité de générer les mouvements et aussi, il doit avoir capacité de comparer les mouvements pour choisir un parmi ceux-ci. Pour le faire, on doit considérer d une équation d évaluation de mouvement. Autrement dit, on doit chercher une méthode d évaluer le mouvement pour que l on puisse connaitre quel est le meilleur mouvement. Pour le Jeu d échecs, si on considère que le roi a un poids de 100, la dame a un poids de 20, le fou a un poids de 8, le tour a un poids de 7, le cavalier a un poids de 6 et le pion a un poids de 1. Alors, on peut calculer l heuristique pour une position de jeu par une équation simple f(h) de la somme de poids comme ci-dessus. f(h) = poids(pièces noires) poids (pièces blanches) 11

12 Par exemple dans l illustration ci-dessous [15], on voit que : Figure 1-2 Exemple de l évaluation de l heuristique [15] Les pièces de l équipe Noir : le roi, la dame et 3 pions Les pièces de l équipe Blanche : le roi, le tour, le cavalier et 2 pions Si on assigne une valeur de poids pour chaque pièce, on peut calculer la valeur de la fonction d évaluation simple par la somme de poids des pièces sur le tablier : f(h) = (100*1 + 20*1 + 1*3) (100*1 + 7*1 + 6*1 + 1*2) = 8 La valeur de f(h) est de 8 > 0, cela veut dire que l équipe noire a plus de supériorité que l équipe blanche. Grace à cette fonction d évaluation, quand on évalue une position, on peut comparer la supériorité des positions pour que l on puisse choisir la plus grande. En réalité, l équation d évaluation d une position n est pas simple que celle-ci. Dans le cas particulier, on doit choisir plusieurs facteurs pour calculer et évaluer la fonction f(h). 2.3 Recherche de mouvements Pour un jeu d échecs, le nombre de mouvements est énorme. Le choix d une solution dans un espace géant de recherche est une tâche très compliquée. En combinant l équation d évaluation, on doit chercher une stratégie de recherche efficace pour que la réflexion du programme devienne assez rapide et faisable. Pour la modélisation d espace de jeu, on peut considérer les mouvements du jeu comme l arbre de décision. À partir de la racine le mouvement d initiation du jeu, chaque nœud fils de l arbre manifeste de mouvements possibles pour réagir contre le nœud parent. Par conséquent, le fait d examiner chacun des nœuds d un jeu d échec est impossible. On doit restreindre l espace de recherche pour laisser passer les mouvements évalués faibles. 12

13 Nous abordons ici les jeux de type «Somme nulle» (Zero-sum) : il s agit des gains d un joueur qui est l opposé des gains des autres joueurs. Autrement dit, si un joueur a gagné, tous les autres ont perdus. Pour le jeu de deux à somme nulle, il y a deux adversaires, l un joueur qui gagne les gains positifs et par contre, l autre qui gagne les gains négatifs. La somme totale de gains est nulle. Quelques jeux à deux à somme nulle connus dans le monde sont : le jeu d Echecs, le jeu d Echecs chinois, le Tictactoe, le Go, l Othello, le Godoku : Figure 1-3 Jeux de deux à somme nulle: Echecs[16], Echecs chinoises[17], Tictactoe[18], Go[19], Othello[20], Gomoku[21] Les jeux d échecs sont les jeux du type somme nulle : - Dans le cas où il n y a pas de vainqueur, ils font partie nulle. - Dans le cas, il y a un vainqueur, il gagne les gains +G, par contre, le perdant gagne les gains G, la somme est nulle. Les jeux d échecs ont un caractère unique : car on fait la guerre alors pour le joueur ami, on essaye toujours de chercher le mouvement qui entraine les gains les plus positifs et au contraire, les gains les plus négatifs pour le joueur ennemi. Grace à ce caractère, on peut chercher une solution pour mesurer le poids de chaque mouvement par les gains. En fait, les gains d un jeu d échecs sont de victoire ou d échec. Si on considère le gain de victoire est de 1, alors le gain d échec est de -1, le gain d un match nul est de 0. Mais pour un jeu complexe, il y a beaucoup de mouvements qui peuvent être exécutés avant le finit du jeu, alors, si on mesure les gains seulement par -1, 0, 1, c est difficile d évaluer les poids des mouvements intermédiaires. L un des problèmes de la programmation du jeu d échecs est de chercher une façon efficace d attribuer le poids pour un mouvement qui va être abordé plus précise dans la partie «Solutions proposées». Pour le probleme de recherche de mouvements, il y a des œuvres [1], [2], [3], [5], qui abordent des algorithmes, par exemple MiniMax, NegaMax, AlphaBeta, etc. Et dans le cadre de ce stage, je vais 13

14 presenter l algorithme Minimax et l AlphaBeta et leur application dans notre projet dans les parties suivantes. 3. Algorithmes de recherche (Minimax, Alpha-Beta) Dans [1], Stuart Russell et Peter Norvig ont présenté de facon précisée les algorithmes Minimax et AlphaBeta et on peut rappeler des caractères principaux de ces deux algorithmes. 3.1 Algorithme Minimax L'idée fondamentale, appliquée dans tous les logiciels d'échecs, est qu'il faut faire parcourir par le programme un espace de recherche constitué des positions futures potentiellement atteintes par les joueurs pour anticiper la meilleure séquence à jouer. On modélise cet espace de recherche avec des techniques issues de la théorie des graphes (arbres, graphes sans cycles, etc.) et on utilise des systèmes de production pour générer leurs états (les positions) et les transitions entre les états (les coups permettant de passer d'une position à l'autre). Le pseudocode de l algorithme MiniMax [9] : Figure 1-4 Illustration de l algorithme Minimax [9] minimax(level, player) // player may be "computer" or "opponent" if (gameover level == 0) return score children = all legal moves for this player if (player is computer, i.e., maximizing player) // find max bestscore = -inf for each child score = minimax(level - 1, opponent) 14

15 if (score > bestscore) bestscore = score return bestscore else (player is opponent, i.e., minimizing player) // find min bestscore = +inf for each child score = minimax(level - 1, computer) if (score < bestscore) bestscore = score return bestscore // Initial Call minimax(2, computer) La méthode générale est la suivante : à partir d'une position (racine de l'arbre) on génère tous les coups possibles pour le programme. Puis à partir de ces nouvelles positions (niveau 1) on génère toutes les réponses possibles pour l'adversaire (niveau 2). On peut alors recommencer l'opération aussi longtemps que le permet la puissance de calcul de l'ordinateur et générer les niveaux 3, 4,..., n. Figure 1-5 Algorithme Minimax pour trouver la solution de Tictactoe [8] Le facteur de branchement dans une partie d'echecs équilibrée étant d'environ 30 et le nombre de coups environ 40, on ne peut générer, dans un temps limité, la totalité de l'arbre. On doit donc limiter la profondeur de la procédure. Une fois atteinte cette profondeur, les feuilles (par opposition à la racine) 15

16 de l'arbre ainsi construit sont évaluées par une fonction d'évaluation. Le programme peut, à partir de la racine, jouer le coup de niveau 1 qui lui garantit le gain maximal contre toute défense de son adversaire, en supposant que celui-ci utilise également une stratégie optimale, c'est-à-dire qu'il joue lui-même à chaque coup le gain qui lui garantit le gain maximal contre toute défense. Ce mécanisme est appelé principe Minimax. 3.2 Algorithme Elagage Alpha-Beta (Alpha-Beta pruning) L algorithme d élagage Alpha-Beta conduit à une économie de temps de calcul et mémoire, en renonçant à l évaluation des sous arbres dès que leur valeur devient inintéressante pour le calcul de la valeur associée aux nœuds père de ces sous arbres. Pour réaliser l algorithme Alpha-Beta on va associer à chaque nœud n de type MAX une valeur auxiliaire appelée Alpha(n) égale à la valeur de f(n) si n est un nœud terminal, ou à la meilleur valeur de ses fils trouvée jusqu`ici; une valeur Beta(m) pour les nœuds MIN, valeur égale à f(m), si m est un nœud terminal, ou à la valeur minimum de ses successeurs trouvés jusqu`ici Figure 1-6 Algorithme Alpha-Beta [9] Dans les cas généraux ci-dessus, on peut voir que l élagage Alpha-Beta peut nous aider à couper des sous branches inutiles pour diminuer l espace de recherche. Le pseudocode de l algorithme Alpha-Beta [9] : alphabeta(level, player, alpha, beta) //player may be "computer" or "opponent" if (gameover level == 0) return score children = all valid moves for this "player" if (player is computer, i.e., max's turn) // Find max and store in alpha for each child score = minimax(level - 1, opponent, alpha, beta) if (score > alpha) alpha = score if (alpha >= beta) break; // beta cut-off 16

17 return alpha else (player is opponent, i.e., min's turn) // Find min and store in beta for each child score = minimax(level - 1, computer, alpha, beta) if (score < beta) beta = score if (alpha >= beta) break; // alpha cut-off return beta // Initial call with alpha=-inf and beta=inf alphabeta(2, computer, -inf, +inf) 17

18 Chapitre 2 Épreuves du projet Ce chapitre vise à présenter concrètement les exigences du jeu : les exigences fonctionnelles et les exigences non-fonctionnelles. Ensuite, on va évaluer les difficultés prépondérantes pour la réalisation. 1. Description générale du jeu Jingci est un jeu stratégique simulant le football. Il se compose d un tableau de 9x9 cellules qui représente le terrain de jeu. Comme au football, on est divisé en deux équipes les rouges et les bleus et chacun a 8 joueurs et un gardien de but. L objectif des adversaires est d essayer de marquer le but en déplaçant les joueurs, le ballon et les gardiens. Pour atteindre cet objectif, les utilisateurs doivent choisir une stratégie par eux-mêmes. L utilisateur est maintenant un entraineur qui va décider comment son équipe joue au football : sur un terrain d herbes virtuelles sur l écran d un appareil portable, on va déplacer les joueurs dans leurs portées de courses ou passer le ballon à un autre joueur ou tirer le ballon au but pour terminer le match si possible. L intérêt du jeu est qu il y a plusieurs stratégies pour jouer : stratégie de défense, stratégie d offense, défense passive, défense active ou offense passive ou offense active, etc. De plus, un jeu vidéo ne peut pas simuler totalement le football donc on doit proposer des règles et des contraintes pour éviter les méthodes négatives de jouer et augmenter les intérêts d un jeu sportif. Dans

19 le cadre de ce jeu, on applique des règles du football mais on les modifie pour adapter l environnement du jeu. 2. Spécifications d exigences fonctionnelles Pour obtenir un programme avec succès, on doit analyser attentivement le jeu et puis, définir toutes les exigences concrètes du côté technique ou du côté utilisation. Tout d abord on va définir tous les termes et les règles du jeu Jingci. Les termes et les caractéristiques : Le terrain de jeu (le tablier de jeu, l échiquier) : c est un tableau de taille 9x9 carrés comme l illustration suivante : Figure 2-1 Terrain du football [13] 19

20 Surface de réparation ligne médiane colonne médiane Surface de but Figure 2-2 Tablier de jeu Les pièces d échecs : Il y a 3 types de pièces : Ballon, Joueur, Gardien de but (Player, Goal Keeper, Ball) Figure 2-3 Pièces de jeu: Ballon, Joueurs, Gardiens (de goal) La portée de course : Chaque pièce peut se déplacer dans une zone de 2 carrés. Elle ne peut pas passer ou aller à un carré occupé. Figure 2-4 Portée de courses: pour le ballon et pour le joueur De plus, pour chaque type de pièce, il y a les contraintes suivantes : 20

21 Le ballon : la pièce Ballon peut aller à tous les carrés en direction déterminée par le point de vue de la pièce Joueur adjacent. Figure 2-5 Portée de pièce et de ballon selon le cas Le gardien de goal : La pièce Gardien (de but) peut aller à tous les carrés dans la surface de réparation. Le joueur : la pièce Joueur peut aller à tous les carrés sur le tableau sauf que sur la surface de but. Le PASS : c est un droit spécial. Il s agit de la passe du ballon. Normalement on peut passer ou tirer le ballon sur un segment de 2 carrés. Si on applique le droit PASS, après que le Joueur P1 passe le ballon au Joueur P2 alors le P2 peut encore passer ou tirer le ballon plus d une fois. Le BOUND : c est un droit spécial. Il s agit de la passe au mur du ballon : le ballon est tiré au mur et puis, il est réverbéré en direction inverse. Dans ce jeu, on peut utiliser le droit BOUND pour la ligne de but et la ligne de touche. La répétition : on appelle la répétition du jeu quand chaque équipe déplace la même pièce pendant 3 mouvements. Autrement dit, pour chaque côté du jeu, on applique 3 mêmes mouvements. Dans ce caslà, on doit redémarrer le jeu. Figure 2-6 Illustration du cas de répétition de jeu L état du ballon bloqué : Différemment du football réel, le jeu vidéo peut provoquer des situations négatives : le ballon va dans un carré, ensuite, les pièces vont aux carrés autour du ballon. Enfin, on ne peut plus déplacer le ballon de toute façon. Les illustrations suivantes montrent quelques situations bloquées. Dans ce cas-las, on doit aussi redémarrer le jeu. 21

22 Figure 2-7 Illustration du cas de ballon bloqué 1 Figure 2-8 Illustration du cas de ballon bloqué 2 Le redémarrage du jeu : pour le redémarrage du jeu, le ballon doit être déplacé sur le carré du centre. Dans le cas où il existe déjà une pièce au carré du centre, alors l équipe à laquelle la pièce appartient doit la déplacer à un autre carré disponible avant de déplacer le ballon. Le but : On dit qu une équipe marque le but quand il peut tirer le ballon à un des carrés du but de l adversaire. La victoire et l échec : la fin d un match est quand une équipe marque le but et la victoire appartient à cette équipe. Au contraire, l échec est pour l autre équipe. Le mouvement : un mouvement du jeu est un mouvement d une pièce (ballon, joueur, gardien) La préparation : c est une étape de préparation de position pour chaque pièce. C est pour arranger la formation de l équipe avant le match. L initiation du jeu : L initiation est le premier mouvement du jeu. Pour cette étape, on doit suivre les contraintes suivantes : - Le ballon doit être sur le carré du centre - Le ballon peut aller à un des carrés dans la zone 5x5 autour de celui-ci - Le ballon peut être tiré même s il n y a pas de pièce Joueur adjacente - Les pièces Joueurs doivent ne pas être sur la ligne médiane et la colonne médiane - Les pièces Joueurs doivent ne pas être dans les carrés de but 22

23 - Le gardien de but doit être au carré I5 (pour l équipe bleue) ou A5 (pour l équipe rouge) - Chaque ligne doit avoir maximum 3 pièces - Les carrés autour d un goal doit avoir maximum 4 pièces (en comprenant la pièce Gardien de goal) Figure 2-9 Initiation du jeu L adjacence : les deux pièces sont adjacence si elles sont dans les deux carrés à côté. Autrement dit, les deux carrés ont ensemble au minimum un point. 3. Spécifications d exigences non-fonctionnelles Le temps de calcul : le temps de calcul d un mouvement, pour le noyau AI doit ne pas passer 10 secondes. Cette exigence concerne la capacité de réfléchir du noyau IA : Il a besoin du temps pour penser à un mouvement mais il ne faut pas être trop long pour éviter d ennuyer les utilisateurs. La multiplateforme : on veut jouer ce jeu sur plusieurs plateformes : PC, Web, mobile, etc. Mais on choisit les plateformes mobiles Android, ios pour la première période de déploiement. Pour le développement d une application sur plusieurs plateformes, la différence de matériel est un grand problème : comment un programme peut marcher de façon identique (le temps de réponse, l affichage d écran de taille différente, etc.). La difficulté (le niveau du noyau AI) : elle n est pas très forte pour éviter l ennui des utilisateurs. La facilité de compréhension à jouer : le jeu doit être facile à comprendre, on doit construire le GUI avec des boutons, des messages précis qui peuvent montrer l état du programme (par exemple, la confirmation de décision, l affichage du réfléchir de noyau IA, etc.) pour éviter de mal comprendre le jeu. 4. Capacité de réfléchir du noyau d Intelligence artificielle Jingci est un jeu de sport du type stratégique alors quand on prend en compte la capacité de noyau d IA, on doit analyser le jeu sous tous les côtés. Par exemple, il faut construire le jeu pour que les utilisateurs puissent jouer comme ils jouent avec un partenaire réel un humain réel. De ce côté, on peut aller analyser la spécification d un humain réel quand il s agit de football. Un humain réel peut avoir des 23

24 calculs, des plans d actions actives qui peuvent être variées et dépendants le contexte actuel du jeu. L utilisateur, maintenant, joue au rôle d un entraineur d équipe : il doit disposer la formation de son équipe : Son équipe va jouer avec combien d attaquants? Son équipe va jouer avec combien de défenseurs? Quelle est la stratégie utile de l équipe pour chaque match? De plus, dans la période d analyse et de conception du jeu, on doit aussi prendre en compte la capacité d élargir le jeu. Cela veut dire que, pour au moment de la conception, on va aussi se préparer pour un jeu avec plusieurs niveaux de difficultés. Pour répondre à ces questions, le noyau IA du jeu doit avoir la capacité d organiser l équipe, de choisir la façon dont il joue : comment il peut offenser? Comment il peut défendre? Autrement dit, le noyau IA doit avoir capacité de réfléchir et de réagir comme un humain. 5. Difficultés de calcul En analysant le jeu, on doit être en face au problème de limitation du matériel sur la plateforme mobile. En sachant que le matériel se développe rapidement, mais même si pour les plateformes originales (les ordinateurs optimisés, les ordinateurs fixes, etc.), le calcul de recherche du chemin optimisé est toujours complexe. On doit calculer pour choisir une solution parfaite dans un nombre gigantesque de solutions possibles. Des études de programmation de jeux d échecs ont été réalisées [12], [13], [14], [15], [16]. Les auteurs ont presentés des estimations de la grandeur de calcul pour les jeux d échecs. Par exemple, suivant l étude de Shannon [12] (le nombre Shannon) pour le Jeu d Echecs, il y a environ en moyenne 40 mouvements pour chaque match. Cela veut dire que l on a 40 mouvements pour le Noir et 40 mouvements pour le Blanc. De plus, on estime qu il y a environ 30 mouvements légaux possibles à choisir pour chaque mouvement. Alors, on a environ (30^40)*(30^40) ~ 30^80 ~ 10^120 mouvements possibles. Pour le jeu d échecs Jingci, on peut calculer brièvement les calculs possibles : Il y a 19 pièces (1 ballon, 2 gardiens de but, 16 joueurs) Chaque pièce peut aller à environ 5x5 carrés = 25 carrés En fait, le calcul d un mouvement du jeu Jingci n est pas égal à 19*25 = Pour le gardien de but : le nombre maximum est de 3*5 carrés (car il est limite dans la zone de goal) - Pour le ballon : le nombre maximum est de 5*5 - Pour les joueurs : le nombre maximum est de 16*5*5 En théorie, le nombre maximum de solutions est de 3*5 + 5*5 + 16*5*5 = 440 Mais il faut faire attention que, le nombre 440 ci-dessus a des positions qui se répètent. - Le tableau de jouer est de 9*9 = 81 carrés. - Le nombre de pièces : 19 Car les pièces existent toujours (il y a pas de règles qui permettent de capturer les pièces comme le jeu d échecs), alors : - Le nombre de carrés disponibles : = 72 24

25 Le nombre total de solutions possibles pour un mouvement maintenant est plus serré, environ de Le nombre de calcul pour le profondeur N = (72) N - Par exemple, pour le profondeur N = 1 : il y a 72 solutions possibles - Pour le profondeur N = 2 : il y a 72*72 = 5184 solutions possibles - Pour le profondeur n = 3 : il y a 72*72*72 = solutions possibles On peut voir que le nombre de solutions est de taille spectaculaire. On peut essayer de prendre le nombre moyen de carrés pour chaque pièce sur l échiquier : Nmoyen = 81 / 19 = 4 carrés On considère que, pour chaque mouvement d un adversaire, on a environ (9 pièces + 1 ballon)*4 = 40 carrés. Cela veut dire que l on peut choisir un des 40 solutions possibles. Autrement dit, pour l arbre de jeu, le nombre de branches est environ de 40. Dans le cas où on utilise le nombre moyen de 40 solutions possibles pour chaque mouvement, alors, on a le nombre de calcul N = (40) N. Pour éviter le phénomène d explosion combinatoire, on peut seulement chercher les solutions pour quelques premiers niveaux de profondeur de l arbre du jeu car les appareils portables ont besoin de long temps pour trouver une solution positive. Devant ces difficultés, on doit chercher les approches qui sont les meilleures pour le calcul de plusieurs types d appareils. Dans les parties suivantes, on va discuter des solutions pour diminuer l espace de recherche et des tactiques de jouer pour le noyau IA. 25

26 Chapitre 3 Solutions proposées Dans le paragraphe de spécifications des exigences non-fonctionnelles, les demandes présentées du projet de la réalité sont très serrées : - le temps de réponse n est pas trop long (plus c est rapide mieux c est) ; - le programme peut bien fonctionner sur plusieurs types d appareils portables ; - l intelligence n est pas très forte et aussi n est pas très stupide. On sait que toutes les exigences fonctionnelles doivent évidemment être satisfaites. Mais les exigences non-fonctionnelles sont vraiment les facteurs les plus importants qui influencent directement le fonctionnement du programme et en fait les choix de solutions. On ne peut pas toujours chercher une solution absolue car dans la plupart de cas, il fait beaucoup de temps de traitement et perd aussi beaucoup de performance et de ressources. Notamment pour les téléphones portables de générations précédentes (qui ont moins de l espace de stockage et de mémoire vive), la considération de ces demandes va faire que le jeu peut être exécuté ou non. Alors, en face des difficultés réelles, on doit proposer des applications de l algorithme Alpha-Beta et des tactiques de football (pour diminuer l espace de recherche) et optimiser l équation d évaluation (pour augmenter l efficacité de calcul) qui vont être présentées aux suivants.

27 1. Arbres de positions A cause des difficultés expliquées dans les parties précédentes, on cherche des approches faisables pour construire une application de bonne qualité. Pour les applications mobiles, le calcul de la profondeur de 1 en appliquant Minimax est faisable, néanmoins pour le niveau de profondeur de 2, ou 3 et plus, la recherche des nœuds de l arbre sont impossible dans une période acceptable. Alors, on doit chercher des limitations pour couper les branches inutiles. On a abordé la difficulté de calcul dans la partie précédente et pour ce jeu, pour chaque mouvement, on peut calculer environ des milliers fois de l équation heuristique. Si on illustre le jeu par un arbre de décision, alors, on a un l arbre en général comme celui ci-dessous. Mais le facteur de branchement maintenant n est pas de 3 comme l arbre ci-dessous, on doit imaginer d un arbre de 40 branches pour chaque niveau de profondeur (il faut faire attention que le premier mouvement a maximum de 25 sousbranches car la règle de l initiation, pour les mouvements suivants, chaque nœud a maximum de 40 de sous-branches le nombre moyen de solutions): Figure 3-1 Elagage Alpha-Beta [14] L arbre de positions se compose de 2 composants : la racince et les nœuds. Un nœud dans notre arbre est une position du tablier d un match. Autrement dit, un nœud est un etat actuel du jeu pendant un match particulier. En fait, la racine est un nœud special : le nœud d initation. Pour representer l arbre de positions, on propose la structure d un nœud JingciNode qui se compose des attributs : - La liste des pieces - La matrice de positions des pieces sur le tablier - La matrice de couleurs des pieces pour distinguer des pieces (numero, couleur de chaque piece) - L etat de jeu : o Le tour du jeux o Le ballon est blocqué ou non o L equipe noir a utilisé le droit Bound ou non o L equipe blanc a utilisé le droit Bound ou non o L equipe noir a utilisé le droid Pass ou non o L equipe blanc a utilisé le droid Pass ou non 27

28 o Est-ce que on a executé un mouvement répetitif Chaque attribut a un rôle particulier et son importance différente pour calculer l heuristique d un mouvement. On doit utiliser ces attributs de façon flexible pour que le calcul de l heuristique pour chaque mouvement ne soit pas très complexe et soit assez efficace. Pour examiner l arbre de positions, si on utilise l algorithme Minimax, on doit calculer et comparer tous ses nœuds. Ce fait rend un gros problème de la performance du programme car notre arbre est vraiment énorme. On doit chercher un autre algorithme qui nous permet de couper intensément les branches inutiles. Dans le cas de Jingci, on choisit l algorithme Alpha-Beta qui a deux seuils alpha et beta. Ces seuils sont mis à jour pour chaque fois quand on calcule l heuristique d un mouvement. Pour faciliter comprendre le mécanisme de l Alpha-Beta, on va analyser le sous arbre de A ci-dessus : Figure 3-2 Exemple de la coupure Alpha [14] On voit que le nœud A est du type MAX (cela veut dire que l on va choisir la valeur du nœud ayant la valeur maximum parmi ses fils (B et C). Pour le nœud B (du type MIN), on va choisir la valeur minimum parmi ses fils (c est de 5). Pour le nœud C (du type MIN), on va choisir la valeur minimum parmi ses fils (D, E, F). Sachant que l on a examiné tous les nœuds A, B, C, D, E et la valeur de B(5) > C(4) > E(4). Alors, on est sûr que l on n a pas besoin d examiner le nœud F car : - On va choisir A par la valeur maximum entre B et C - Pour choisir C, on va choisir la valeur minimum parmi D, E, F, même si on ne sait pas F, on sure que F <= E (F <=4) C <= F <= 4 A cause de ces deux conditions, on voit que la valeur de A est la maximum de deux nœuds B(5) et C(<=4) A = B = 5 mais on ne doit pas examiner le F (et sous arbre de F s il existe). C est l exemple simple pour un petit arbre, pour un grand arbre de positions d un jeu d échecs, le nombre des nœuds inutiles comme le nœud F ne sont vraiment pas petit. Le mécanisme de la coupure Beta est presque pareil, mais pour appliquer calculer pour les nœuds du type MIN. En appliquant l élagage Alpha-Beta, on peut diminuer efficacement l espace de recherche. Comme dans l image illustrée [11] (figure 15 ci-dessus), les branches de l arbre sont coupés car l évaluation de ces branches n est pas nécessaire. En réalité, pour notre arbre de positions pour un jeu d échecs comme 28

29 Jingci, chaque niveau de profondeur peut avoir environ 40 sous arbres. Alors l élagage Alpha-Beta est une solution efficace pour éviter d examiner l arbre d entier. 2. Equation d évaluation D un autre côté, on doit considérer aussi de l heuristique d un mouvement d une position du jeu. Car dans le processus de réflexion de ordinateur, on doit parcourir toutes les solutions possibles, alors, la fonction d évaluation pour calculer l heuristique (qui peut bien séparer la meilleure solution des autres) est plus simple, la meilleure. Dans le domaine de la programmation de jeux d échecs, on a des facteurs pour évaluer une solution, par exemple de la position des pièces, des poids des pièces ou des pièces existants encore sur le tableau du jeu (dans quelques jeux on peut tirer les pièces de l adversaire et celui qui a plus de pièces que l autre, a l avantage). Par exemple, pour le jeu d échecs, le poids de roi est plus grand que de la dame (qui est plus grand que du fou, du tour, du cavalier et du pion). Le jeu Jingci n a pas de règles qui permettent à l utilisateur de tirer les pièces de l adversaire alors, pour notre jeu, on peut analyser ses caractéristiques pour que l on puisse choisir entre eux les meilleurs facteurs qui peuvent nous aider à évaluer le mouvement. Les facteurs qui peuvent influencer l évaluation du jeu seraient : - La distance entre les pièces Joueurs et le ballon - La distance entre les gardiens de goal et le ballon - La distance entre le ballon et le goal - Les droits possibles (le PASS et le BOUND) Figure 3-3 Facteurs d évaluation d une position de jeu Pour calculer l heuristique pour une position, on considère que le noyau IA et l équipe Noir, l adversaire est l équipe Blanc et on définit les facteurs précises : 29

30 - La distance minimum entre le ballon et le carré de goal Noir le plus proche : d_minbgoal - La distance minimum entre le ballon et le carré de goal Blanc le plus proche : d_minwgoal - La distance minimum entre le ballon et la pièce Joueur Noir la plus proche : d_minbb - La distance minimum entre le ballon et la pièce Joueur Blanc la plus proche : d_minbw - La distance minimum entre le ballon et la pièce Gardien de goal Noir la plus proche : d_minbg - La distance minimum entre le ballon et la pièce Gardien de goal Blanc la plus proche : d_minwg - Le droit Bound est disponible pour le Noir : bbound - Le droit Bound est disponible pour le Blanc : wbound - Le droit Pass est disponible pour le Noir : bpass - Le droit Pass est disponible pour le Blanc : wpass Pour la difficulté la plus simple, l équation d évaluation est f(h) : f(h) = ( 10^5*d_minBGoal - 10^5*d_minWGoal + 10^3*d_minBB 10^3*d_minBW + 10*d_minBG 10*d_minWG + bpass wpass + bbound - wbound) D ici, les poids des facteurs sont différents. Par exemple, on peut voir que le facteur d_minbgoal(d_minwgoal) et le facteur d_minbb(d_minbw) sont plus importants que le facteur d_minbg(d_minbb) car si on imagine une situation où l équipe Noir a le Ballon. Le Ballon est très proche de goal de l équipe Blanc (d_minwgoal est plus petite, d_minbgoal est plus grande). En ce moment-là, s il y a un Joueur Noir qui est proche du Ballon(d_minBB est plus petite), il peut plus facilement tirer le Ballon au goal Blanc. Alors, si la valeur d_minwgoal et d_minbb sont petites, elles manifestent la capacité de marquer le but plus clairement que la valeur d_minbg. On donc assigne le poids de facteurs d_minbgoal (ou d_minbb) une valeur qui est plus grande que d_minbg pour que le noyau IA peut calculer l heuristique qui a plus de la supériorité pour l équipe Noir. 3. Stratégies de décisions L idée d ici est que l on applique des tactiques du jeu football pour le noyau IA car on sait que elles sont très efficaces en réalité. De plus, si le noyau IA peut jouer avec ces tactiques, il peut manifester la capacité de réaction humaine naturelle. Dans la période de réalisation, on propose des tactiques faisables pour le noyau IA ci-dessous. 3.1 Tactique défensive Dans le football, on peut voir que l équipe qui garde le ballon peut attaquer activement. L autre équipe doit chercher des approches pour bien défendre. L équipe qui est dans l état de danger doit prendre en compte toutes les situations possibles. Sa défense doit être active en déplaçant les pièces de joueurs ou le gardien de but aux positions qui sont les meilleures pour empêcher l attaque d adversaire. Dans ce cas-là, les pièces attaquants sont moins utiles que les pièces qui sont plus proches du ballon des pièces d adversaire. 30

31 Figure 3-4 Tactique défensive 3.2 Tactique offensive Au contraire, quand on attaque le but de l adversaire, on peut laisser passer les défenseurs qui sont loin du ballon ou loin du but de l adversaire car la probabilité de ces pièces pour qu elles puissent marquer le but est beaucoup moins que les attaquants. Dans ce cas-là, on peut diminuer le calcul d un mouvement en évitant de calculer les mouvements possibles pour le gardien de but et pour les pièces les plus loin du goal d adversaire. Et on peut concentrer au calcul de mouvements d attaque. Dans un autre cas urgent où l adversaire peut marquer le but dans un ou deux mouvements, la stratégie peut être plus précise : on doit calculer seulement pour les pièces qui sont les plus proches du ballon. Figure 3-5 Tactique offensive 31

32 En appliquant ces tactiques précises, on peut augmenter les réactions rapides et diminuer le calcul qui est moins efficace. 32

33 Chapitre 4 Réalisation et résultats 1. Ingénierie de développement 1.1 Méthode de développement De nos jours, les méthodes agiles sont de plus en plus développées. Elles manifestent des avantages pour le développement des bons logiciels de façon rapide et efficace. Apres avoir évalué les exigences du projet, on détermine d application de méthode Agile et Programmation Extrême XP programming en développant. En fait, on organise notre équipe de 4 personnes : un développeur de GUI, 2 développeurs de noyau et le client qui est responsable d exigences. Pour la programmation, parce que le module noyau est sensible à la performance, on a deux personnes qui appliquent la méthode programmation en binômes pour faciliter la capacité de refactoring du code et l amélioration de performance. Du côté de gestion de projet, on a déterminé plusieurs sprints avec les backlogs précises :

34 Figure 4-1 Diagramme Gantt du projet Jingci - Sprint1 : le noyau IA de base - Sprint2 : le noyau amélioré et le GUI - Sprint3 : l intégration et l amélioration - Sprint4 : le déploiement et l adaptation de changement 34

35 Figure 4-2 Plan de réalisation du Jingci Dans le sprint 1, on se concentre au développement d un programme simple qui aura implémenté les règles et les actes basiques de noyau IA. Dans le sprint 2, on améliore le noyau IA en améliorant l algorithme de calcul de poids et aussi de recherche de mouvement. En parallèle, on commence à développer le GUI du jeu. Dans le sprint 3, on fait l intégration du noyau IA au GUI de Jingci Dans le sprint 4, on évalue le programme et puis, on déploie notre produit sur le store d Android et d ios. D un autre côté, on continue à adapter le programme avec le changement d exigences. 1.2 Langage de programmation et plateformes On a choisi le langage C++ et la plateforme Cocos2d-x. Langage de programmation est un problème direct du développement. Dans notre cas, on développe un jeu pour le but de déploiement sur plusieurs plateformes, alors le choix de langage est important pour diminuer l efficacité de transformation le codage. Pour les applications ios, normalement on développe sur C++/Object C Pour les applications Android, normalement on développe sur Java ou sur C++ Pour les ordinateurs traditionnels : il y a des langages : Java, Python, C/C++, C#.Net, etc. 35

36 En évaluant des caractéristiques précises [7], on a le tableau de comparaison des langages de programmation suivants : Déploiement stable Accès aux niveaux de bas Support Multimédia Performance du programme Performance de programmeurs Support OS Java C/C++ Flash Python.Net Oui Oui Oui Oui Oui Limite Fort Non support Bon Bon Moyen Fort Fort Moyen Fort Fort Meilleur Moyen Moyen Fort Moyen Faible Fort Fort Moyen Linux/ Windows/ Android Linux/ Windows/ Android/ ios Linux/ Windows Linux/ Windows Windows De nos jours, on peut aussi développer des applications sur la plateforme web (HTML/HTML5 et JavaScript). Le point fort de cette approche est qu elle peut déployer rapidement un jeu sur le web qui peut s adapter beaucoup facilement à plusieurs plateformes d OS. Par contre, le point faible des jeux basés sur la plateforme web est qu elle ne peut pas satisfaire les applications qui demandent des ressources de calcul (le mémoire vive, la performance de processeur). Après avoir analysé les points forts et les points faibles de langages de programmation, nous avons choisi le langage C/C++ en utilisant la plateforme Cocos2d-x à cause des raisons suivantes : - On peut profiter les performances de Cocos2d-x pour traiter les images et les effets spéciaux de mouvement. - On peut déployer l application sur ios, sur Android et sur Windows/Linux sans difficulté : on a besoin juste de recompiler le code. Si on choisit programmer en Java pour la plateforme Android, on doit recoder le programme en Object-C pour déployer sur ios. En utilisant le langage C++, on peut programmer en appliquant des librairies générales de C++ et Object-C (il faut savoir que le langage Object C est base sur C++). Sur l OS Windows et Linux, on peut compiler sans cesse en utilisant le compiler gcc++. Cette approche peut diminuer l effort de transformation le codage de plusieurs langages. Le moteur de jeux Cocos2d-x Le moteur de jeux est un module essentiel pour les applications de jeu. Il existe plusieurs moteurs qui s'exécutent dans Android, et notamment des moteurs 2D et 3D qui sont des moteurs code en source libre ou commerciaux. C'est pourquoi il est difficile de faire migrer et de développer des jeux Android sur 36

37 la plate-forme d'architecture Intel. Cocos2d-x et Unity 3D sont les moteurs de jeux les plus utilisés sur les plates-formes Android. Cocos2d-x se base sur Cocos2d-iPhone et consiste en l extension des plates-formes prises en charge avec plusieurs langages de programmation partageant la même structure d'api. On peut profiter les avantages de Cocos2d-x de traitement de géométries et de physiques pour construire des applications mobiles. Par contre, pour la portion d applications sur multiplateforme, particulière sur Android, on peut utiliser l outil fourni par Android pour le programme en code native (comme C/C++ et langage assembly). Le mécanisme de fonctionnement d une application Android avec la librairie native est expliqué brièvement ci-dessous. Les applications NDK Android comprennent du code Java et des fichiers de ressources ainsi que du code source C/C++ et parfois du code assembleur. Tout le code natif est compilé dans une bibliothèque DLL (dynamic linked library) (fichier.so), il est appelé par Java dans le programme principal à l aide d un mécanisme JNI. 1.3 Gestion de code et de changement Structure de code du projet Figure 4-3 Architecture de l application NDK [12] On divise le codage du projet en deux modules principaux : le noyau IA et le GUI car on développe le jeu pendant plusieurs sprints et le module IA et le GUI sont développés en parallèle. Dans le dossier du projet on ajoute un dossier général pour les fonctions utiles partagées par les deux modules. La structure principale : 37

38 Outils utilisés : SVN, Google Drive, TestFlight Figure 4-4 Structure de codage du projet Jingci On utilise l outil de gestion du codage SVN. Grace à cet outil, on peut gérer des versions de codage du programme. Pour stocker les documents et les ressources communiqués entre notre équipe et notre client, on utilise le Google Drive. Pour le support de tests partagés entre notre équipe et le client, on utilise le TestFlight. TestFlight est un SaaS (Software as a Service), entièrement gratuit. Il permet de centraliser vos versions betas Android (.apk) et ios (.ipa) sur une plateforme web, pour ensuite être tester par vos clients. La procédure d utilisation est très simple : Création d une équipe dans TestFlight Envoi des invitations aux clients Publication de l application Tests. 2. Conception et Développement Cette partie aborde la conception du noyau de jeu : la conception de classes, et de l implémentation des algorithmes pour réaliser les solutions proposées. Pour présenter les composants du programme, on propose une classe Piece et ses sous-classes sont Player, Keeper et Ball (Joueur, Gardien de Goal et Ballon). On appelle notre noyau IA à partir du GUI du jeu, on propose une classe de l interface de programme GameAPI. Grace à cette classe, on peut accéder aux fonctions du noyau. 38

39 La classe JingciNode et NodeGenerator sont les composants les plus importants du noyau. Avec la classe JingciNode, on représente les états actuels du jeu : les statuts de droits utilises (le Pass, le Bound), les statuts de l initiation, de la répétition ou le tour du Rouge ou du Bleu. Avec la classe NodeGenerator, on peut implémenter les méthodes pour générer tous les mouvements possibles à partir d un mouvement. Grâce à ces mouvements générés, on peut chercher une bonne solution à utiliser. Les autres classes sont d autres types de données que l on utilise dans le programme. 2.1 Représentation des données Figure 4-5 Diagramme de classes du noyau IA Représentation du tablier La représentation du tableau de jeu est faite dans le codage de l espace du jeu qui se compose de 9x9 carrées. Pour la représentation du tableau de jeu, il y a des approches réelles : par un tableau de deux dimensions, par un tableau plat d une dimension de taille 81 d éléments, par un tableau de taille 9x9bits. Chaque approche a ses avantages et ses inconvénients. Pendant la réalisation du jeu, on a choisi d utiliser le tablier par un tableau d intégrer 9x9. Et aussi on utilise un tableau d integer 5x5 pour le masque de la portée possible de carrées d une pièce. 39

40 Figure 4-6 Représentation de tablier dans le mémoire Dans l image ci-dessus, on peut imaginer que le tablier du jeu est stocké dans le mémoire comme l image à gauche pour la position actuelle du jeu à droite. Les cellules occupées sont stockées par valeur de 1, par contre, les cellules disponibles ont la valeur de 0. (La couleur des pièces est stockée par un autre tableau d integer, mais il est important seulement pour la représentation sur le GUI, donc on ne décrit pas de son détail ici). Dans le cas où on veut connaitre les cellules disponibles pour le Joueur bleu numéro 5, le masque de taille 5x5 est comme une fenêtre en rouge. Mais quand on utilise un masque de 5x5 pour comparer avec le tableau de positions de pièces, il y a quelques cas dans lesquels la comparaison est incorrecte car la violation de l espace de mémoire. Imaginez que l on veuille avoir le masque du Gardien bleu. Maintenant, la fenêtre a une part hors du tablier et quand on accède à ces cellules du masque, cela provoque une erreur. Pour résoudre ce problème, on utilise plus d un tableau d intégrer de 13x13 d éléments. Pour quoi la taille de 13x13? On peut imaginer pour le cas nécessaire, on a besoin de plus de deux lignes et de deux colonnes qui ont la mission d éviter la violation de mémoire. Dans l image illustrée ci-dessous, les lignes bordées de valeur 1 sont les sentinelles. Quand on glisse le masque 5x5 jusqu au bord (vertical ou horizontal) du tableau, on peut reconnaitre la limite de tablier qui est gardée par nos sentinelles. 40

41 Figure 4-7 Représentation de tablier et des sentinelles L image ci-dessus est un tableau statique qui montre le tablier élargi avec les sentinelles (les lignes et les colonnes de valeur 1). Le tablier principal est dans la fenêtre rouge des carrées de valeur 0 qui montre que le ballon peut aller à toutes les carrées sur le tablier, sauf ceux que les sentinelles occupent. On a aussi défini un tableau statique pour montrer les positions possibles sur le tablier pour le Joueur. En correspondant avec la règle de ne pas aller au but, alors, les carrées du but (en rouge) ont la valeur de 1. Toutes les autres cellules ayant valeur 0 sont disponibles pour le Joueur. Ce tableau est le template pour vérifier la règle précédente pour chaque mouvement (et pour chaque fois on examine une solution possible). Figure 4-8 Représentation de la surface de but 41

42 Pour montrer les zones interdites de Gardiens de but, on déclare le tableau statique dans l image suivante. On peut voir que le gardien de chaque équipe peut aller aux carrées ayant la valeur 0 (dans la fenêtre rouge) de son terrain de jeu. Figure 4-9 Représentation de la zone de gardien de but Représentation des pièces Chaque pièce occupe une cellule de deux coordonnées : x et y. Chaque pièce a une ID : c est le numéro de pièce dans l équipe, pour le gardien de but, son ID est de G Chaque pièce a la couleur correspondante à la couleur de son équipe : bleue ou rouge Les fonctions internes d une pièce est de : - Vérifier si lesquels des cellules dans la portée de 5x5 sont disponibles - Vérifier si elle peut se déplacer à une autre cellule en examinant les règles suivantes : o Vérifier si le chemin de la cellule origine à la cellule objective est moins de 2 carrées o Vérifier si la cellule objective est autorisée pour cette pièce (les règles de limitations pour chaque type de pièce, par exemple pour les pièces joueurs, elles ne peuvent pas aller aux cellules du goal de deux équipes) Représentation d un mouvement du jeu On utilise la classe JingciNode pour représenter un mouvement. Les données de l état actuel du jeu sont aussi stockées pour chaque instance de JingciNode. Pour chaque mouvement, on gère : - la liste de pièces qui contient toutes les pièces des deux équipes - la matrice de couleur des pièces Figure 4-10 Classe Piece 42

43 - la matrice de position des pièces - les valeurs de drapeaux pour savoir le tour est pour quelle équipe - les drapeaux pour détecter l état du jeu, par exemple le jeu est bloqué ou un joueur a fait une situation de répétition, le statut de la violence de règles, etc. - les droits disponibles (pour savoir si le PASS et le BOUND sont déjà utilisés) Grâce aux informations stockées par un nœud du jeu, on peut calculer le poids d un mouvement pour comparer et choisir le meilleur mouvement possible. Figure 4-11 Classe d une position du jeu JingciNode 2.2 Implémentation de règles et de contrains Les règles et contraintes sont les éléments basiques de codage mais ils sont utilisés le plus souvent. Ils sont : - La vérification de distance de mouvement : on doit vérifier chaque fois une pièce s est déplacé. Suivant le règle de la limitation d un déplacement qui n est pas plus grand de deux carrées. Pour résoudre cette condition, on utilise un tableau de 5x5 carrées. Le carrée au centre se présente la pièce à déplacer. On extrait aussi un tableau de 5x5 carrées à partir du tablier de jeu (qui est de taille 13x13 carrées avec la valeur de 0 pour chaque carré disponible, avec la valeur de 1 pour chaque carrée occupé. Ensuite, on peut calculer l opération de AND pour les deux tableaux 5x5 et le tableau résultat manifeste la portée disponible pour le déplacement. - La vérification de ne pas se déplacer sur un carrée occupe - La vérification de ne pas se déplacer sur un carrée du goal Pour ne pas déplacer une pièce du type Joueur sur un carrée but, on déclare un tableau de taille 13x13 qui est comme ci-dessous. On code le but des deux équipes comme ils sont occupés et ce tableau est utilisé pour la vérification du Joueur seulement. - La vérification de ne pas marquer un but de soi-même. - La vérification de ne pas passer dans la zone de gardien (pour le gardien de but) - C est pareil pour la vérification de la zone de Joueur, on code la zone de gardien comme elles ne sont pas occupées et les autres carrées (hors de ces deux zones) sont occupés. Alors, quand on chercher les carrées disponibles pour le gardien, on ne trouve jamais un carrée hors de zone de but. - La vérification de l initiation : il y a une vérification pour le mouvement d initiation : pour cette étape, il y a seulement le ballon qui peut se déplacer. Et on n a pas de droit d utiliser le PASS ou le BOUND pour cette étape. - La vérification de l état de réinitialisation : pour éviter les jeux négatifs, par exemple l utilisateur cherche toujours de déplacer le ballon dans un carrée, ensuite de déplacer ses joueurs pour bloquer le ballons. Cette situation entraine un match sans résultat. Dans ce cas-là, on doit détecter si c est une situation du ballon bloque et déterminer de réinitialisation du jeu. - La vérification de l état de répétition La situation que les deux équipes déplacent toujours les mouvements identiques alors, après plusieurs mouvement, l état du jeu n est pas changé, est la même situation du ballon bloqué, on doit détecter cette situation pour redémarrer le jeu. 43

44 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

45 - 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 2 pour qu elle soit une valeur raisonnable : pour un mouvement, le ballon peut traverser maximum 4 carrées en appliquant le PASS ou le BOUND. La taille du tableau de jeu est de 9x9 alors, dans 2 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 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, 1 gardien 45

46 de goal, 1 ballon). Apres l amélioration, le noyau actuel doit chercher normalement pour de 4 à 6 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

47 Figure 4-14 Tactique offensive 47

48 Figure 4-15 Tactique défensive 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 l allocation de l espace 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

49 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 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 Alpha- Beta. 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. Résultat & évaluation 3.1 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 Test Test Test unitaire d intégrité acceptable Fixé Final 1 Vérifier les carrées possibles à aller O O O - O 2 Vérifier les carrées interdits O O O - O 3 Vérifier l état d initiation O O O - O 4 Déplacer une pièce O O O - O 5 Vérifier la répétition du jeu O O X O O 6 Vérifier le redémarrage après le ballon bloque O O X O O 7 Présenter des pièces O O O - O 8 Présenter les carrées disponibles O O O - O 9 Présenter le carrée d origine et le carrée de but O O O - O 10 Présenter l'animation de mouvement O O O - O Présenter des pièces après le mouvement Présenter les messages après avoir marqué de but Présenter le message après le redémarrage de jeu Présenter le message après le mouvement O O O - O O O X O O O O X O O O O X O O 49

50 15 Présenter le message de suggestion avant le mouvement O O X O O 16 Intégrer le noyau IA au GUI - O O - O Vérifier les messages du noyau IA correspondants à la représentation sur le GUI Vérifier la représentation du GUI correspondant à l état actuel du noyau de jeu - O O - O - O O - O Réaliser un cycle de vie complet du jeu sur plusieurs appareils portables (iphone, ipad, téléphone portable et tablet d Android) Vérifier les informations de tracking d un match - O O - O - O O - O 3.2 Évaluation 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

51 Figure 4-16 Ecran du programme Jingci et écran d étape d initiation 51

Algorithmique et Programmation Projets 2012/2013

Algorithmique et Programmation Projets 2012/2013 3 Dames 3. Objectif Il s agit d écrire un programme jouant aux Dames selon les règles. Le programme doit être le meilleur possible. Vous utiliserez pour cela l algorithme α β de recherche du meilleur coup

Plus en détail

V Recherche dans les arbres de jeux

V Recherche dans les arbres de jeux V Recherche dans les arbres de jeux Damien Olivier Damien.Olivier@univ-lehavre.fr Faculte des Sciences et Techniques du Havre Maitrise d informatique - Intelligence Artificielle p.1/30 Plan 1. Quels jeux?

Plus en détail

Intelligence Artificielle Jeux

Intelligence Artificielle Jeux Intelligence Artificielle Jeux Bruno Bouzy http://web.mi.parisdescartes.fr/~bouzy bruno.bouzy@parisdescartes.fr Licence 3 Informatique UFR Mathématiques et Informatique Université Paris Descartes Programmation

Plus en détail

Antoine Cornuéjols AgroParisTech

Antoine Cornuéjols AgroParisTech Antoine Cornuéjols AgroParisTech antoine.cornuejols@agroparistech.fr http://www.lri.fr/~antoine Cours IA 1. Introduction 2. Cas des jeux entièrement explorables 3. L algorithme du MinMax 4. Amélioration

Plus en détail

Théorie des Jeux et jeu d échecs

Théorie des Jeux et jeu d échecs Faure Rémi Mouret Clément Nguyen Anh-Tai EFREI I2 A2 Théorie des Jeux et jeu d échecs Sommaire 1 INTRODUCTION...4 2 THEORIE DES JEUX...5 2.1 REPRESENTATION DU DEROULEMENT D UNE PARTIE...5 2.2 ALGORITHME

Plus en détail

Mini-Projet : Tournoi de Dames

Mini-Projet : Tournoi de Dames Mini-Projet : Tournoi de Dames L objectif du projet est de programmer un jeu de dames de façon à ce que votre programme puisse jouer une partie de dames avec les programmes des autres étudiants. 1 Organisation

Plus en détail

Jeu de Dames. Rapport de projet. Etudiants : Tuteur : Mohr Maxence Ollagnon Julien. Informatique 3 ème année Promo 2016 Projet Algorithmique

Jeu de Dames. Rapport de projet. Etudiants : Tuteur : Mohr Maxence Ollagnon Julien. Informatique 3 ème année Promo 2016 Projet Algorithmique Polytech'Marseille Case 925 163, avenue de Luminy 13288 Marseille cedex 9 Informatique 3 ème année Promo 2016 Projet Algorithmique Jeu de Dames Rapport de projet Etudiants : Tuteur : Charton Trystan Alexandra

Plus en détail

Avant de commencer Au sommaire de ce chapitre

Avant de commencer Au sommaire de ce chapitre 1 Avant de commencer Au sommaire de ce chapitre Configuration requise pour utiliser Visual Basic 2010 Les différentes versions de Visual Basic 2010 Installation de Visual Studio 2010 Premier contact avec

Plus en détail

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense» Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges

Plus en détail

Sylvain Archenault Yves Houpert. Projet Informatique : Langage Java : Jeu De Dames en Java

Sylvain Archenault Yves Houpert. Projet Informatique : Langage Java : Jeu De Dames en Java Sylvain Archenault Yves Houpert Projet Informatique : Langage Java : Jeu De Dames en Java Projet GM3 Mai 2005 Chapitre 1 INTRODUCTION Le projet qui nous a été confié est de réaliser un jeu de dames en

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Environnement de programmation

Environnement de programmation Environnement de programmation 1.La programmation Les ordinateurs sont stupides! à un point dont on n'a pas idée. Ils ne réagissent ni ne répondent qu'à des situations ou à des données anticipées par le

Plus en détail

Projet Java/C# -> «BeloteTime» - CNAM 1 ère Année Groupe : Cédric Leclinche Valentin Metz Jacky Petrazoller Mathieu Uffler.

Projet Java/C# -> «BeloteTime» - CNAM 1 ère Année Groupe : Cédric Leclinche Valentin Metz Jacky Petrazoller Mathieu Uffler. Projet Java/C# -> «BeloteTime» - CNAM 1 ère Année Groupe : Cédric Leclinche Valentin Metz Jacky Petrazoller Mathieu Uffler BeloteTime Page 1 Sommaire Contenu Introduction... 3 Gestion de Projet... 4 Démarche

Plus en détail

Présentation du projet:

Présentation du projet: : Le but du projet est de réaliser le fonctionnement d'un jeu d échec valide. Plus spécifiquement, il consiste à implémenter l'organisation générale du jeu, et le suivi des règles du mouvement des pièces.

Plus en détail

Cinquième partie V. 5. Programmation des jeux de réflexion. Plan. Programmation des jeux vs. résolution de problèmes. En bref...

Cinquième partie V. 5. Programmation des jeux de réflexion. Plan. Programmation des jeux vs. résolution de problèmes. En bref... Plan Cinquième partie V Programmation des jeux de réflexion 1. ntroduction à l intelligence artificielle 2. Agents intelligents. Algorithmes classiques de recherche en A 4. Algorithmes et recherches heuristiques

Plus en détail

Projet de programmation Java Puissance 4

Projet de programmation Java Puissance 4 Projet de programmation Java Puissance 4 Juliusz Chroboczek et Gabriel Scherer Version du 13 novembre 2014 Le but de ce projet est d implémenter en Java un jeu de plateau qui s appelle Puissance 4. Votre

Plus en détail

Introduction à l informatique en BCPST

Introduction à l informatique en BCPST Introduction à l informatique en BCPST Alexandre Benoit BCPST L informatique en BCPST «L enseignement de l informatique en classes préparatoires de la filière BCPST a pour objectif d introduire puis de

Plus en détail

Représentation de la Connaissance. Complément Pratique 7 novembre 2006

Représentation de la Connaissance. Complément Pratique 7 novembre 2006 Représentation de la Connaissance Les jeux en Prolog Introduction Complément Pratique 7 novembre 2006 Nous nous intéressons aux jeux à deux joueurs pour lesquels la situation du jeu est connue des deux

Plus en détail

BUREAU VIRTUEL. Utilisation de l application sur ipad. Guide utilisateur. Sciences Po Utilisation du bureau virtuel sur ipad 1 / 6

BUREAU VIRTUEL. Utilisation de l application sur ipad. Guide utilisateur. Sciences Po Utilisation du bureau virtuel sur ipad 1 / 6 BUREAU VIRTUEL Utilisation de l application sur ipad Guide utilisateur Sciences Po Utilisation du bureau virtuel sur ipad 1 / 6 Utilisation du bureau virtuel sur ipad Table des matières PREAMBULE...2 QU

Plus en détail

Intelligence Artificielle Introduction

Intelligence Artificielle Introduction Intelligence Artificielle Introduction Bruno Bouzy http://web.mi.parisdescartes.fr/~bouzy bruno.bouzy@parisdescartes.fr Licence 3 Informatique UFR Mathématiques et Informatique Université Paris Descartes

Plus en détail

LUCAS CHESS 1-PRESENTATION

LUCAS CHESS 1-PRESENTATION LUCAS CHESS 1-PRESENTATION Intérêt - jouer aux échecs contre l'ordinateur avec des niveaux de difficulté croissants et avec un nombre limité de conseils qui sont donnés par un professeur d'échecs. - s

Plus en détail

Tutoriel Ionic framework

Tutoriel Ionic framework INGÉNIEURS EN SCIENCES INFORMATIQUES ADAPTATION DES INTERFACES A L ENVIRONNEMENT Tutoriel Ionic framework Tutoriel et présentation du framework IONIC : technologie permettant la réalisation d applications

Plus en détail

Le point d'inflexion dans l'écosystème de l'application

Le point d'inflexion dans l'écosystème de l'application Le point d'inflexion dans l'écosystème de l'application L'ère post-pc : l explosion des sources de données 0111010101101010101010101010101010101010110101010101010101010101010101010101 0101010101101011011011011101011100000010110101001101011110011010101010110101

Plus en détail

Avant-Propos Sencha Touch

Avant-Propos Sencha Touch Avant-Propos Développeurs web, vous qui souhaitez vous diversifier et appréhender simplement le développement mobile, mais redoutez un apprentissage long d un langage que vous ne connaissez pas, vous allez

Plus en détail

Projet E3 : Killer 2.0

Projet E3 : Killer 2.0 ESIEE PARIS Projet E3 : Killer 2.0 Programmation d une application pour Smartphone multiplateforme Edouard Fouché 3/26/2013 Sommaire I. Introduction... 2 II. Développements... 2 a. Rappel des règles du

Plus en détail

jeux Développer des en HTML 5 & JavaScript Samuel Ronce Multijoueur temps-réel avec Node.js et intégration dans Facebook

jeux Développer des en HTML 5 & JavaScript Samuel Ronce Multijoueur temps-réel avec Node.js et intégration dans Facebook Développer des jeux en HTML 5 & JavaScript Multijoueur temps-réel avec Node.js et intégration dans Facebook Samuel Ronce Groupe Eyrolles, 2013, ISBN: 978-2-212-13531-2 Avant-propos Pourquoi concevoir un

Plus en détail

Réinvestir les bénéfices dans le développement des applications mobiles

Réinvestir les bénéfices dans le développement des applications mobiles Réinvestir les bénéfices dans le développement des applications mobiles Fonctions ios et Android Tablettes et smartphones Un seul développement pour deux OS Utilisation intuitive Widgets natifs SQLite

Plus en détail

Le jeu de la tablette empoisonnée Dans le cadre de l UE HLIN405 - Iaroslav AMPLEEV, Antoine LAURENT, Nicolas POMPIDOR, Sacha WEILL - 25 avril 2015

Le jeu de la tablette empoisonnée Dans le cadre de l UE HLIN405 - Iaroslav AMPLEEV, Antoine LAURENT, Nicolas POMPIDOR, Sacha WEILL - 25 avril 2015 Le jeu de la tablette empoisonnée Dans le cadre de l UE HLIN405 - Iaroslav AMPLEEV, Antoine LAURENT, Nicolas POMPIDOR, Sacha WEILL - 25 avril 2015 Table des matières Introduction 2 1 Cahier des charges

Plus en détail

Versus Etude Technologique

Versus Etude Technologique VS Versus Etude Technologique 1 VS Contents Introduction... 3 Présentation des technologies... 3 Phonegap... 3... 3 Pour quels besoins?... 4 Comment ça fonctionne? Les models... 4 Phonegap... 5... 6 Comparatif...

Plus en détail

COMMENT DÉFINIR L ORIENTÉ OBJET

COMMENT DÉFINIR L ORIENTÉ OBJET COMMENT DÉFINIR L ORIENTÉ OBJET De manière superficielle, le terme «orienté objet», signifie que l on organise le logiciel comme une collection d objets dissociés comprenant à la fois une structure de

Plus en détail

BUREAU D ETUDES INFORMATIQUE JOUEUR DE PUISSANCE 4

BUREAU D ETUDES INFORMATIQUE JOUEUR DE PUISSANCE 4 MIETLICKI Pascal 3 MIC C2 BUREAU D ETUDES INFORMATIQUE JOUEUR DE PUISSANCE 4 1. Mode Console... 2 2. Mode Graphique... 2 3. Architecture de notre logiciel... 3 4. Manuel d utilisation... 5 5. Aide au joueur...

Plus en détail

Python. Introduction

Python. Introduction Python Introduction Utilisateur Il y a 2 catégories de personnes utilisant les machines avec des processeurs (ordinateurs, téléphones intelligents, tablettes, consoles, etc): les programmeurs les autres

Plus en détail

Projet informatique UML-Cpp avec QT4

Projet informatique UML-Cpp avec QT4 Haute école spécialisée bernoise Haute école technique et informatique, HTI Section Electricité et système de communication Laboratoire de l informatique technique Projet informatique UML-Cpp avec QT4

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

SOMMAIRE. I. Introduction 02. II. Glossaire 03 a. Glossaire technique 03 b. Glossaire fonctionnel 04

SOMMAIRE. I. Introduction 02. II. Glossaire 03 a. Glossaire technique 03 b. Glossaire fonctionnel 04 SOMMAIRE I. Introduction 02 II. Glossaire 03 a. Glossaire technique 03 b. Glossaire fonctionnel 04 III. Présentation de l'association 05 a. Présentation juridique et géographique 05 b. Présentation de

Plus en détail

RAPPORT DE STAGE «FAIRE RESPECTER UNE PROPRIÉTÉ EXPRIMÉE SOUS FORME D AUTOMATE TEMPORISÉ»

RAPPORT DE STAGE «FAIRE RESPECTER UNE PROPRIÉTÉ EXPRIMÉE SOUS FORME D AUTOMATE TEMPORISÉ» Université Joseph Fourier Département Licence Sciences & Technologie RAPPORT DE STAGE «FAIRE RESPECTER UNE PROPRIÉTÉ EXPRIMÉE SOUS FORME D AUTOMATE TEMPORISÉ» VISAN Vlad Laboratoire d accueil : Verimag

Plus en détail

Certificat de spécialisation Techniques avancées de conception et de programmation pour les Jeux Vidéo

Certificat de spécialisation Techniques avancées de conception et de programmation pour les Jeux Vidéo Ingénieurs et techniciens en informatique désirant acquérir des connaissances spécifiques au domaine des jeux et des médias interactifs. Avoir une bonne connaissance théorique et pratique de la programmation

Plus en détail

Développement itératif, évolutif et agile

Développement itératif, évolutif et agile Document Développement itératif, évolutif et agile Auteur Nicoleta SERGI Version 1.0 Date de sortie 23/11/2007 1. Processus Unifié Développement itératif, évolutif et agile Contrairement au cycle de vie

Plus en détail

Qu est-ce que la tactique?

Qu est-ce que la tactique? Qu est-ce que la tactique? «L entraîneur est un éternel chercheur.» Aimé Jacquet, Sélectionneur de l équipe de France Championne du Monde en 1998 La tactique en soccer est définie comme la collaboration

Plus en détail

Introduction. 1. Pourquoi utiliser un outil multiplateforme pour la programmation mobile?

Introduction. 1. Pourquoi utiliser un outil multiplateforme pour la programmation mobile? Introduction 1. Pourquoi utiliser un outil multiplateforme pour la programmation mobile? Depuis la sortie de l iphone, les smartphones sont devenus des ordinateurs à part entière. Et même si avant leur

Plus en détail

Logiciel d analyse du monde des objets connectés intelligents

Logiciel d analyse du monde des objets connectés intelligents Logiciel d analyse du monde des objets connectés intelligents Le défi : Transformer les données en intelligence décisionnelle Le logiciel SkySpark analyse automatiquement les données issues des équipements

Plus en détail

système d'analyse vidéo

système d'analyse vidéo by www.sportstec.com SportsCode Une nouvelle étape vers la performance Quand on recherche l excellence au plus haut niveau, il n y a qu une seule chose qui compte. C est occuper et quitter le terrain en

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Cas d'étude : Puissance 4 Analyse des besoins

Cas d'étude : Puissance 4 Analyse des besoins 1 Génie Logiciel Cas d'étude : Puissance 4 Analyse des besoins Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet màj 18/04/2007 2 Exercice Vous êtes employé(e) dans une société qui édite des jeux

Plus en détail

agility made possible

agility made possible DOSSIER SOLUTION Utilitaire ConfigXpress dans CA IdentityMinder Ma solution de gestion des identités peut-elle rapidement s adapter à l évolution des besoins et des processus métier? agility made possible

Plus en détail

PBA-pro Qu est-ce que c est?

PBA-pro Qu est-ce que c est? 1 PBA-pro Qu est-ce que c est? C est le successeur des logiciels AIM suivants : PBA-2000 PBA-3910 PAA-429 ParaView fdxplorer PBA.pro c est aussi un outil logiciel de développement générique pour banc de

Plus en détail

Leçons d échecs 8 ans et plus

Leçons d échecs 8 ans et plus Partenaire de la Fédération Française des Echecs Leçons d échecs ans et plus Leçon Le but du jeu Les échecs se jouent à deux sur un plateau carré de cases blanches (ou claires) et noires (ou foncées) qu

Plus en détail

Etude technologique sur Corss-platform Mobil

Etude technologique sur Corss-platform Mobil Etude technologique sur Corss-platform Mobil ADAPTION DES INTERFACES À L ENVIRONNEMENT Date : 11/11/2014 Student : Lifeng TAO I. Introduction RhoMobile RhoMobile est le conteneur de l'application mobile

Plus en détail

Retrouver de vieux programmes et jouer sur VirtualBox

Retrouver de vieux programmes et jouer sur VirtualBox CHAPITRE 3 Retrouver de vieux programmes et jouer sur VirtualBox Ce chapitre présente des notions avancées de VirtualBox. Elles permettront de réaliser des configurations spécifiques pour évaluer des systèmes

Plus en détail

Qu est-ce que le «cloud computing»?

Qu est-ce que le «cloud computing»? Qu est-ce que le «cloud computing»? Par Morand Studer eleven Octobre 2011 Qu est-ce que le «cloud computing»? - Morand Studer eleven Octobre 2011 www.eleven.fr 1 Aujourd hui, la démocratisation de l informatique

Plus en détail

Run Away. FABRE Maxime LEPOT Florian

Run Away. FABRE Maxime LEPOT Florian Run Away FABRE Maxime 2015 Sommaire Introduction... 2 I. Analyse fonctionnelle générale... 3 A. But du Jeu... 3 B. Objectif... 3 C. Moyen mis en œuvre... 3 II. Description de l application... 5 A. Diagramme

Plus en détail

Il n est pas impossible de résoudre le jeu d échecs

Il n est pas impossible de résoudre le jeu d échecs SCIENCE Il n est pas impossible de résoudre le jeu d échecs Julien Lemoine 1 et Simon Viennot 2 1. Introduction Qu entend-on par «résoudre le jeu d échecs»? Tout joueur d échec s est un jour confronté

Plus en détail

Gestion d une flotte de robots Configuration et ordre de missions

Gestion d une flotte de robots Configuration et ordre de missions Document Rapport Version Version 1.0 Date 25/03/2008 Auteur Ahmed RADOUA M1 SET Gestion d une flotte de robots Configuration et ordre de missions INSSET UPJV 1 ième année de MASTER Spécialité : (Année

Plus en détail

Projets, Algorithmique, C++, Théorie des Jeux

Projets, Algorithmique, C++, Théorie des Jeux Table des matières Projets, Algorithmique, C++, Théorie des Jeux Guerre des blobs 1 Enoncé du mini-projet 3 1.1 Objectif................................................. 3 1.2 Contraintes...............................................

Plus en détail

Formation Provinciale des Jeunes ACFF - Garçons - 2014-2015

Formation Provinciale des Jeunes ACFF - Garçons - 2014-2015 Formation Provinciale des Jeunes ACFF - Garçons - 2014-2015 Table des matières Introduction Analyse SWOT FPJ Objectifs opérationnels de la FPJ Actions Staff FPJ Organisation de la journée de détection

Plus en détail

Faire cohabiter plusieurs mondes

Faire cohabiter plusieurs mondes CHAPITRE 2 Faire cohabiter plusieurs mondes Pourquoi installer plusieurs systèmes d exploitation sur un seul ordinateur Il existe de nombreux systèmes d exploitation (Operating System ou OS, en anglais)

Plus en détail

Légende. Prérequis. unité A unité B. signifie que l'unité B est un prérequis de l'unité A. Corequis. unité A unité B

Légende. Prérequis. unité A unité B. signifie que l'unité B est un prérequis de l'unité A. Corequis. unité A unité B Légende unité A unité B signifie que l'unité B est un prérequis de l'unité A unité A unité B signifie que l'unité B est un corequis de l'unité A Note : lorsque deux cours sont corequis l'un de l'autre,

Plus en détail

Département Informatique 5ème année 2008-2009. Cahier des Charges

Département Informatique 5ème année 2008-2009. Cahier des Charges École Polytechnique de l Université de Tours 64, Avenue Jean Portalis 37200 TOURS, FRANCE Tél. +33 (0)2 47 36 14 14 Fax +33 (0)2 47 36 14 22 www.polytech.univ-tours.fr Département Informatique 5ème année

Plus en détail

LE ROLE DE LA RECHERCHE EN FORMATION INITIALE ET EN FORMATION CONTINUE DANS LE DOMAINE DE LA GESTION. VO SANG Xuan Hoang

LE ROLE DE LA RECHERCHE EN FORMATION INITIALE ET EN FORMATION CONTINUE DANS LE DOMAINE DE LA GESTION. VO SANG Xuan Hoang LE ROLE DE LA RECHERCHE EN FORMATION INITIALE ET EN FORMATION CONTINUE DANS LE DOMAINE DE LA GESTION VO SANG Xuan Hoang 1 Introduction Du moment où une personne se décide de choisir une carrière d enseignant,

Plus en détail

Rocket AS v6.3. Les bénéfices de l optimisation

Rocket AS v6.3. Les bénéfices de l optimisation Rocket AS v6.3 Les bénéfices de l optimisation Qu est-ce que Rocket AS? Rocket AS pour IBM System z assure la visualisation de requêtes, de rapports, de données et le développement d applications rapides

Plus en détail

Le jeu d échecs à l école maternelle

Le jeu d échecs à l école maternelle Ecole «L Oiseau Vert» 800 VOGELGRUN Le jeu d échecs à l école maternelle Développer les capacités de stratégie et de raisonnement Action du projet d école 0/0 Etape n : notion de quadrillage Construction

Plus en détail

MANUEL D INSTALLATION

MANUEL D INSTALLATION Data Processing Commission Fast Advanced Software for Table soccer - v 1.0 Logiciel de gestion de tournoi de football de table MANUEL D INSTALLATION INSTALLATION INFORMATIQUE DE LA TABLE DE MARQUE & CONFIGURATION

Plus en détail

LES SYSTEMES DE JEU EN VOLLEY BALL AU LYCEE

LES SYSTEMES DE JEU EN VOLLEY BALL AU LYCEE LES SYSTEMES DE JEU EN VOLLEY BALL AU LYCEE SOMMAIRE ) INTRODUCTION ET DEFINITION. Les constituants du système de jeu et leur fonctionnement. La loi fonctionnelle du jeu de volley ball. Terminologie. )

Plus en détail

DÉBUTER AVEC APP INVENTOR

DÉBUTER AVEC APP INVENTOR Terminale STMG SIG Année 2013-2014 DÉBUTER AVEC APP INVENTOR App Inventor est un outil de développement en ligne pour les téléphones et les tablettes sous Android. App Inventor est un OS créé par Google,

Plus en détail

trigonométrie équations mécanique homographie vision pas ordinateur

trigonométrie équations mécanique homographie vision pas ordinateur robotique algorithmes simulation modélisation vecteurs géométrie analytique informatique cinématique inverse produit scalaire Rapport de stage trigonométrie équations mécanique Laboratoire Informatique

Plus en détail

Conception et développement des plates-formes webs, de services et des applications mobiles des clients Entreprise: Yaal

Conception et développement des plates-formes webs, de services et des applications mobiles des clients Entreprise: Yaal Université Bordeaux 1 Master Informatique spécialité Système et Réseaux parcours Réseaux Conception et développement des plates-formes webs, de services et des applications mobiles des clients Entreprise:

Plus en détail

HTML5 Quels enjeux pour la mobilité et le RIA?

HTML5 Quels enjeux pour la mobilité et le RIA? HTML5 Quels enjeux pour la mobilité et le RIA? Julien Roche Philippe Guédez Ludovic Garnier 2 Sommaire Evolution des usages du Web Applications mobiles multiplateformes Contributions d HTML5 au RIA Conclusion

Plus en détail

Guide de l utilisateur pour Firefox 4 Mobile. Contact us: press@mozilla.com

Guide de l utilisateur pour Firefox 4 Mobile. Contact us: press@mozilla.com Guide de l utilisateur pour Firefox 4 Contact us: press@mozilla.com Sommaire À propos de Mozilla 1 Lancez-vous! 2 Tapez Moins, Surfez Plus! 3 Emportez votre Firefox partout avec vous 5 Personnalisez votre

Plus en détail

Cours Android. Développement et API

Cours Android. Développement et API Cours Android Développement et API Principaux OS orienté mobile ios ~ 12.1% Android ~ 81.9% Microsoft ~ 3.6% Historique Octobre 2003 : conception d'un OS mobile par Android Inc. (co-fondé par Andy Rubin)

Plus en détail

Dossier projet isn 2015 par Victor Gregoire

Dossier projet isn 2015 par Victor Gregoire Dossier projet isn 2015 par Victor Gregoire Plan: I) But du projet: créer un jeu de blackjack fonctionnel et le poster sur une page web mise en ligne. Le jeu sera developpé en C++ a l'aide de code blocks.

Plus en détail

Jeux multi-joueurs, projet ISN Par Matthias Creach Jonas Bouscharain Clément Lamoureux Elèves de TS2 Lycée Aristide Briand

Jeux multi-joueurs, projet ISN Par Matthias Creach Jonas Bouscharain Clément Lamoureux Elèves de TS2 Lycée Aristide Briand Jeux multi-joueurs, projet ISN Par Matthias Creach Jonas Bouscharain Clément Lamoureux Elèves de TS2 Lycée Aristide Briand http://isn.codelab.info/e-portfolio/e-portfolios-du-groupevendredi/clement-ts2/mes-mini-projets-isn/mon-cv/

Plus en détail

LA MOBILITE : ACTEURS, OUTILS,

LA MOBILITE : ACTEURS, OUTILS, LA MOBILITE : ACTEURS, OUTILS, DEVELOPPEMENT, CONCEPTION, GESTION DE PROJET INTERVENTION MASTER DILIPEM Pascal Moutet, iseeds Software, 02/02/2012 PARCOURS ET FONCTIONS OCCUPEES Parcoursuniversitaire Parcoursprofessionnel

Plus en détail

Vous êtes nombreux à débuter en hacking et à chercher plus d informations concernant la programmation.

Vous êtes nombreux à débuter en hacking et à chercher plus d informations concernant la programmation. Vous êtes nombreux à débuter en hacking et à chercher plus d informations concernant la programmation. Tux, la mascotte officielle de Linux Être débutant est absolument normal comme je le dis toujours

Plus en détail

Nouveautés Ignition v7.7

Nouveautés Ignition v7.7 ... Nouveautés Ignition v7.7 Nouveautés Ignition v7.7 Découvrez le Nouveau Scada avec plus de 40 nouveautés Principales nouveautés :... Cloud Templates Template Repeater Client Multilingue + Sequential

Plus en détail

Bases cognitives du jeu défensif et du jeu offensif. - J ai le ballon / je n ai pas le ballon /je récupère le ballon / je perds le ballon

Bases cognitives du jeu défensif et du jeu offensif. - J ai le ballon / je n ai pas le ballon /je récupère le ballon / je perds le ballon Du 3 contre 3 au 1 contre 1 Bases cognitives du jeu défensif et du jeu offensif - J ai le ballon / je n ai pas le ballon /je récupère le ballon / je perds le ballon Développement par la création se supériorité

Plus en détail

Projets Programmation impérative 1 langage C

Projets Programmation impérative 1 langage C Projets Programmation impérative 1 langage C Les projets devront être rendus le 24 janvier 2011, avant 23 heures (heure de Paris). Ils doivent être réalisés par binômes (C'est-à-dire par groupe de DEUX

Plus en détail

Le cadre de travail en ligne pour tous les collaborateurs du club de football. Centralisation de toutes les données sur le club

Le cadre de travail en ligne pour tous les collaborateurs du club de football. Centralisation de toutes les données sur le club S ccer nline Le cadre de travail en ligne pour tous les collaborateurs du club de football Administration S ccer nline Smartphone Présences, rapports, arrangements de transport, arrangements de vestiare

Plus en détail

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation (Operating Systems) Introduction SITE : http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation - Mírian Halfeld-Ferrari p. 1/2 Qu est-ce qu un SE? Ensemble de logiciels

Plus en détail

Cours Info - 12. Représentation des nombres en machine. D.Malka MPSI 2014-2015. D.Malka Cours Info - 12 MPSI 2014-2015 1 / 45

Cours Info - 12. Représentation des nombres en machine. D.Malka MPSI 2014-2015. D.Malka Cours Info - 12 MPSI 2014-2015 1 / 45 Cours Info - 12 Représentation des nombres en machine D.Malka MPSI 2014-2015 D.Malka Cours Info - 12 MPSI 2014-2015 1 / 45 Sommaire Sommaire 1 Bases de numération par position 2 Représentation des entiers

Plus en détail

Formations professionnelles Développeur d applications

Formations professionnelles Développeur d applications Formations professionnelles Développeur d applications Le développeur d applications est l un des piliers de la branche informatique. C est lui qui conçoit et réalise les logiciels. La tâche réclame des

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Introduction à la programmation

Introduction à la programmation Chapitre 2 Introduction à la programmation Nous avons vu, dans le chapitre précédent, ce qu est un algorithme et un certain nombre de façons pour exécuter les algorithmes à la main. Nous allons voir, dans

Plus en détail

Émission en janvier La bataille des OS

Émission en janvier La bataille des OS Émission en janvier La bataille des OS Introduction : Bonjour, vous êtes sur BAC FM 106.1 dans l émission La matinale geek animée par la classe de BTS SIO2 avec aujourd hui Cédric et Bastien. Nous allons

Plus en détail

INF601 : Algorithme et Structure de données

INF601 : Algorithme et Structure de données Cours 2 : TDA Liste B. Jacob IC2/LIUM 15 février 2010 Plan 1 Définition du TDA Liste 2 Réalisation du TDA Liste 3 Type de stockage des éléments 4 Recherche d un élément Dans une liste non triée Dans une

Plus en détail

MC-II1 - Cours n o 1 Langages de programmation Introduction à la POO

MC-II1 - Cours n o 1 Langages de programmation Introduction à la POO MC-II1 - Cours n o 1 Langages de programmation Introduction à la POO Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2012-2013 S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 1 / 36 Sommaire 1 Langages de

Plus en détail

Calcul Scientifique L2 Maths Notes de Cours

Calcul Scientifique L2 Maths Notes de Cours Calcul Scientifique L2 Maths Notes de Cours Le but de ce cours est d aborder le Calcul Scientifique, discipline arrivant en bout d une d une chaîne regroupant divers concepts tels que la modélisation et

Plus en détail

TP 1 : prise en main de C#. Net sous Visual Studio 2010

TP 1 : prise en main de C#. Net sous Visual Studio 2010 Année universitaire : 2014-2015 Responsable : Sonia LAJMI Niveau Matière 2 ème année MPIM Management des Contenus Multimédia TP 1 : prise en main de C#. Net sous Visual Studio 2010 Dans ce tout premier

Plus en détail

Créer le schéma relationnel d une base de données ACCESS

Créer le schéma relationnel d une base de données ACCESS Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...

Plus en détail

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel)

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel) UPMC - UFR 99 Licence d informatique 205/206 Module 3I009 Cours 4 : Méthodes d accès aux données Plan Fonctions et structure des SGBD Structures physiques Stockage des données Organisation de fichiers

Plus en détail

Les étapes et les outils de développement des programmes

Les étapes et les outils de développement des programmes Les étapes et les outils de développement des programmes L élaboration d un programme est un travail qui se fait en plusieurs étapes nécessitant divers outils que ce chapitre tente de décrire succinctement.

Plus en détail

Point sur les solutions de développement d apps pour les périphériques mobiles

Point sur les solutions de développement d apps pour les périphériques mobiles Point sur les solutions de développement d apps pour les périphériques mobiles Par Hugues MEUNIER 1. INTRODUCTION a. Une notion importante : le responsive web design Nous sommes en train de vivre une nouvelle

Plus en détail

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/ données pr ogramme 11111101 11001101 01000101 b us disque ma gnétique processeur écran Structures de données et algorithmes Ordinateurs Gilles Falquet, printemps-été 2002 Machines composées de (depuis

Plus en détail

Bien choisir votre PC Si vous envisagez d acheter un ordinateur ou de renouveler votre outil informatique existant par du matériel plus récent et

Bien choisir votre PC Si vous envisagez d acheter un ordinateur ou de renouveler votre outil informatique existant par du matériel plus récent et 1 Bien choisir votre PC Si vous envisagez d acheter un ordinateur ou de renouveler votre outil informatique existant par du matériel plus récent et équipé du dernier système d exploitation de Microsoft,

Plus en détail

Gestion de projet. Freeplane Didacticiel V1.2. 29 novembre 2014. Gérard Gervois Frédéric Giamarchi

Gestion de projet. Freeplane Didacticiel V1.2. 29 novembre 2014. Gérard Gervois Frédéric Giamarchi Gestion de projet Freeplane Didacticiel V1.2 29 novembre 2014 Gérard Gervois Frédéric Giamarchi Département G.E.I.I. I.U.T. de Nîmes Université Montpellier II Présentation Freeplane est un logiciel qui

Plus en détail

Langage C et aléa, séance 4

Langage C et aléa, séance 4 Langage C et aléa, séance 4 École des Mines de Nancy, séminaire d option Ingénierie Mathématique Frédéric Sur http://www.loria.fr/ sur/enseignement/courscalea/ 1 La bibliothèque GMP Nous allons utiliser

Plus en détail

Entraînement au concours ACM-ICPC

Entraînement au concours ACM-ICPC Entraînement au concours ACM-ICPC Concours ACM-ICPC : format et stratégies Page 1 / 16 Plan Présentation Stratégies de base Page 2 / 16 Qu est-ce que c est? ACM-ICPC : International Collegiate Programming

Plus en détail

Footeco est une culture de la formation des jeunes talents de l'asf.

Footeco est une culture de la formation des jeunes talents de l'asf. 1 Que signifie Footeco? Football Technique Coordination Qu est-ce que Footeco? Footeco est une culture de la formation des jeunes talents de l'asf. 2 Quels sont les objectifs de Footeco? Viser à développer

Plus en détail

Rapport de Stage. Habillage procédural et rendu en temps réel de vastes terrains texturés par GPU-quadtrees. (15 janvier - 15juillet 2006

Rapport de Stage. Habillage procédural et rendu en temps réel de vastes terrains texturés par GPU-quadtrees. (15 janvier - 15juillet 2006 Rapport de Stage Habillage procédural et rendu en temps réel de vastes terrains texturés par GPU-quadtrees (15 janvier - 15juillet 2006 15 avril - 15 juillet 2007) Effectué au sein du laboratoire MAP-ARIA

Plus en détail

Développement nomade :

Développement nomade : nomade : Architectures - Sylvain Jubertie - Université d Orléans 2011-2012 Sylvain Jubertie - Université d Orléans nomade 1 / 30 Plan 1 Architectures 2 3 Sylvain Jubertie - Université d Orléans nomade

Plus en détail