Projet: 2048 15 novembre 2014 Après plusieurs heures de programmation intense, l'objectif est de se détendre avec votre nouvelle version du jeu 2048 ! Le jeu 2048 est une variante du Gabriele jeu de taquin, inventée par le web designer Cirulli (quelqu'un de votre âge...) en mars 2014. Le jeu est une grille 4×4 où chaque case/tuile est soit vide, soit une puissance de 2. Le but du jeu est de faire glisser (verticalement et/ou horizontalement) toutes les tuiles (en même temps) sur la grille an de combiner les tuiles de même valeurs. Si deux tuiles de k même valeur (2 ) sont adjacentes pendant le glissement, alors elles se combinent en une unique tuile étiquetée par la somme des valeurs (2 k+1 ). Après chaque déplacement, une nouvelle tuile apparaît aléatoirement sur un des emplacements 2, soit 4, avec probalité respective 1 9 et . Pour que le jeu commence, il faut au minimum une tuile sur la grille 10 10 (habituellement deux). Le jeu se termine lorsque toutes les tuiles sont occupées vides. Cette nouvelle tuile a pour valeur soit et que plus aucun mouvement ne permet de combiner de tuiles. Après avoir étudié le démineur, le sudoku. . . voici le 2048 ! Encore une grille à coder ! Encore des règles et conditions à satisfaire. . . Et surtout un rapport ! (oui ça c'est nouveau. . .) Rendre un programme mettant en oeuvre le jeu 2048, et rédiger Ob jectif : un rapport de projet. Pour les modalités pratique (soutenance, ...), voire le début de l'autre sujet. Bases du jeu Le niveau 0 (alias le niveau J'en fais pas plus qu'en TP) du projet est de modéliser et implémenter une version du jeu 2048 en mode console en C++. En s'inspirant du TP sudoku, on pourra modéliser une grille de jeu par un type Grille et identier l'achage, les règles et les actions du jeu par diérentes deplacement_autorise, etc ). Ces diérentes fonctions fonctions (affichage, devront être spéciées, documentées et testées. haut, bas, gauche À ce premier niveau, on rentre chaque déplacement ( droite ) par l'intermédiaire de caractères (par exemple 1 h, b, g et d ou encore et i, k, j et l). De plus on ache la grille après chaque déplacement, avec la nouvelle tuile apparue. Voir ci-dessous un exemple d'exécution : ... ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 128 ∗ 4 ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 2 ∗ 16 ∗ 4 ∗ 2 ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ ∗ ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 2 ∗ ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ Entrer commande : h ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 128 ∗ 4 ∗ 4 ∗ 2 ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 4 ∗ 16 ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ ∗ ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 2 ∗ ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ Entrer commande : g ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 128 ∗ 8 ∗ 2 ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 4 ∗ 16 ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ ∗ ∗ 4 ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 2 ∗ ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ Entrer commande : La moyenne pourra être obtenue si le jeu est ... fonctionnel : le(s) chier(s) de votre projet compile(nt), le code est spécié, documenté et testé (incluant le code des tests), le jeu respecte les règles et spécications du 2048, lors de l'achage, les colonnes sont bien alignées, quelles que soient les valeurs de chaque tuile : 2 Correct Pas ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 128 ∗ 128 ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 2 ∗ 16 ∗ 4 ∗ 2 ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ ∗ ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 2 ∗ ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ correct ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 128 ∗ 128 ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 2 ∗ 16 ∗ 4 ∗ 2 ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ ∗ ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ 2 ∗ ∗ ∗ ∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ et si le rapport est bien rédigé (orthographe...) et comprend : une une présentation du jeu, documentation de votre application. Amélioration Le niveau 1 (ou comment gagner des points avec un minimum d'eorts) propose diérentes améliorations (faciles) : 1. Le site du jeu original propose un système de score. Étudier son fonctionnement, ajouter cette fonctionnalité à votre code/jeu et écrire la documentation. (∼ 1pt) 2. Comme sur le jeu original, rajouter un peu de couleur à notre triste console. . . (∼ 1pt) 3. On aimerait jouer en utilisant directement les èches ( droite ) haut, bas, gauche et du clavier, sans avoir à appuyer sur entrée à chaque fois. Étudier diérentes solutions envisageables et ajouter cette fonctionnalité. (∼ 2pt) 4. Pour des raisons de jouabilité encore une fois, on aimerait que l'achage d'une grille se fasse à la même place que la grille précédente, plutôt que de les voir à la suite. Autrement dit, on souhaiterait que l'écran se raraichisse. Étudier diérentes solutions et ajouter la fonctionnalité. (∼ Pour les 2pt) 3 derniers points, une solution envisageable est d'utiliser la bibliothèque ncurses. Attention : L'utilisation de certaines librairies nécessite d'ajouter des para- mètres de compilation. Si tel est le cas, le rapport devra expliciter la procédure de compilation. Compilation Le niveau 2 (on veut passer la barre des 16 ?) : Code::blocks vous cache bien des choses. . . en particulier que se passe-t-il vraiment lorsque vous cliquez sur le petit icone en forme d'engrenage ? La compilation de votre programme. . . 3 Étudier les instructions de compilation et proposer un compiler votre projet. (∼ Makefile permettant de 2pt) Attention : Deux choix s'orent à vous, créer un (petit) adapté à votre projet ou trouver un Makefile Makefile (simple) générique qui compile tout. . . Pour mériter les points de la question, l'important est de comprendre ce qui se passe (n'oublions pas la soutenance. . .). Pour aller plus loin... Le niveau 42 (le vrai geek comprend !) : Un jeu en mode console ? Mouais. . . j'aimerais une vraie fenêtre. . . ou mieux, avoir l'appli sur mon portable. . . 1. Découvrir SDL (ou mieux GTK+) et proposer une version du une interface graphique. (∼ 2048 avec 2pt) 2. Vous en voulez encore ? Une version android ou iOS c'est possible ? (∼ 2pt) La note maximale est sûrement de 20 mais. . . des points se cachent encore dans la soutenance de votre projet. . . Ceux qui atteignent le dernier niveau assurent (presque) le 20 mais tout n'est pas perdu pour les autres. . . Soutenance bien préparée et travail soigné seront récompensés ! 4
© Copyright 2024 ExpyDoc