Android S4 — 2018This page as PDF

Présentation

Le sujet de l’an dernier reste visible ici : projets 2017

Cette année, il y a deux projets différents (un par groupe Web). Les deux sont des jeux en 2D utilisant l’accéléromètre et/ou le gyroscope comme controleur. Une version initiale fonctionnelle est fournie pour chaque jeu :

Il vous faudra installer la version initiale correspondant à votre greoupe (voir plus bas), et la faire évoluer en un jeu complet, qui sera mis en ligne sur le Google Play du département. Le développement se fera en équipes.

En ce qui concerne l’utilisation d’Android studio sur les machines de l’iut, n’hésitez pas à consulter la page correspondante :
Android studio — utilisation à l’iut

Installation d’un projet existant sur github

Sur le site github

  • Connectez-vous (ou créez un compte)
  • Allez sur la page du projet (suivre le lien donné ci-dessus)
  • Créez un « fork » du projet.
  • Sur votre compte github, allez sur la copie du projet que vous venez de créer, et copiez le lien https

Android studio

Configurez Android studio (si ce n’est pas déjà fait), en suivant les instructions .

Vous pouvez ensuite récupérer le projet directement à partir de android studio.
Pour utiliser l’interface d’Android Studio pour l’import, choisissez « Check-out project from Version Control », puis GitHub comme source.

Il est recommandé d’utiliser un répertoire de la forme « ~/git/nomProjet » pour votre projet.

Pendant l’importation, Android Studio va probablement indiquer deux erreurs (en bas à droite) que vous pouvez ignorer, et vous demander si vous voulez ajouter vcs.xml à git (la réponse est non).

Une fois le projet importé, il faut vérifier que le sdk est bien dans le bon répertoire, et que la bonne version est sélectionnée. Pour cela, allez dans le menu File — ProjectStructure. Vérifier que SDK Location est bien /usr/local/Android/Sdk et que le module app utilise l’API 26 :
appApi26

SDKlLocation

Pour faire prendre en compte ces modifications, il faut ensuite « synchroniser  » (Ctrl Alt y, ou bouton avec les deux flèches à droite de la disquette dans la barre d’outils), ce qui va forcer la recompilation du projet. Si la bonne version de l’API n’a pas encore été téléchargée sur votre machine, une erreur se produira et il vous sera proposé de procéder au téléchargement.

Une fois le projet correctement compilé, il est très fortement recommandé de l’exécuter pour vérifier que l’import a correctement été réalisé.

Organisation des fichiers

Ressources

Au niveau des fichiers de ressources, vous trouverez les feuilles de sprites dans res/drawable/nodpi. Chacune de ces images regroupent en un seul fichier plusieurs éléments graphiques généralement de même taille et disposés sur une grille, et correspondant au décor ou aux personnages. Cette technique est très courante dans les jeux 2D, et permet d’éviter de multiplier les fichiers. Quand vous remplacerez les feuilles de sprites, veillez à conserver impérativement le même nombre de lignes et de colonnes, ou à adapter ces informations dans le code.

MainActivity.java

Ce fichier décrit le comportement de l’activité principale du jeu et reste très simple, tout se passant dans la vue spécifique au jeu, GameView.

La seule tache que réalise cette activité est de gérer le lien entre les capteurs d’orientation/d’accélération (dans le champ nommé proxy) et la classe GameView.

Dans le onCreate, la vue est récupérée et reliée au capteur correspondant (OrientationProxy ou AccelerationProxy). Quand on quitte le jeu ou qu’on y revient, les méthodes onResume et onPause gèrent l’état des capteurs.

GameView.java

Ce fichier contient toute la logique du jeu. Il est chargé de gérer l’affichage à intervalles réguliers. Il difféère évidement d’un jeu à l’autre, mais il y a un certain nombre de points communs :

La méthode init() est appelée par tous les constructeurs, et se charge de créer les structures de données représentant le jeu, ainsi que les images.

La méthode update() est appelée à intervalle réguliers pour faire avancer le jeu d’une image.

La méthode onDraw() est appelée à chaque fois qu’il est nécessaire de dessiner ou redessiner la vue (donc après chaque appel à update()

La méthode setCamera() est appelée pour choisir quelle partie de ce qui est affichée dans onDraw est visible, et sous quel angle. Comme en 3D, cela se fait par une succession de translations et rotations.

La méthode onXXXChanged() transmet les évènement des capteurs à l’objet contrôlé par le joueur.

Les informations sur le décor et les personnages sont gérés dans des classes séparées.

Track.java et Level.java

Ces fichiers décrivent chacun un niveau de jeu, et gèrent son affichage. Les informations sont codées dans des chaînes de caractères, plus faciles à saisir que des suites de nombres. A la création de l’objet correspondant, les données sont converties dans un format directement utilisable pendant le jeu.

Car.java et Hero.java

Dans ces deux classes, on retrouve les informations relatives à la position et l’état du sprite contrôlé par le joueur.

La méthode setCommand() ou jump() transmet les informations des capteurs. Ces informations sont utilisées lorsque la méthode update() est appelée, avant chaque affichage, pour mettre à jour l’état du sprite.

La méthode paint() affiche le sprite à sa position actuelle et avec une image correspondant à son état.

Package utils/

Ce répertoire contient des fichiers java nécessaire au bon fonctionnement des autres classes. Il ne sera probablement pas nécessaire de les modifier.

  • XXXProxy : gestion des capteurs
  • RefreshHandler et TimerAction : gestion de l’écoulement du temps (timer)
  • SpriteSheet : gestion des feuilles de sprites (découpage en images séparées de la feuille)
  • Utils : divers, dont chargement des images

Laisser un commentaire