Le but de ce TP est de réaliser un jeu de type "clicker", c’est-à-dire que le joueur gagne des points en cliquant sur un bouton.

Vous avez trois séances pour réaliser ce TP.

Cookie
Avant de plonger : Git.

Cette partie sera évaluée, il vous faudra donc la mettre sous Git pour le rendu. Normalement à ce stade de votre formation, vous devriez maîtriser mais au cas où, un rappel sur les consignes relative au rendu sous Git est là :

Ne faites rien avant d’avoir un dépôt pour la matière sur GitLab, nommé Android_Nom1_Nom2 et d’avoir cloné ce dépôt en local.

Création du projet

Avec Android studio, créez un nouveau projet dans le clone de votre dépôt Git.

Ajoutez et commitez ce projet dans votre dépôt et poussez le sur Gitlab pour être sûr que tout fonctionne.

Terminer les questions 1,2,3 et 4 donne la moitié des points.

1. Première ébauche

Dans cette première version vous devrez créer une activité avec a minima un champ de texte affichant le score courant du joueur et un bouton qui augmente le score du joueur. Si vous voulez motiver votre joueur, vous pouvez augmenter de plus que un pour que son score soit plus haut.

Vous êtes libres quant à l’aspect graphique de votre clicker mais n’y passez pas toutes les séances.

2. High Score

Pour motiver votre joueur, il serait souhaitable que son plus haut score soit sauvegardé. Vous ajouterez donc un autre champ de texte qui affichera le score le plus haut atteint par le joueur.

3. Sauvegarde du high score

Pour l’instant votre joueur perd son score le plus haut s’il quitte l’application ou s’il tourne son téléphone. Afin de fidéliser votre joueur et de remédier à ce problème, vous devez sauvegarder son score le plus haut.

Au lancement de l’application, vous prendrez soin de mettre à jour l’affichage du score le plus haut.

4. Un peu plus sport

Pour l’instant le jeu n’est pas très intéressant. Pour ajouter du défi, vous allez créer 2 modes de jeu supplémentaires :

  • Infernal Click™

  • Speed Click™

4.1. Infernal Click™

Dans ce mode, le score du joueur descend automatiquement et d’autant plus vite que le score est haut.

Vous devrez donc, dans un thread d’arrière plan, décrémenter le score du joueur à intervalle de plus en plus rapide, proportionnellement au score du joueur.

N’oubliez pas de mettre à jour l’affichage du score après l’avoir décrémenté.

4.2. Speed Click™

Dans ce mode, le joueur a un temps limite pour faire le score le plus haut.

Le bouton de click devra afficher "Start" au départ. Au premier click, un décompte de 5 secondes démarre. Au bout de ce décompte, le bouton se désactive. Le fait de cacher le bouton le désactive (cf. setVisibility).

Après un délai, le bouton se ré-active et le score se remet à zéro. (cf. CountDownTimer)

On ne peut appeler la méthode start sur un Thread Java qu’une seule fois sous peine d'`IllegalThreadStateException`. Il faut donc créer un nouveau thread à chaque partie.

Pour ces modes de jeu, il pourrait être utile que le bouton soit de taille adéquate.

5. Basculement entre modes de jeu

Pour permettre au joueur de basculer entre mode de jeu, vous ajouterez un spinner qui permet de choisir le mode de jeu.

Si vous ne parvenez pas à changer de mode de jeu au moment où le joueur sélectionne un mode de jeu, ajoutez un bouton qui provoque le changement de mode de jeu.

6. Liste des high scores

Pour permettre au joueur d’évaluer sa progression, vous lui offrirez la possibilité de voir la liste de ses 20 derniers scores les plus hauts dans une nouvelle activité accessible par un bouton.

Vous passerez la liste des scores les plus hauts dans l’intent de lancement de la nouvelle activité.

Pour la liste des scores, vous utiliserez une ListView ou un RecyclerView. Les plus téméraires pourront utiliser un ListFragment.

Si les scores des différents modes sont très différents, vous afficherez une liste par mode de jeu.

6.1. Partage d’un score

Vous ajouterez la possibilité de partager un score lorsque le joueur clique sur un des score de la liste. Ce partage se fera en créant un Intent implicite dont l’action sera Intent.ACTION_SEND.

7. Modes de jeu bonus

Si vous avez terminé les parties précédentes, vous pouvez laisser libre cours à votre imagination pour des modes de jeu de votre invention. On peut imaginer un mode où le bouton se déplace sur l’écran à chaque click, un mode avec deux boutons qu’il faut clicker alternativement sous peine de remise à zéro du score ou encore 4 ou 6 boutons qui changent de couleur et le joueur ne doit cliquer que sur le vert ou toute combinaison de ces modes.

8. Rendu

Le rendu se fait via Git, en ajoutant un répertoire à votre dépôt dédié à Android et en poussant votre code.