Travail Synthèse - Bonhomme pendu Panda!
Remise ( heure limite de remise: 23h59 )
Le travail est à remettre la journée de votre dernier cours:
- Groupe du Mardi→ mardi 19 mai
- Groupe du Mercredi→ mercredi 20 mai
- Groupe du Mercredi→ mercredi 20 mai
Fichiers à remettre:
Vous devez remettre sur remise.cstj.qc.ca votre dossier de projet Unity portant votre matricule comme nom et compressé en .zip
(exemple: BINB1234567.zip)
Pondération
Ce travail vaut 25% de la note finale du cours.
Exemple du bonhomme panda.
Description
Le but du projet est de réaliser un jeu de "bonhomme pendu" avec quelques options particulières et une interface de jeu assemblée et programmée par vous.
But du jeu
L'objectif est de trouver un mot caché choisi par le programme. Pour vous aider, le programme vous indique le nombre de caractères que possède le mot (par des symboles tels que des astérisques) ainsi qu'un indice. Vous cliquez sur un caractère alphabétique présenté à l'écran. Si ce caractère est présent dans le mot, il s'affiche dans le mot caché, sinon un élément du pendu est affiché. Si vous ne parvenez pas à trouver le mot avant que le pendu soit entièrement constitué, vous avez perdu et devez passer au mot suivant. Chaque mot découvert avec succès donne des points et active une animation simple.
Fichiers de départ
Vous avez à assembler l'interface du jeu et la personnaliser selon ce devis. Les médias (assets) utilisés par l'enseignant pour réaliser la version démo de ce travail (illustrée en haut de cette page) sont disponibles. Vous pouvez les utiliser pour ce devoir. Question d'être un peu plus original (et aussi obtenir des points en bonus), vous pouvez remplacer des assets par des éléments de votre propre cru.
assets_synthese.zip
bonhomme_panda_DEPART.zip
Exigences spécifiques
- Interface composée d'éléments UI (champs de texte, boutons, etc), ainsi que d'une "potence" en images png (un panda dans la démo).
- Un champ de texte placé sous le mot sert à afficher des messages (tels que "Bonne chance!", "Plus de mot: Partie terminée.", "Le mot cherché était: Bambou", etc.)
- Un nouveau mot à chercher est pigé quand l'usager clique sur le bouton "prochain mot". Les piges sont uniques: on ne peut pas piger le même mot 2 fois lors d'une partie.
- À chaque fois qu'un mot est pigé, un indice aidant à le trouver est aussi affiché (ce peut être une courte définition, ou un synonyme par exemple).
- 5 essais autorisés seulement par mot.
- Minimum de 6 mots (et indices correspondants) mais vous pouvez en ajouter si vous le voulez.
- Quand tous les mots ont été trouvés par l'usager on indique qu'il n'y a plus de mots et on l'invite à recommencer.
- Un mot trouvé donne autant de points que le nombre de lettres du mots. Le pointage courant est affiché en permanence à l'écran.
- Un bouton permet de passer au mot suivant. Cela ne donne pas de points bien entendu.
- Un bouton permet de révéler le mot cherché. Cela ne donne pas de points bien entendu.
- Un bouton permet de recommencer le jeu (toute l'interface est réinitialisée et la liste de mots redevient entièrement disponible). Le joueur peut donc recommencer comme si il venait de démarrer le programme.
- Un élément décoratif animé est présent à l'écran près du champ de pointage (dans l'exemple, c'est encore la pièce de monnaie avec une étoile!). Cette animation doit être animée avec la fenêtre Animation et contrôlée via l'Animator. Cette animation est dotée de 2 états: "idle" et "mouvement". Pendant qu'on tente de deviner le mot, l'animation est dans son état "idle". Elle passe en état "mouvement" quand l'usager trouve le mot sans avoir épuisé ses 5 essais. L'animation revient à "idle" d'elle même (après 1 ou 2 secondes). Le but de cette animation est d'attirer l'attention du joueur pour qu'il s'apperçoive qu'il a marqué des points.
- Les GameObjects de "potences" à l'écran (un panda dans la démo) changent pour représenter le nombre d'essai restants (comme dans un jeu du pendu classique). Effectuer un changement de sprite par programmation pour cela: Faire un Animation/Animator pour gérer ces changements d'images est peu efficace...
- Quand une lettre est cliquée, son bouton se désactive. Il ne se réactive que lorsqu'on clique sur "Prochain mot" ou "Recommencer".
- Le champ "J'ai trouvé!" et le bouton "vérifier" sont optionnels (mais donnent jusqu'à 2 points de bonus sur votre résultat final).
Exigences générales:
- Travail individuel!
- Codez dans GameManager. Vous pouvez cependant créer d'autres scripts si vous le voulez.
- Respectez les normes de nomenclature vues en classe.
- Faites bon usage des tableaux, des boucles et des fonctions (avec ou sans retour) de façon à avoir un code concis et efficace.
- Pour ce travail, vous devez commenter votre code (voir les notes de cours à ce sujet).
Côté visuel...
- Vous devez utiliser le clavier de boutons fourni dans le fichier de départ. Vous pouvez en modifier l'apparence si vous le désirez cependant.
- Vous devez mettre en place une interface comparable à l'interface illustrée en haut de ce document.
- Vous n'avez pas à modifier l'aspect des boutons du clavier de lettres fourni: Vous pouvez utiliser ces boutons tels quels.
- Vous devez modifier l'aspect des autres boutons en utilisant des sprites.
- Vous devez utiliser une police lisible et différente de Arial pour tous les textes affichés.
- Vous devez faire jouer des sons appropriés quand les boutons sont cliqués, quand un bon mot est découvert, quand une lettre correcte ou mauvaise et détectée, quand on a épuisé tous les essais pour un mot, etc.
- Vous pouvez adapter la disposition des éléments d'interface ou la taille des polices si vous le voulez.
Conseils généraux
- Au début, concentrez vous pour faire fonctionner le programme avec un seul mot, toujours le même, pas pigé au hasard (donc plus facile pour vous pour faire les tests).
- Ne passez pas trop de temps au début sur une thématique ou sur du visuel: Commencez par établir une programmation fonctionnelle!
- Évitez si possible de créer des fonctions très longues qui font tout plein de choses différentes. Une bonne fonction s'acquitte généralement d'une tâche précise et comporte relativement peu de code. Les longues fonctions sont plus difficiles à lire, à déboguer, à modifier et à commenter.
À faire en premier lieu...
- Réaliser l'interface selon les directives du devis
- Créer les listes qui vont contenir les mots et les indices
- Créer les variables pour stocker:
- le mot à découvrir
- le mot caché (celui qui comporte des caractères comme des astérisques ou des soulignements)
- le nombre d'essais courant
- à quel mot on est rendu (par exemple: 2 quand on est au deuxième mot)
- Créer une fonction qui permet de piger un mot aléatoirement en évitant les répétitions.
- Créer une fonction qui affiche le mot caché dans le champ textMotCache (avec ses astérisques ou soulignements)
- Afficher aussi l'indice du mot cherché dans le champ textInfos.
- Commencer à développer la fonction qui vérifie si une lettre cliquée est dans le mot recherché (au début, simplement afficher dans la console si oui ou non une lettre cliquée est contenue dans le mot cherché. Quand ça marchera, préparez et affichez le mot en partie révélé dans le champ textMotCache).
- Si on a pas une lettre qui existe dans le mot, afficher un message "d'erreur" et changer l'image du pendu.
- Si on a une lettre qui existe, afficher un message de félicitations: le jeu peu continuer
- Préparer l'élément à animer (Animation et Animator)
Par la suite... Peaufiner le programme
- Réaliser la fonctionnalité "J'ai trouvé!"
- Calculer et afficher le pointage
- Déterminer quand il ne reste plus de mots disponibles et l'afficher
- Permettre de recommencer la partie
- Sonoriser
- Programmer les activations / désactivations de boutons selon les actions de l'usager
Évaluation sur 100% (compte pour 25% de la session)
- 20% - Réalisation de l'interface effectuée selon le devis (fond, boutons, police, etc)
- 30%- Qualité du code (nomenclature / organisation / commentaires)
- 5% - Organisation de la hiérarchie, et du projet en général
- 30% - Dans l'ensemble, le jeu fonctionne bien et selon les exigences du devis
- 15% - Sons et animation fonctionnelles et qui répondent aux exigences du devis
Bonus possibles (+ 10%, note maximale de 100/100)
+4% Thématique différente
Bien que ce n'est pas exigé, si vous désirez changer la thématique du jeu vous devez alors respecter une thématique de votre choix; par exemple la biologie, l'équitation, le sport, l'astronomie etc. Votre interface doit s'inspirer alors de cette thématique choisie et les mots cachés aussi. Vous obtiendrez des points en bonus si la thématique du jeu est différente du jeu proposé par l'enseignant et les médias intégrés sont adaptés à cette nouvelle thématique.
+4% Saisie d'un mot deviné et validation de ce mot
Un champ "J'ai trouvé!" et un bouton "vérifier" permettent à l'usager qui a deviné le mot avant d'avoir épuisé ses essais de le saisir et de valider si il a une bonne réponse. Si c'est le cas, il obtient les points (et un message de félicitations). Sinon, il n'obtient aucun point, on affiche un message d'échec et il perd un essai (la "potence" change comme si il avait indiqué une mauvaise lettre).
+2% Ergonomie
Vous vous assurez que selon les étapes du jeu, les boutons utiles s'activent et les boutons inutiles se désactivent. Par exemple, quand on clique sur "Révéler", le bouton Révéler, ainsi que le champ de saisie vont se désactiver. Il se réactiveront quand l'usager va cliquer sur "Prochain mot" ou sur "Recommencer".
Pénalités applicables:
- Jusqu'à -30% pour non-respect de plusieurs exigences du devis / projet incomplet
- Jusqu'à -10% pour code vraiment peu efficace / trop long
- Jusqu'à -10% pour mauvaise qualité de la langue
- -10% pour projet non-fonctionnel (impossible à exécuter initialement)