INSTITUT UNIVERSITAIRE DE TECHNOLOGIE
Département INFORMATIQUE
(Computer Science Department – Nantes Institute of Technolo...
Agenda des phases du travail
Date Objectif
06/01 Décision d'un langage de programmation, d'un type de base de données et
r...
1.Sommaire
1. Sommaire
2. Introduction
3. Vision théorique du sujet
3.1. Généralités
3.2. Fonctionnement d'arrière-plan
4....
3.2. Fonctionnement d'arrière-plan
Il est possible de jouer seul ou à plusieurs (jusqu'à quatre joueurs), les joueurs
prop...
4.3. Organisation du code
Notre projet, consistant à programmer un jeu, est une entreprise assez complexe. Nous
avons donc...
2) Classe HighScore
Cette classe sert à lister les meilleurs scores des joueurs.
On distinguera les scores obtenus au mode...
4) Classe Séquence et SeqAlea
La classe Séquence est la classe qui gère tout ce qui est nécessaire pour
manipuler les chaî...
2) Classe Menu
Cette classe sert à la gestion du menu d'accueil. Elle
gère les entrées du menu, mémorise les choix du nomb...
3a) Classes Mode1 et Mode2
La classe Mode1 s'occupe de la gestion du mode 1, appelé aussi "Mode Lettres
Aléatoires". La cl...
In the first mode, each player can type one word per turn. When a player's timer
reaches zero, this player can no longer p...
11
12
Rapport de Projet Technologique
Université de Nantes
Institut Universitaire de Technologie
Département Informatique
Nan...
Prochain SlideShare
Chargement dans…5
×

Rapport projet technologique

21 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
21
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
1
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Rapport projet technologique

  1. 1. INSTITUT UNIVERSITAIRE DE TECHNOLOGIE Département INFORMATIQUE (Computer Science Department – Nantes Institute of Technology) Rapport de Projet Technologique 2011-2012 Générateur aléatoire de lettres 1ère année Réalisé par : - Clément BAUCHET - Alexandre GOMES - Dai HOANG - Anthony PENA - Grégoire WINKEL Encadré par : Amir HAZEM Du 29/11/2011 au 31/05/2012 1
  2. 2. Agenda des phases du travail Date Objectif 06/01 Décision d'un langage de programmation, d'un type de base de données et récupération du dictionnaire de mots anglais et français. 27/01 Définition de toutes les fonctions/procédures nécessaires 01/03 Rapport intermédiaire + répartition des tâches + étude théorique terminée (planning officiel) 15/03 Rédaction des algorithmes des fonctions + Réunion avec l'encadrant (planning officiel) 06/04 Passage au code source de toutes les fonctions/procédures (principale optionnelle) + Croquis de l'interface graphique 27/04 Programme demandé complet (toutes exigences remplies) 30/05 Programme complet + Tests finaux 31/05 Rendu du rapport final (planning officiel) 2
  3. 3. 1.Sommaire 1. Sommaire 2. Introduction 3. Vision théorique du sujet 3.1. Généralités 3.2. Fonctionnement d'arrière-plan 4. Élaboration du projet 4.1. Choix du langage de programmation 4.2. Base de données 4.3. Organisation du code 4.4. Difficultés rencontrées 5. Fonctionnement du programme 5.1. Classes de base 5.2. Classes Interface et fonctionnelle 6. Summary 7. Conclusion 2.Introduction Dans le cadre de notre projet technologique, notre équipe est chargée de réaliser un jeu basé sur le tirage aléatoire de lettres, dont le but est de composer des mots à partir d'une séquence de lettres tirées aléatoirement. 3.Vision théorique du sujet 3.1. Généralités Le jeu se décompose en deux parties représentant chacune un mode de jeu. Le premier mode, que l'on nommera le mode « lettres aléatoires », consiste pour l'utilisateur à lister tous les mots constituables à partir d'une série de douze lettres choisies aléatoirement. Le second mode, que l'on nommera le mode « alphanumérique », présente une suite de chiffres compris entre 2 et 9. Pour l'utilisateur, le but est de retrouver le mot caché derrière ces chiffres sachant que chacun d'entre eux représente une lettre selon le clavier d'un téléphone portable. Avant de commencer à jouer, l'utilisateur peut choisir entre le français et l'anglais, et peut aussi choisir le nombre de joueurs. 3
  4. 4. 3.2. Fonctionnement d'arrière-plan Il est possible de jouer seul ou à plusieurs (jusqu'à quatre joueurs), les joueurs proposant des mots à tour de rôle. En mode un joueur, il y a un temps limite de deux minutes pour trouver le plus de mots faisables avec la séquence de lettres proposée (dans le mode « lettres aléatoires ») ou le mot caché (dans le mode « alphanumérique »). En mode multijoueur, chaque joueur commence avec un capital temps de deux minutes, qui s'écoule lorsque c'est son tour. Dans le mode « lettres aléatoires », dès qu'un joueur propose un mot (correct ou non), le temps arrête de s'écouler et c'est le tour du joueur suivant. Si le temps d'un joueur est écoulé, il ne peut plus jouer et la partie continue avec les joueurs restants. La partie se termine lorsque tous les joueurs ont épuisé leur temps. Dans le mode « alphanumérique », chaque joueur a deux minutes pour trouver le mot caché, mais son tour dure jusqu'à ce qu'il trouve le mot ou que son temps soit écoulé. La partie se termine lorsque chaque joueur a terminé son tour, en ayant trouvé le mot ou non. Pour vérifier l'existence d'un mot, nous utilisons un dictionnaire (un en français, et un en anglais) contenu dans une base de données. Nous avons mis un système de classement des dix meilleurs scores obtenus par l'utilisateur. Nous avions pensé à limiter la possibilité de tirer toujours la même séquence en mémorisant les vingt dernières séquences tirées pour chaque mode, mais cette idée n'a pas été retenue car la probabilité de tirer deux fois la même séquence (ou deux séquences trop similaires) d'affilée est quasi-nulle. 4.Élaboration du projet 4.1. Choix du langage de programmation Après réflexion, parmi les trois langages proposés (le C, le Java ou le Perl), nous avons décidé de réaliser le projet en Java, de par ses nombreux avantages pour notre projet, entre autres la portabilité, la gestion intégrée des bases de données (Derby) et la possibilité de créer une interface graphique sans faire appel à une librairie tierce. 4.2. Base de données Nous avons utilisé le système de gestion de base de données en Derby pour sa légèreté, sa portabilité et sa facilité d'utilisation. De plus, ce système est conseillé pour l'utilisation des bases de données en Java car c'est écrit entièrement dans le même langage. Nous utilisons la base de données pour gérer les dictionnaires et les meilleurs scores. Les classes HighScore et Dico servent d' « interface » avec les tables correspondantes de la base de données. Nous avons filtré le dictionnaire afin d'éliminer les entrées inexploitables telles que les mots composés et les sigles par exemple. 4
  5. 5. 4.3. Organisation du code Notre projet, consistant à programmer un jeu, est une entreprise assez complexe. Nous avons donc réfléchi à la manière de subdiviser les problèmes en sous-problèmes suffisamment simples pour nous permettre de les réaliser de manière efficace. Par la suite, cela nous permettra aussi d'optimiser facilement si besoin. 4.3. Difficultés rencontrées Bien que cela n'était pas exigé, nous avions décidé de réaliser ce jeu avec une interface graphique. Malheureusement, par manque de temps, nous avons préféré abandonner cette idée et rester sur une interface en lignes de commande. Ci-dessous, les schémas de la mise en forme de l'interface graphique prévue : 5.Fonctionnement du programme A) Classes de base 1) Classe Dico Cette classe sert à effectuer les opérations en rapport avec les deux dictionnaires du jeu. Elle permet notamment de sélectionner des mots aléatoirement pour le mode 2. Un dictionnaire a une langue, un mot courant et un nombre de mots. 5
  6. 6. 2) Classe HighScore Cette classe sert à lister les meilleurs scores des joueurs. On distinguera les scores obtenus au mode 1 de ceux du mode 2. Seuls les dix meilleurs scores pour chaque mode sont retenus. Une liste de meilleurs scores consiste en un tableau de 20 Scores. Lors de l'ajout d'une nouvelle entrée, le tableau se trie automatiquement dans l'ordre décroissant des scores. 3) Classe Score Cette classe permet d'effectuer toutes les opérations pour gérer le score du joueur pendant la partie. Certaines lettres de l'alphabet sont plus difficiles à utiliser que d'autres : chaque lettre possède une valeur qui diffère en fonction de la langue utilisée, comme au jeu du « Scrabble ». Par exemple en français, la lettre « W » est difficile à placer car peu utilisée : elle vaut donc 10 points, alors qu'en anglais, étant plus utilisée, elle vaut 4 points. En plus des points attribués pour chaque lettre d'un mot entré, le joueur gagne d'autres points en fonction de la longueur du mot. Dans le mode 1, l'affichage du score se fait selon les caractéristiques suivantes : • le nom du joueur • le score du joueur • le nombre de mots trouvés par le joueur • la langue utilisée pour la partie Dans le mode 2, l'affichage du score se fait selon les caractéristiques suivantes : • le nom du joueur • la valeur du mot trouvé (ou 0 si le joueur n'a pas trouvé le mot) • le temps restant à la fin de la partie • la langue utilisée pour la partie 6
  7. 7. 4) Classe Séquence et SeqAlea La classe Séquence est la classe qui gère tout ce qui est nécessaire pour manipuler les chaînes de caractères dans le jeu, avec des méthodes permettant de comparer les chaînes entre elles (composeDe, equals), d'autres méthodes pour les manipuler selon les besoins du jeu (numToChar, charToNum, charToAlphaNum, etc). La sous-classe SeqAlea hérite de Séquence et gère la génération aléatoire des chaînes de caractères avec la méthode genAlea. La probabilité de tirage de chaque lettre est la même que dans le « Scrabble » suivant la langue : pour modéliser cela, nous effectuons le tirage aléatoire dans la matrice lettre de SeqAlea, qui contient une ligne par langue, et dont chaque ligne contient le même nombre d’occurrences de chaque lettre qu'au « Scrabble ». B) Classes Interface et fonctionnelles 1) Classe Cli (Command Line Interface) Classe abstraite servant pour la mise en forme de l'interface en lignes de commande. Elle possède seulement quatre attributs protégés de type String représentant chacun des lignes pour dessiner les fenêtres de jeu. Toutes les classes de ce paquetage héritent de la classe Cli. Cette classe se situe dans le paquetage perso, qui n'est pas détaillé ici car il ne contient que des éléments permettant d'alléger la partie programmation d'une CLI (Command Line Interface), principalement des méthodes pour créer des lignes d'un motif et centrer des chaînes de caractères. 7
  8. 8. 2) Classe Menu Cette classe sert à la gestion du menu d'accueil. Elle gère les entrées du menu, mémorise les choix du nombre de joueurs et de la langue. Cette classe renvoie trois valeurs en fonction des entrées sélectionnées. Si on choisit le mode 1, elle renvoie 1, le mode 2, elle renvoie 2 et 0 pour quitter. Les valeurs de retour sont traitées par la classe Application. 3) Classe Mode Cette classe possède les attributs et méthodes communes aux deux modes. Cette classe abstraite oblige à la redéfinition de certaines méthodes de base, surtout la méthode Jouer qui permet de lancer le mode. 8
  9. 9. 3a) Classes Mode1 et Mode2 La classe Mode1 s'occupe de la gestion du mode 1, appelé aussi "Mode Lettres Aléatoires". La classe Mode2 s'occupe de la gestion du mode 2, appelé aussi "Mode Alphanumérique". À ces classes, est attribuée la gestion du temps des parties. 6.Summary The aim of this project is to create a computer game based on random letter drawing. This game is coded in Java, can be played in french or in english and has two different gamemodes. It uses a command-line interface. Upon running the program, a menu allows the player to choose various parameters such as which gamemode will be played, the language to use and the name and number of players. A Derby database is used to store the words of the two dictionnaries used in this game. In the first gamemode, which will be referred as the « random letters » mode, a set of randomly chosen letters is given to the player. The goal is to find as many words that can be written with this set of letters as possible in a limited amount of time. The probability for each letter to be drawn is not the same, as some letters are more used than others. Every letter has a value, which can be different depending on the language of the game. Some letters are more difficult to use than others, therefore their value will be greater. For example, the letter « E » is very common : it has a value of 1 point. The letter « W » is worth 4 points if the game is played in english, whereas it is worth 10 points in french because this letter is less used in this language. The value and the global distribution of the letters is the same as in the game « Scrabble » in both languages. The player may type in words with the keyboard. If the word entered can be written with the letters given by the game and is present in the dictionnary of the language chosen, the word is validated and the player score points depending on the letters composing the word and the length of the word. The longer the word is, the more extra points they earn. Otherwise, the word is denied and the player loses points. When the times runs out, the game is over and the total score of the player is displayed. The score consists of the amount of points earned and the number of words found. In the second gamemode, a.k.a. « alphanumeric » mode, a random word from the dictionnary of the language chosen is picked, and each of its letters are encoded by a number according to the keyboard of a mobile phone. For example, the letters a, b and c will appear as a 2 ; d, e and f as a 3, and so on until the letters w, x, y and z which are encoded by a 9. The player has to find which word has been encrypted in a limited amount of time. If (s)he gives a wrong answer, 10 seconds will be substracted from the time left. If (s)he enters the right word, the game ends immediatly and the player scores points depending on the value of the word, as calculated as in the first mode, and the time taken to find the word. However, if the player did not find the word in time or made too many mistakes, (s)he loses and gets no points. The game stores the best scores obtained by the players in both gamemodes, though these scores are separated according to the mode. Both gamemodes can be played by up to four players, each of them taking turns to play and having their time limit. 9
  10. 10. In the first mode, each player can type one word per turn. When a player's timer reaches zero, this player can no longer play and has to wait for others to have their time limit elapsed too. When every player has run out of time, the game is over and the scores of all the players are displayed. In the second mode, the first player tries to find the hidden word. If (s)he finds the word or runs out of time, the next player takes his/her turn. The games ends when the last player has taken his/her turn. Originally, the game was supposed to have a graphic user interface, but this idea was abandoned due to time constraints. Conclusion Dans le cadre du Projet Technologique de Première Année, nous venons de réaliser un jeu de lettres 2 en 1 codé en Java, jouable en français ou en anglais jusqu'à quatre joueurs, utilisant une interface en lignes de commandes et une base de données Derby pour stocker les deux dictionnaires contenant tous les mots que le jeu peut utiliser. Nous avons rencontré plusieurs difficultés lors de ce travail, telles que la gestion de la base de données qui nous a coûté du temps, et les contraintes de temps nous ayant empêché d'implémenter l'interface graphique du jeu. 10
  11. 11. 11
  12. 12. 12 Rapport de Projet Technologique Université de Nantes Institut Universitaire de Technologie Département Informatique Nantes, le 31/05/2012

×