Projet 6 : SQL

publicité
Projet 6 : SQL
Utilisation d'une base de données SQLite
Objectifs
Au terme de cet exercice, vous serez capables de :
– d'utiliser PDO pour se connecter à une base de données SQLite
– de préparer et exécuter des requêtes SQL en PHP
– de lire les résultats envoyés par une requête SQL
– De lire et modifier des données en SQL
Enoncé
Créer un jeu du pendu en AJAX. Le client web ne doit savoir que
– les lettres trouvées
– le nombre de lettres du mot
– l'état de la potence
– les lettres déjà proposées
La partie PHP doit tirer un mot au hasard dans un fichier SQLite et, en fin de partie, mettre à jour
les statistiques du mot (nombre de fois où je joueur a gagné et nombre de fois où il a perdu)
Remarques
Si une même lettre apparaît plusieurs fois, tous les exemplaires doivent être révélés en même temps.
Les images sont numérotées de 00 à 11, 00 correspond au début de partie et 11 à la partie perdue.
Ressources
Les ressources suivantes sont disponibles sur le site http://cours.endor.be/AJAX_1ere et sur la
plateforme Moodle de la catégorie économique http://elearning.eco.condorcet.be/moodle2X/
– common.js : librairie javascript de base
– pendu.sqlite : fichier de base de données SQLite contenant les mots à proposer
– img/penduxx.jpg : images de 00 à 11 avec la potence à différents niveaux de construction
La base de données SQLite contient une table "mots" définie comme suit :
id
INTEGER AUTOINCREMENT Numéro du mot
mot
VARCHAR(16)
trouve INTEGER
Mot à trouver
Nombre de fois où le mot a été trouvé
rate
INTEGER
Nombre de fois où le mot n'a pas été trouvé
Tous les id sont présents et commencent à la valeur 1.
Cahier des tâches
Les RPC en PHP
Nouvelle partie
Ce RPC doit choisir un mot au hasard dans la DB, générer une chaîne de caractères "-" de même
taille, mettre le compteur de potence à 0, sauver toutes ces données dans la session et renvoyer au
navigateur le nombre de lettres du mot (ou, au choix, la chaîne composée de "-")
Proposition d'une lettre
Ce RPC doit vérifier si la lettre apparaît dans le mot. Si c'est le cas, elle doit être "révélée" dans la
chaîne composée de "-", sinon, l'état de la potence doit être augmenté de 1.
Si la potence atteint le niveau 11, le joueur à perdu et le nombre de fois où le joueur a perdu pour le
mot doit être augmenté de 1.
Si toutes les lettres sont révélées, le joueur a gagné et le nombre de victoires pour le mot doit être
augmenté de 1.
Le RPC doit retourner au navigateur l'état de la potence et la chaîne composée de "-" et des lettres
trouvées.
Javascript
Au début de partie, le javascript demandera au PHP de démarrer une nouvelle partie.
Au retour, il affichera le tableau de jeu : l'image de la potence, le mot à trouver (la suite de "-") et
la/les zones d'entrée qui permettra/permettront de choisir la lettre proposée (méthode de choix de la
lettre à votre libre choix)
Lorsqu'une lettre est choisie, elle sera envoyée au RPC.
Le retour du RPC permettra de mettre l'écran de jeu à jour.
Lorsque la partie est finie, le Javascript devra faire apparaître un bouton qui permettra de
recommencer une partie ainsi qu'un texte indiquant si on a gagné ou perdu.
Améliorations possibles
Ces améliorations sont optionnelles et ne sont que des exemples d'améliorations pouvant être
implémentées. D'autres voies d'améliorations non citées sont également possibles.
– Conserver la liste des lettres déjà proposées
– Affichage des statistiques du mot en fin de partie
– Interface permettant d'ajouter des mots (attention à ne pas insérer un mot en double)
– ...
Astuce
Pour former une chaîne de caractères contenant un nombre n sur deux chiffres, on peut prendre les 2
derniers caractères de la chaîne de caractères qui correspond à (100+n)
Documentation des RPC
Pour documenter les RPC, on utilisera un fichier texte pur (TXT, pas de traitement de texte) dans
lequel on reprendra pour chaque RPC
– Le nom du RPC
– Les paramètres d'entrée (ainsi que le contenu attendu)
– Les valeurs en sortie
– Un bref descriptif de la tâche effectuée par le RPC
Grille d'évaluation
Domaine
Critère
Indicateur
Forme
Respect des consignes
Le travail est remis dans les temps (avant le
12/3/2013)
Les contraintes sont respectées
Respect des
standards
Code lisible
Le code est correctement indenté
Les noms des variables sont explicites et
respectent les règles de nommage
Standards HTML et CSS La page n'utilise pas de balises HTML ou de
récents respectés ?
propriétés CSS dépréciées ou incorrectes
Correction
Erreurs
Le programme tourne sans erreurs
Résultat
Les fonctionnalités implémentées effectuent
bien les tâches demandées
Complet
Toutes les fonctionnalités demandées sont
présentes
Portabilité
Le programme peut tourner sans problème
sur tous les navigateurs récents
Les chemins vers les ressources sont
exprimés de façon relative et correspondent à
la norme web
Qualité de la
Organisation
programmation
Les codes javascript et les feuilles de styles
sont dans des fichiers séparés.
Une arborescence logique est utilisée.
Code propre
Pas de répétition inutile de blocs de codes, de
conditions, ...
Pas de variables ou paramètres inutiles
Les extensions des éléments statiques
correspondent à leur contenu.
Les extensions standards sont utilisées
Design
Elégance
Les algorithmes utilisés sont efficaces et bien
choisis.
Affichages corrects
Les affichages sont corrects, disposés de
façon logique
Absence d'artefacts de rendu (espacements,
bordures,... dont la présence n'est pas voulue
et nuit à l'affichage)
Documentation RPC Documentés
Les RPC AJAX sont documentés : nom,
entrées, sorties, utilité,...
++ + +/- -
Commentaire
Téléchargement