Séance n°1 :
Définition du projet en groupe :
- Créer un quadrillage de 16 cases.
- Au départ, seulement un seul bloc est présent.
- Déplacer les blocs à l'aide des flèches du clavier.
- A chaque déplacement un nouveau bloc apparaît avec une valeur de 2.
- Lorsque nous assemblons 2 cubes de même valeur (lors de déplacement) ils en forment 1 seul de leur valeur multipliée par 2.
- Terminer le jeu lorsque le bloc de valeur 2048 est atteint (gagné) ou lorsque plus aucune combinaison n'est possible (perdu).
+ Aménagement du site pour accéder facilement à l'évolution du projet (nouvelles fenêtres, nouveaux raccourcis ...)
AVERTISSEMENT AU CORRECTEUR:
Lors de la réalisation du projet en classe, tous les élèves ne disposaient pas d'un ordinateur, nous étions parfois à 2 ou 3 sur un poste, ce qui rend le travail personnel difficile.
Objectif pour la séance suivante: faire apparaître un quadrillage de 16 cases et (si le temps le permet) commencer a y placer des blocs.
Séance n°2:
Pendant cette séance nous allons essayer de répondre à la question suivante: Comment créer un tableau à 16 cases?
Il faudra donc créer une fonction qui servira à afficher la grille. Pour ceci nous allons commencer par déterminer la taille du cadre, ainsi que celle des cases et leur position.
Pour dessiner le quadrillage, nous avons élaboré une solution provisoire: Carnet de bord COLLIÉ
Puis, une meilleure solution a été trouvé: Carnet de bord AGRA
Nous avons donc supprimé l'idée précédente (avec les rectangles).
Séance n°3:
A ce jour nous avons créé le premier cube avec sa position, sa taille et sa couleur. Puis nous lui avons assigné son chiffre de départ : 2.
Séance n°4:
Objectif: Comment faire bouger un bloc grâce aux flèches du clavier?
Nous sommes parvenues a faire intervenir les flèches du clavier grâce au void keypressed où nous avons fait appel aux 4 touches (left; right; down; up).
Problème à résoudre: les blocs peuvent se déplacer dans tous l'écran et même en dehors, ils ne se limitent pas au quadrillage.
Séance n°5:
Objectif : dès qu'un mouvement est effectué, un nouveau bloc apparait avec la valeur 2 .
Nous avons trouvé une solution qui nécessite des retouches, car le blocs se duplique lors de mouvements.
Séance n°6:
Nous avons réussi à résoudre le problème parvenu lors de la séance n°4, nous avons ajouté des conditions pour ne pas que les blocs se déplacent en dehors du quadrillage. Voir les lignes de code sur Carnet de bord COLLIÉ
Néanmoins, nous rencontrons maintenant un nouveau souci, lorsque le bloc est en bas, nous ne pouvons pas le remonter.
Le problème a été résolu aussi-tôt en retapant la ligne de code du déplacement vers le haut.
Grâce à la question posée à notre professeur, nous avons maintenant un programme qui ne garde pas les ancienne positions des blocs après leur déplacement.
Séance n°7:
Durant cette séance nous chercherons à créer une fonction qui affichera à
chaque mouvement un nouveau bloc ( affichant "2") qui pourra par
la suite (objectif
suivant)
se multiplier avec un bloc comportant le même chiffre .
Suite à la question posée au professeur, il ne faut plus gérer les positions xCube et yCube avec une variable, mais il faut créer un tableau pour chaque valeurs en x et en y. De plus, la fonction "nouveau cube" doit être modifiée afin de concerner tous les cubes qui apparaissent et non seulement le premier cube. Pour cela, nous devons nous servir d'une fonction compteur de boucle. Cependant, nous n'avons pas la solution pour le déplacement de chaque cube. C'est donc l’objectif de notre séance.
Séance n°8:
Objectif de la séance: réussir à déplacer chaque bloc en appuyant sur une seule touche.
Nous n'avons pas réussi à réaliser cet objectif, nous allons donc poser la question au professeur.
Ci dessous, l'objectif que nous avons essayé de réaliser durant la séance.
réalisé lors de la séance:
Nous avons commencé à créer la variable pour les conditions de déplacement, mais elle ne fonctionne pas encore. Nous avons choisi d'utiliser une fonction boolean.
Voici notre départ:
boolean xCube= true;
boolean yCube= true;
int i =0;if ( xCube && yCube) {
deplacement2 ();
if ( xCube && yCube) {
deplacement1();
if ( xCube && yCube) {
deplacement0();
} else {
deplacement1();
}
} else {
deplacement2();
}
} else {
deplacement3() ;
}
}
Séance n°9:
Objectif
fixé (lors de la séance précédente):
trouver une fonction qui va permettre la multiplication des blocs entre eux: lors d'un déplacement, les blocs de même valeur vont se multiplier afin de ne former qu'un seul blocs ( de leur valeur au carré).
OU s'occuper du déplacement de chaque cube.
Explication sur photos ci-contre.
De plus, il faut trouver une fonction pour afficher "perdu" lorsqu'il y a 16 blocs dans le quadrillage.
Grâce à la question posé au professeur notre programme fonctionne correctement. Tous les objectifs sélectionnés ci-dessus ont été réalisé par Mr Laclaverie.
Il faut maintenant comprendre les nouvelles lignes de code et ajouter quelques modifications pour que le projet aboutisse.
Voir Lignes de code
Le but de cette séance est donc de comprendre chaque lignes de code, et si possible les améliorer. Sinon, les explications des lignes nous permettrons d'ajouter les modifications nécessaires durant les vacances.
Réalisé lors de la séance:
-commentaire pour toutes les nouvelles lignes de code en binôme (voir un exemple de lignes)
Puis avec le temps restant nous nous sommes répartis les tâches suivantes:
-commencement d'une fonction pour redémarrer une nouvelle partie ou arrêter le jeu lorsque l'on a perdu (lien vers les lignes)
-recherche d'une solution pour que le jeu s'arrête uniquement quand on ne peut plus effectuer de mouvement.
État actuel du programme en exécution:
Les cours d'ISN dédiés à la réalisation du projet sont maintenant terminés. Pour voir la suite de la progression, se référer aux carnet de bords personnels.
Travail en groupe du 05/03/20:
Mise en place d'une fonction pour changer les couleurs suivant les valeurs des cubes. Voir dans les lignes de code.
+Recherche d'une fonction pour améliorer le déplacement des cubes, mais celle ci ne fonctionne pas.
Voici nos lignes de code (même principe pour "if (j==2)" et "if (j==1)"):
//s'il y a 3 cubes dans une colonne
if (j==3){
valCube [i][j] = valCube [i][j+1];
valCube [i][j+1] = valCube [i][j+2];
valCube [i][j+2] = valCube [i][j+3];
}