Analyse du projet
A Cas d’utilisation / Descriptions textuelles ... 2
1. Acteur(s) ... 2
2. Cas d’utilisation ... 2
3. Modèle du domaine ... 3
4. IHM ... 4
5. Diagrammes de séquences ... 6
5. Diagramme d’activité ... 8
6. XML / DTD ... 8
Le XML ... 8
La DTD ... 9
7. Plan de navigation ... 10
B Présentation des différents modules ... 11
1°) Schéma des flux de données ... 11
2°) Les interfaces graphiques ... 12
Gestion des différents types de question ... 12
Question simple ... 12
Question GPS ... 12
Question multiple ... 13
Question multimédia ... 13
3°) Le service XML ... 13
4°) Le service de validation ... 14
5°) Le service GPS ... 14
6°) Le service chronomètre ... 14
7°) le service ordonnanceur ... 14
8°) le module d’intégration ... 14
A Cas d’utilisation / Descriptions textuelles
1. Acteur(s)
2. Cas d’utilisation
3. Modèle du domaine
-Les champs « longitude » et « latitude » dans la classe GPS correspondent à la localisation attendue.
- Le champ intitulé de la classe ReponseText correspond à la réponse d'une question simple.
- La classe « DocLié » correspond au document multimédia attaché à la question.
- Les champs « tempsTotalSec » et « tempsTotalMin » de la classe Partie correspondent au temps passé sur une carte.
- Les champs « longitude » et « latitude » de la classe Joueur correspondent à la localisation du joueur. Pour les questions GPS, on utilisera ces champs pour les comparer avec ceux de la classe GPS.
4. IHM
Ci-dessous, les IHM qui ont servi de base au projet :
5. Diagrammes de séquences
Figure 1 : Diagramme de séquence « Jouer une partie »
Figure 2 : Diagramme de séquence « Reprendre une partie »
5. Diagramme d’activité
6. XML / DTD
Le XML
<?xml version="1.0" encoding="UTF-‐8" standalone="yes"?>
<hunt id="01" title="Ma chasse au tresor" author="polytech" description="L aventure commence !" map_name="Tours">
<step id="0" score="500" scoreLossPerMinute="10" scoreLossPerWrongAnswer="100"
type="questionMultiple">
<title>Etape1</title>
<text>Combien y a-‐t-‐il d'habitants à Tours</text>
<option1>155 350</option1>
<option2>132 600</option2>
<option3>117 230</option3>
<answer>132 600</answer>
</step>
<step id="1" score="500" scoreLossPerMinute="10" scoreLossPerWrongAnswer="100"
type="questionSimple">
<title>Etape2</title>
<text>Quel écrivain, médecin et moine philosophe était connu sous le pseudonyme Alcofribas Nasier ?</text>
<answer>françois rabelais</answer>
</step>
<step id="2" score="500" scoreLossPerMinute="10" scoreLossPerWrongAnswer="100"
type="questionGPS">
<title>Etape3</title>
<text>Allez place plumereau !</text>
<gpsGoal_longitude>47.394718</gpsGoal_longitude>
<gpsGoal_latitude>0.681771</gpsGoal_precision>
</step>
<step id="3" score="500" scoreLossPerMinute="10" scoreLossPerWrongAnswer="100"
type="questionMultimedia">
<title>Etape4</title>
<text>Que représente cette image ? </text>
<img>http://www.itineraire-‐metro.fr/photos-‐
villes/tours/030408/maxi/DSCN0446.JPG</img>
<answer>hotel de ville</answer>
</step>
</hunt>
La DTD
<?xml version="1.0" encoding="UTF-‐8"?>
<!ELEMENT hunt (step +)>
<!ATTLIST hunt
id CDATA #REQUIRED title CDATA #REQUIRED author CDATA #REQUIRED description CDATA #REQUIRED map_name CDATA #REQUIRED>
<!ELEMENT step (title , text , answer , option1 , option2 ,option3 |title , text , answer|title , text , answer, gpsGoal_longitude , gpsGoal_latitude, gpsGoal_precision )>
<!ATTLIST step
id CDATA #REQUIRED
score CDATA #REQUIRED
scoreLossPerMinute CDATA #REQUIRED
scoreLossPerWrongAnswer CDATA #REQUIRED
type CDATA #REQUIRED >
<!ELEMENT title (#PCDATA)>
<!ELEMENT text (#PCDATA)>
<!ELEMENT answer (#PCDATA)>
<!ELEMENT option1 (#PCDATA)>
<!ELEMENT option2 (#PCDATA)>
<!ELEMENT option3 (#PCDATA)>
<!ELEMENT gpsGoal_longitude (#PCDATA)>
<!ELEMENT gpsGoal_latitude (#PCDATA)>
<!ELEMENT gpsGoal_precision (#PCDATA)>
7. Plan de navigation
B Présentation des différents modules
Le projet a été divisé en plusieurs modules de développement :
2°) Les vues graphiques 3°) Le service GPS
4°) Le service de validation 5°) Le service Chronomètre 6°) Le service XML
7°) Le service Ordonnanceur 8°) Le service d’intégration.
1°) Schéma des flux de données
Les échanges entre les composants Android seront réalisés par le biais de différentes API en fonction de la nature de source et de la cible :
Source - Cible : API
Service – Service : BroadcastReceiver Service – Activity : Binder
Activity – Activity : Intent Activity – Service : Binder
Ordonnanceur*
Service*XML*
Etapes*et*
Par6e*
Ac6vité*
Ques6on*
Lancer*
prochaine*
ques6on*
Valider*
Service*
Valida6on*
Start* Etape**Courante*
Score*
Réponse*
courante*
Start*
Service*
Chronomètre*
Start*et**
Init*de*chrono*
Connexion*
Avec*l’UI*et*
MàJ*avec*l’UI*
1*
2* 3*
4*
6*
5* 7*
8* 9*
10*
Résultat*de*la*
valida6on*
Et*par*
conséquence*
MàJ*Score*
11* Sauvegarder*
par6e*
Demande*ques6on*
suivante*
11*
Mise*à*jour*UI*
suivant*la*
validité*de*la*
réponse*
MàJ*score*
Service*GPS*
Demande*et*réponse*de*
géolocalisa6on*
Start*
2bis*
2°) Les interfaces graphiques Il existe des vues fondamentales :
Le menu principale : Nouvelle partie, continuer une partie Un menu en cours de jeu : Pour sauvegarder ou arrèter une partie Une vue graphique de fin de partie : Récapitulation du score, du temps Facultatif : L’écran permettant de choisir le fichier XML de la carte à jouer
Gestion des différents types de question
Le contenu des vues sera rempli à partir des objets « Etape » passés aux activity.
Question simple
Il s’agit du premier type de question.
La question simple se compose de trois zones : _ La zone de question : numéro de l’étape et énoncé,
_ La zone de réponse : champ texte et boutons « Valider » et « Sauter »,
_ La zone d’information : affichage du chronomètre, nombre de points à gagner, score du joueur et nombre d’erreurs sur la question.
Question GPS
L’IHM contient toujours l’intitulé de la question, un chronomètre, le crédit mis en jeu, le score du joueur et le nombre d’erreurs. Des boutons ont été créés :
_ « J’y suis » qui valide la localisation du joueur, _ « Sauter » qui passe la question,
_ En option : « Choisir la source » qui permet à l’utilisateur de prendre comme source GPS ou GSM.
Question multiple
Il s’agit d’une question où le joueur doit choisir la réponse parmi trois propositions.
Cette IHM possède un intitulé de question, trois boutons radio pour les propositions, un bouton de validation et un bouton pour passer la question. Le score du joueur, le nombre de points mis en jeu, le nombre d’erreurs et le chronomètre sont toujours affichés.
Question multimédia
La question multimédia peut être vue comme question simple dans laquelle vient s’ajouter un lien web permettant d’accéder à un contenu multimedia. Ce lien web est converti en lien cliquable en mettant android:autoLink="http://..." au lieu de android:text="http://..." dans le layout correspondant à l’activité question multimédia.
3°) Le service XML
Il permet de lire ou écrire des fichiers XML.
A partir de fichiers XML, il construit des objets métier (carte, étape, partie, …) Il doit fournir des objets métier aux autres services.
4°) Le service de validation
Ce module doit possède l’objet de type Etape correspondant à l’étape en cours.
Une fonction de comparaison compare la réponse fournie par l’utilisateur et la réponse de l’étape en cours. Retourne vrai ou faux.
5°) Le service GPS
Il fournit une information de géolocalisation (longitude et latitude) sur demande.
6°) Le service chronomètre
Il fournit une information de temps toutes les secondes aux activités connectées à ce service.
Le chronométré peut être initialisé à 0 ou partir d’une valeur d’une valeur stockée dans l’objet
« Partie » afin de continuer une partie sauvegardée.
7°) le service ordonnanceur
Ce service est au centre de l’application.
Il permet de démarrer les autres services et de récupérer les objets métier.
Ce service permet de gérer le déroulement de la partie (l’enchainement des questions).
Gestion du score.
8°) le module d’intégration
Ce module sert à intégrer et unifier le code de chacun des services en une même et unique application.