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

Les Jeux. Plan. Introduction. Le minimax. Le minimax α / β. Bilan

Les Jeux. Plan. Introduction. Le minimax. Le minimax α / β. Bilan Les Jeux Plan Introduction Qu est-ce qu un jeu? Pourquoi les jeux et quels jeux? Aperçu historique Informatisation Complexité Le minimax Création d un arbre ET / OU Fonction d évaluation Version simplifiée

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

Rapport individuel Génie logiciel

Rapport individuel Génie logiciel 2012 Rapport individuel Génie logiciel Dans ce rapport sera présenté l ensemble des activités effectuées au cours du projet de création de site de covoiturage «Etucovoiturage» (http://etucovoiturage.free.fr)

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

Réponses au Questionnaire technique/tactique pour les U13

Réponses au Questionnaire technique/tactique pour les U13 Réponses au Questionnaire technique/tactique pour les U13 Avant tout j aimerais remercier tous les enfants qui ont fait l effort d avoir répondu au questionnaire (il y en a eu 16). Et même si ce questionnaire

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

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

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

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

Livret du Stagiaire en Informatique

Livret du Stagiaire en Informatique Université François-Rabelais de Tours Campus de Blois UFR Sciences et Techniques Département Informatique Livret du Stagiaire en Informatique Licence 3ème année Master 2ème année Année 2006-2007 Responsable

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

1 Introduction. 2 Algorithmes sans élagage. 2.1 Minimax. Chapitre 3 : Jeux (Février 2007, Pierre Gançarski)

1 Introduction. 2 Algorithmes sans élagage. 2.1 Minimax. Chapitre 3 : Jeux (Février 2007, Pierre Gançarski) Chapitre 3 : Jeux (Février 2007, Pierre Gançarski) 1 Introduction Quatre caractérisques pour les jeux étudiés : jeux à deux : deux adversaires eectuent alternativement des coups, chaque défaillance de

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

Avril - Mai -Juin Projet de programmation PHASE DE CODAGE. IUT DE VANNES - Juan Joal. CADIC Julien - PINSARD Antoine

Avril - Mai -Juin Projet de programmation PHASE DE CODAGE. IUT DE VANNES - Juan Joal. CADIC Julien - PINSARD Antoine 2012 Avril - Mai -Juin Projet de programmation PHASE DE CODAGE IUT DE VANNES - Juan Joal CADIC Julien - PINSARD Antoine Structure pédagogique PROJET AP5 Plus que quelques lignes à coder et nous aurons

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

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

[WINDOWS 7 - LES FICHIERS] 28 avril 2010. Logiciel / Windows

[WINDOWS 7 - LES FICHIERS] 28 avril 2010. Logiciel / Windows Ce dossier a une forme un peu différente des précédentes : c est un ensemble de «fiches» décrivant chacune une des opérations que l on peut effectuer avec un fichier (enregistrer, renommer, etc.). Chaque

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

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

Guide de l utilisateur

Guide de l utilisateur Guide de l utilisateur du système Renseignements supplémentaires : Service de soutien du RCDSP soutien@rcdsp.ca 1 866 357 2756 Heures de service : 8 h à 20 h, heure de l Est, du lundi au vendredi Mise

Plus en détail

UNE SOLUTION CRM CONÇUE POUR LA FORCE DE VENTE

UNE SOLUTION CRM CONÇUE POUR LA FORCE DE VENTE LIVRE BLANC UNE SOLUTION CRM CONÇUE POUR LA FORCE DE VENTE Comment choisir un CRM qui répondra à toutes les attentes de vos commerciaux www.aptean..fr LIVRE BLANC UNE SOLUTION CRM CONÇUE POUR LA FORCE

Plus en détail

Prendre un bon départ

Prendre un bon départ Chapitre A Prendre un bon départ 1 - Avant-propos Un ordinateur sait très bien faire deux choses : Calculer, d oùle nomcomputer en anglais que l on pourrait traduire par calculateur. Placer des données

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

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

Poker. A rendre pour le 25 avril

Poker. A rendre pour le 25 avril Poker A rendre pour le 25 avril 0 Avant propos 0.1 Notation Les parties sans * sont obligatoires (ne rendez pas un projet qui ne contient pas toutes les fonctions sans *). Celles avec (*) sont moins faciles

Plus en détail

Introduction à la théorie des jeux à deux

Introduction à la théorie des jeux à deux Introduction à la théorie des jeux à deux Table des matières 1 Arbres d évaluation 2 A) Minimax...................................... 2 B) α-β......................................... 3 2 Variantes et

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

CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, RhoMobile)

CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, RhoMobile) INGENIEUR EN SCIENCES INFORMATIQUES RAPPORT D ETUDE TECHNOLOGIQUE SUR LES SOLUTIONS WEB CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, ) Student : Jiachen NIE Parcours: IHM Subject : Adaptation des Interfaces

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

CONCLUSIONS. Par rapport aux résultats obtenus, on peut conclure les idées suivantes :

CONCLUSIONS. Par rapport aux résultats obtenus, on peut conclure les idées suivantes : CONCLUSIONS L application de la PNL à l entreprise est confrontée aux besoins des leaders d équipe, tels que: la gestion de son propre développement, du stress, la résolution des problèmes tels que les

Plus en détail

Sujet 17 : Exploitation de données financières de Google Finance en C#

Sujet 17 : Exploitation de données financières de Google Finance en C# Amsellem Ari Pour le 01/06/11 Ohayon Alexandre Gueguen Tristan Sujet 17 : Exploitation de données financières de Google Finance en C# Introduction : Il convient tout d abord de signaler que le titre 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

INITIATION A L INFORMATIQUE. MODULE : Initiation à l'environnement Windows XP. Table des matières :

INITIATION A L INFORMATIQUE. MODULE : Initiation à l'environnement Windows XP. Table des matières : INITIATION A L INFORMATIQUE MODULE : Initiation à l'environnement Windows XP Table des matières : INTRODUCTION Les outils de l Interface Graphique : CONFIGURER VOTRE POSTE DE TRAVAIL Paramétrer la barre

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

PROJET PERSONNALISÉ ENCADRÉ : N 6

PROJET PERSONNALISÉ ENCADRÉ : N 6 PROJET PERSONNALISÉ ENCADRÉ : N 6 Mise en place d un serveur AD Benjamin Dupuy BTS Service Informatique aux Organisations Option : Solutions d'infrastructure, systèmes et réseaux Epreuve E6 Parcours de

Plus en détail

Chapitre 2 : Cycles de vie logiciel et méthodes de développement G L & A G L 2 0 1 4 / 2 0 1 5

Chapitre 2 : Cycles de vie logiciel et méthodes de développement G L & A G L 2 0 1 4 / 2 0 1 5 Chapitre 2 : Cycles de vie logiciel et méthodes de développement G L & A G L 2 0 1 4 / 2 0 1 5 Plan Chapitre 2 Modèles de cycles de vie Méthodes de développement : Méthode lourde Méthode agile Exemple

Plus en détail

MODELE D UN RAPPORT DE STAGE DE BAC PRO ELECTROTECHNIQUE

MODELE D UN RAPPORT DE STAGE DE BAC PRO ELECTROTECHNIQUE MODELE D UN RAPPORT DE STAGE DE BAC PRO ELECTROTECHNIQUE [Prénom Nom] Rapport sur le stage effectué du [date] au [date] Dans la Société : [NOM DE LA SOCIETE : Logo de la société] à [Ville] [Intitulé du

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

GUIDE DE DÉMARRAGE XGAINPROFITS (GUIDE #1)

GUIDE DE DÉMARRAGE XGAINPROFITS (GUIDE #1) GUIDE DE DÉMARRAGE XGAINPROFITS (GUIDE #1) Je tiens à débuter en vous félicitant d avoir activé votre compte XGAINprofits. Grâce à cette activation, vous avez accès à la section «Produits» du site en plus

Plus en détail

Livret Professeur. Jeu «Construis ta ligne à grande vitesse» Version Windows/Mac. v1.06 07/04/2015. Jeu édité par. créé par. Avec le soutien de

Livret Professeur. Jeu «Construis ta ligne à grande vitesse» Version Windows/Mac. v1.06 07/04/2015. Jeu édité par. créé par. Avec le soutien de Livret Professeur Jeu «Construis ta ligne à grande vitesse» Version Windows/Mac v1.06 07/04/2015 Jeu édité par créé par Avec le soutien de Page 1 Pre sentation Le Jeu «Construis ta ligne à grande vitesse»

Plus en détail

Fiche Technique. Terminologie : Utilisation de dl.free.fr (Ce n est pas la meilleure technique) Envoyez des fichiers de gros stockage

Fiche Technique. Terminologie : Utilisation de dl.free.fr (Ce n est pas la meilleure technique) Envoyez des fichiers de gros stockage Terminologie : Boitier ADSL nommé ici Boitier HD nommé ici Freebox FreeboxTV ou HDboxTV Nous souhaitons résoudre 3 problèmes. 1. Connecter les plugs-in d alimentation et de communication en CPL 2. Stocker

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

Initiation à l informatique. Module 6 : La navigation Internet basique

Initiation à l informatique. Module 6 : La navigation Internet basique Initiation à l informatique. Module 6 : La navigation Internet basique Système d exploitation utilisé : Windows XP Service Pack 2 Créé par Xavier CABANAT Version 1.0 Document créé par Xavier CABANAT Page

Plus en détail

G en om3: Building middleware-independent robotic components. Comparaison de middleware: YARP, MS Robotics Dev Studio, URBI, OpenRTM-aist, ROS

G en om3: Building middleware-independent robotic components. Comparaison de middleware: YARP, MS Robotics Dev Studio, URBI, OpenRTM-aist, ROS G en om3: Building middleware-independent robotic components Comparaison de middleware: YARP, MS Robotics Dev Studio, URBI, OpenRTM-aist, ROS Pablo Rauzy 15 février 2011 Table des matières 1 G en om3 :

Plus en détail

LA PARTIE CLASSIQUE par Amandine Stock & Maxime Lemaire

LA PARTIE CLASSIQUE par Amandine Stock & Maxime Lemaire LA PARTIE CLASSIQUE par Amandine Stock & Maxime Lemaire La partie classique est la base du jeu de dames pour les débutants. La stratégie est la suivante : jouer de telle manière qu en fin de partie, l

Plus en détail

Développement mobile «cross-platform»

Développement mobile «cross-platform» Développement mobile «cross-platform» Polytech Nice vendredi 17 octobre 2014 20.10.14 1 Au programme 1. A chaque projet sa techno 2. 1 code Plusieurs plateformes 3. La puissance de jquery sur mobile 4.

Plus en détail

API08 Evaluation site internet

API08 Evaluation site internet UNIVERSITE DE TECHNOLOGIE DE COMPIEGNE API08 Evaluation site internet Fédération Française des échecs Emilien NOTARIANNI Printemps 2014 Table des matières Introduction... 2 Evaluation «subjective»... 3

Plus en détail

À la découverte de jquery Mobile

À la découverte de jquery Mobile 1 À la découverte de jquery Mobile jquery Mobile est un ensemble de plug-ins et de widgets de jquery visant à déployer une API multiplates-formes capable de développer des applications Web mobiles. Au

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. Pourquoi Silverlight?

Introduction. Pourquoi Silverlight? Pourquoi Silverlight? Si le Web ne cesse d évoluer et de s accroître, on peut en dire autant des attentes des utilisateurs. Lorsque le premier navigateur Web a été développé, il était destiné à fournir

Plus en détail

NKUL BETI. econobeti

NKUL BETI. econobeti NKUL BETI econobeti Le réseau social d entraides pour la gestion des efforts et du génie ekang Paru le 08 Août 2010 Plateforme de communication Se préparer pour le Cameroun de Demain Sans une organisation

Plus en détail

FRANÇAIS PHONE-VS. Guide d installation et utilisation

FRANÇAIS PHONE-VS. Guide d installation et utilisation FRANÇAIS PHONE-VS Guide d installation et utilisation INDEX 1 INTRODUCTION... 1 2 INSTALLATION ET MISE EN SERVICE... 1 3 REGISTRER L APPLICATION... 4 4 CONFIGURATION DES CONNEXIONS... 6 5 CONNEXION...

Plus en détail

Bienvenue dans le monde de la construction logicielle

Bienvenue dans le monde de la construction logicielle Chapitre 1 Bienvenue dans le monde de la construction logicielle Sommaire : 1.1 La construction logicielle, qu est-ce que c est? : page 3 1.2 Pourquoi la construction logicielle est-elle importante? :

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

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN Les contenues de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et ne peuvent en aucun cas

Plus en détail

PROJET EHPTMMMORPGSVR

PROJET EHPTMMMORPGSVR PROJET EHPTMMMORPGSVR Déroulement du projet Tableau d avancement : https://docs.google.com/spreadsheets/d/1aq1odbyaavk_rcxdcvowvz9kvmzy8nc5f1p26at2ufq/e dit?usp=sharing Tous d abord, nous avons installé

Plus en détail

ETNA Projet de Fin d Étude 2005-2007 RimElse Cahier des charges. c Copyleft 2006, ELSE Team

ETNA Projet de Fin d Étude 2005-2007 RimElse Cahier des charges. c Copyleft 2006, ELSE Team ETNA Projet de Fin d Étude 2005-2007 RimElse Cahier des charges c Copyleft 2006, ELSE Team 18 avril 2006 Table des matières 1 Introduction 2 2 Présentation du projet 3 2.1 Une distribution Évolulable..................

Plus en détail

Gé nié Logiciél Livré Blanc

Gé nié Logiciél Livré Blanc Gé nié Logiciél Livré Blanc Version 0.2 26 Octobre 2011 Xavier Blanc Xavier.Blanc@labri.fr Partie I : Les Bases Sans donner des définitions trop rigoureuses, il faut bien commencer ce livre par énoncer

Plus en détail

IA54 Compte-rendu «STATIONNEMENT AUTOMATIQUE DE VEHICULE»

IA54 Compte-rendu «STATIONNEMENT AUTOMATIQUE DE VEHICULE» IA54 Compte-rendu «STATIONNEMENT AUTOMATIQUE DE VEHICULE» Henri Payno - Cyril Bailly 1/12/2011 SOMMAIRE 1. Introduction... 3 2. Contraintes... 3 3. Architecture globale... 4 4. Interface... 5 A. Scène

Plus en détail

Présentation de Michel Couturier Analyse du tournoi SR 2009

Présentation de Michel Couturier Analyse du tournoi SR 2009 Présentation de Michel Couturier Analyse du tournoi SR 2009 Introduction Résultat des analyses Conclusion et question Les objectifs du Tournoi des Sélections sont : Offrir aux meilleurs joueurs de toutes

Plus en détail

Introduction au Makefile

Introduction au Makefile Introduction au Makefile Nicolas Kielbasiewicz 3 mars 2009 Le développement d un programme et plus généralement d un logiciel demande au(x) programmeur(s) de gérer plusieurs fichiers, voire plusieurs langages.

Plus en détail

Agilitéet qualité logicielle: une mutation enmarche

Agilitéet qualité logicielle: une mutation enmarche Agilitéet qualité logicielle: une mutation enmarche Jean-Paul SUBRA Introduction : le manifeste Agile Manifeste pour le développement Agile de logiciels Nous découvrons comment mieux développer des logiciels

Plus en détail

Fiche PM300 - Préparer le planning d un projet. 1.Introduction : un outil en support...2. 2.Première étape : La création des ressources...

Fiche PM300 - Préparer le planning d un projet. 1.Introduction : un outil en support...2. 2.Première étape : La création des ressources... Fiche PM300 - Préparer le planning d un projet Table des matières 1.Introduction : un outil en support...2 2.Première étape : La création des ressources...3 3.Deuxième étape : Le canevas méthodologique

Plus en détail

1. Présentation du projet. 2. 2. Étape du projet... 2 3. Difficulté rencontré... 3. 4. Guide d utilisation... 4. 5. Conclusion...

1. Présentation du projet. 2. 2. Étape du projet... 2 3. Difficulté rencontré... 3. 4. Guide d utilisation... 4. 5. Conclusion... 1. Présentation du projet. 2 2. Étape du projet... 2 3. Difficulté rencontré..... 3 3.1 Problème mémoire et performance........ 3 3.2 Problème interface graphique...... 3 4. Guide d utilisation........

Plus en détail

Application de gestion de tâche

Application de gestion de tâche Université de Montpellier 2 Rapport TER L3 Application de gestion de tâche Tuteur : M. Seriai Participant : Cyril BARCELO, Mohand MAMMA, Feng LIU 1 er Fevrier 2015 26 Avril 2015 Table des matières 1 Introduction

Plus en détail

Active CRM. Solution intégrée de téléprospection. www.aliendoit.com 04/10/2011

Active CRM. Solution intégrée de téléprospection. www.aliendoit.com 04/10/2011 www.aliendoit.com Active CRM Solution intégrée de téléprospection 04/10/2011 Alien Technology 3E Locaux Professionnels Km 2.5 Route de Kénitra 11005 SALÉ MAROC Tél. : +212 537 84 38 82 Fax : +212 537 88

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

MMA - Projet Capacity Planning LOUVEL Cédric. Annexe 1

MMA - Projet Capacity Planning LOUVEL Cédric. Annexe 1 Annexe 1 Résumé Gestion Capacity Planning Alternance réalisée du 08 Septembre 2014 au 19 juin 2015 aux MMA Résumé : Ma collaboration au sein de la production informatique MMA s est traduite par une intégration

Plus en détail

Voyageur de commerce et solution exacte

Voyageur de commerce et solution exacte Voyageur de commerce et solution exacte uteurs :. Védrine,. Monsuez e projet consiste à réaliser un outil capable de trouver le plus court trajet pour un commercial qui doit visiter n villes, les n villes

Plus en détail

Les approches d enseignement supporté dans l ingénierie

Les approches d enseignement supporté dans l ingénierie Les approches d enseignement supporté dans l ingénierie Jan Bujnak Université de Zilina Slovaquie La parole dite et le texte écrit sur papier étaient la base ainsi que le seul moyen de transférer les informations

Plus en détail

UserLock testé par PC Mag

UserLock testé par PC Mag UserLock testé par PC Mag Article original publié le 11 mars 2010 sur PCMag.com EN BREF UserLock verrouille les PCs et le fait bien. Ce «poids-plume» complète les fonctionnalités des Stratégies de Groupe

Plus en détail

Installation de Windows 7 sur PC

Installation de Windows 7 sur PC Equipe Système ~ Réalisé par Daniel Harrar Mis en page par Antoine Gorisse Le 17/10/2011 But du tutoriel Ce tutoriel va vous permettre d installer complètement et proprement Windows 7 sur votre PC! IMPORTANT

Plus en détail

Preuve de la correction de l algorithme alpha-bêta

Preuve de la correction de l algorithme alpha-bêta I02 ÉPREUVE COMMUNE DE TIPE 2013 - Partie D TITRE : Preuve de la correction de l algorithme alpha-bêta Temps de préparation :.. 2 h 15 minutes Temps de présentation devant les examinateurs :.10 minutes

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

START AIR SAFE PROJECT AF 10/04/2014. Par corentin RICOU & William BOBO

START AIR SAFE PROJECT AF 10/04/2014. Par corentin RICOU & William BOBO START AIR SAFE PROJECT AF 10/04/2014 Par corentin RICOU & William BOBO TABLE DES MATIÈRES Table des matières Introduction 1 les besoins 1 platforme de travail 2 Conception 3 Architecture 3 Réalisation

Plus en détail

Projet informatique «Voyageur de commerce» Résolution approchée par algorithme génétique du problème du voyageur de commerce

Projet informatique «Voyageur de commerce» Résolution approchée par algorithme génétique du problème du voyageur de commerce Année 2007-2008 Projet informatique «Voyageur de commerce» Résolution approchée par algorithme génétique du problème du voyageur de commerce B. Monsuez Projet informatique «Voyageur de commerce» Résolution

Plus en détail

Enseigner dans une salle de classe intelligente

Enseigner dans une salle de classe intelligente Enseigner dans une salle de classe intelligente Stéphane Justeau IPSE 27 juin 2013 Objectifs A la fin de cette séance, vous devriez être en mesure : -D identifier les limites d une salle de classe agencée

Plus en détail

Module "Installer et configurer un PC"

Module Installer et configurer un PC Rapport d'activités Module "Installer et configurer un PC" (i-ch/ict 304) Auteur : Rafael Ruiz Classe : 1IIN Mandataire(s) : PLu Date : 14 novembre 2013 rapport d'activité.odt 1 / 11 PLu : 14/11/2013 Table

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

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

Remerciements + compte-rendu

Remerciements + compte-rendu Remerciements + compte-rendu I. Remerciements Tout d abord, je tiens à remercier mon tuteur de stage Thierry UNDERNEHR qui m a accueilli dans son service. Le programme qu il m a proposé pour mon stage

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

QUELQUES ÉLÉMENTS DU DÉVELOPPEMENT LOGICIEL

QUELQUES ÉLÉMENTS DU DÉVELOPPEMENT LOGICIEL QUELQUES ÉLÉMENTS DU DÉVELOPPEMENT LOGICIEL LA DÉCOUPE MVC (MODEL VIEW CONTROL) Imaginez la programmation en Python d un petit menu d une application visible sur la figure A.1. Lorsqu on clique sur un

Plus en détail

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs, relations,

Plus en détail

MÉRÉ Aurélien FIIFO1. Pathfinder

MÉRÉ Aurélien FIIFO1. Pathfinder MÉRÉ Aurélien FIIFO1 AMC Pathfinder 1 Sommaire Préambule... 3 Modélisation de l espace... 4 Modélisation des cases δ, α... 4 Interface en mode texte... 5 Modélisation du robot... 8 1 ) Le type Robot...

Plus en détail

Livre Blanc. Construire un système d information collaboratif de pilotage de l action publique. Mai 2010

Livre Blanc. Construire un système d information collaboratif de pilotage de l action publique. Mai 2010 Livre Blanc Construire un système d information collaboratif de pilotage de l action publique Mai 2010 Un livre blanc édité par : NQI - Network Quality Intelligence Tél. : +33 4 92 96 24 90 E-mail : info@nqicorp.com

Plus en détail

UF - Technique de Gestion de projet Evaluation certificative

UF - Technique de Gestion de projet Evaluation certificative UF - Technique de Gestion de projet Evaluation certificative GILLAIN Bachelier en informatique de gestion Année scolaire 2015-2016 Jean-Pierre Rapport 1 1 Table des matières Présentation du contexte...

Plus en détail

Les modèles technologiques de la localisation

Les modèles technologiques de la localisation Les modèles technologiques de la localisation Les modèles technologiques de la localisation Cécile Martin Université Rennes 2 Avant d entrer en détails dans les modèles technologiques de la localisation,

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

RAPPORT DE CONCEPTION UML :

RAPPORT DE CONCEPTION UML : Carlo Abi Chahine Sylvain Archenault Yves Houpert Martine Wang RAPPORT DE CONCEPTION UML : Bamboo Ch@t Projet GM4 Juin 2006 Table des matières 1 Introduction 2 2 Présentation du logiciel 3 2.1 Précisions

Plus en détail

Coaching, Une méthode scientifique

Coaching, Une méthode scientifique Coaching, Une méthode scientifique ROSELYNE KATTAR Tout le monde parle de coaching sans savoir exactement de quoi il s agit. Afin de clarifier cette approche selon moi, je vous propose de répondre à 3

Plus en détail

Le génie Logiciel (suite)

Le génie Logiciel (suite) Le génie Logiciel (suite) Lors du cours précédent, on a étudié différents cycles de vie, dont la cascade, ou la spirale. Analyse des besoins L analyse des besoins est une étape menant à l élaboration de

Plus en détail

e bloc équipe se définit par un espace dont les côtés passent par les positions des joueurs les plus excentrés. Il est donc en constante Lévolution.

e bloc équipe se définit par un espace dont les côtés passent par les positions des joueurs les plus excentrés. Il est donc en constante Lévolution. LE BLOC EQUIPE Animation Défensives >> Le Bloc Equipe 1- LE BLOC EQUIPE, C EST QUOI? e bloc équipe se définit par un espace dont les côtés passent par les positions des joueurs les plus excentrés. Il est

Plus en détail

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013 Rapport de stage Création d un site web Stage du 20/01/2013 au 21/02/2013 Auteur : Antoine Luczak Tuteur professionnel : M. Tison Tuteur scolaire : Mme Girondon Année scolaire : 2013/2014 1 Table des matières

Plus en détail

Programmation avancée

Programmation avancée Programmation avancée Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) 1 1 IFSIC Université de Rennes-1 M2Crypto, octobre 2011 Plan du cours 1 2 3 4 5 6 7 8 9 10 Algorithmes Définition

Plus en détail

Travail d équipe et gestion des données L informatique en nuage

Travail d équipe et gestion des données L informatique en nuage Travail d équipe et gestion des L informatique en nuage BAR Octobre 2013 Présentation Au cours des études collégiales et universitaires, le travail d équipe est une réalité presque omniprésente. Les enseignants

Plus en détail

Shadow Manager Simulateur de gestion globale d entreprise. Introduction

Shadow Manager Simulateur de gestion globale d entreprise. Introduction Shadow Manager Simulateur de gestion globale d entreprise Introduction Le logiciel de simulation d entreprise Shadow Manager représente le nec plus ultra des outils pédagogiques de simulation de gestion

Plus en détail

Module ITC34 - Algorithmique et Programmation

Module ITC34 - Algorithmique et Programmation Module ITC34 - Algorithmique et Programmation TDs Algorithmique (trois séances) Benoît Darties - benoit.darties@u-bourgogne.fr Univ. Bourgogne Franche-Comté Année universitaire 2015-2016 Avant-propos :

Plus en détail

BigBlueButton - une solution ouverte de webconférence à Carleton University

BigBlueButton - une solution ouverte de webconférence à Carleton University BigBlueButton - une solution ouverte de webconférence à Carleton University L occasion d innover Le programme de maîtrise Technology Innovation Management, ou TIM (gestion des innovations technologiques),

Plus en détail