Leçon 8.2 HTML5 Méthodologie. 1 Code HTML. Jeu des balles - Développement pas-à-pas. J.-Y. Plantec

Documents pareils
Prise en main du logiciel. Smart BOARD Notebook 10

Utilisation du logiciel Epson Easy Interactive Tools

Freeway 7. Nouvelles fonctionnalités

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

TRUECRYPT SUR CLEF USB ( Par Sébastien Maisse 09/12/2007 )

Création de maquette web

COURS WINDEV NUMERO 3

Comment retrouver le fichier "bingo" sauvegardé dans l'ordinateur? Socle commun

Support de formation Notebook

Chapitre 4 Pierre, papier, ciseaux

Optimiser les s marketing Les points essentiels

Mon-complement-retraite.com Aide en ligne

Bientôt la rentrée!...personnaliser et configurer un ordinateur pour faciliter son utilisation en classe

Guide complet d inscription en ligne au Forum 2014 de l OCDE

Personnalisation Fiche Annuaire

Prise en main rapide

Microsoft Application Center Test

Algorithmique avec Algobox

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

Choisir entre le détourage plume et le détourage par les couches.

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

Table des matières. F. Saint-Germain / S. Carasco Document réalisé avec OpenOffice.org Page 1/13

SOUTENANCE ORALE RAPPORT DE PROJET D INFORMATIQUE

Utiliser le logiciel CALIBRE pour gérer vos documents et les convertir au format epub

ENT ONE Note de version. Version 1.10

Indications TD ENT. ou testent la résistance de votre mot de passe.

1 Comment faire un document Open Office /writer de façon intelligente?

HTML. Notions générales

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Le Logiciel de Facturation ultra simplifié spécial Auto-Entrepreneur

Infrastructure - Capacity planning. Document FAQ. Infrastructure - Capacity planning. Page: 1 / 7 Dernière mise à jour: 16/04/14 16:09

PARAMETRAGE DU STOCKAGE/DESTOCKAGE DES ARTICLES & MOUVEMENTS DE STOCKS

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

De EnvOLE 1.5 à EnvOLE 2. Document pour l administrateur

Service intervenant. Version 6.3

YAPBA M. Logiciel libre de suivi de vos comptes

Contrôle parental NetAddictFree 8 NetAddictFree 8 - Guide d utilisation

Optimiser pour les appareils mobiles

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Tutoriel réalisé par luo. Version du 22/02/14

Prise en main du logiciel Smart BOARD

Introduction à MATLAB R


MEDIAplus elearning. version 6.6

1. Installation de COMPTINE

TITRE PARTIE TITRE SECTION. Faire des anaglyphes avec CatiaV5

HTML5, CSS3 et JavaScript Développez vos sites pour les terminaux mobiles

GUIDE D UTILISATION DU BROWSER DE BEYOND 20/20

ANICOTTE Guillaume GUFFROY Matthieu LIMA Juliette SALLOUH Chamsseddine CAHIER DES CHARGES SI 28

Affichage de la date d'exigibilité sur les documents FAQ INV 011

ipra*cool v 1.08 guide de l utilisateur ipra*cool v.1-08 Guide de l'utilisateur ipra*cool v

Plateforme de support en ligne. Guide d utilisation

Prise en main de Moodle

SOMMAIRE 1 INTRODUCTION 3 2 CONTACTER VOTRE SUPPORT 3 3 ESPACE DE GESTION DES CARTES 4 4 CONFIGURER UNE CARTE 5

MAILING KOMPOZER... 2 CREEZ UNE PAGE... 2 FORMAT DE LA PAGE... 2 AJOUTER DU TEXTE SUR UNE PAGE... 4

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

BML Informatique Tableur OpenOffice.org Calc Mercredi 8 avril 2015

Administration du site (Back Office)

MODE OPERATOIRE CIEL GESTION COMMERCIALE VERSION EVOLUTION BTS PME PMI

SPECIFICATIONS TECHNIQUES : Gestion des Médicaments et des commandes de médicaments

AC PRO SEN TR «services TCP/IP : WEB»

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

SCOLARITE Services. Guide pour les Parents et les Elèves. Version Dernière Mise à jour 26 Juin Scolarité services guide de l utilisateur

Comment créer un diagramme de Gantt avec OpenOffice.org

Les calques supplémentaires. avec Magix Designer 10 et autres versions

PERF:C'est une page réservée aux vitesses de décollages (V1; VR;V2) où l'on entre manuellement, les indications sur les vitesses de sorties de volets

Module Communication - Messagerie V6. Infostance. Messagerie

Xubuntu Une alternative à Windows et à Ubuntu, (pour ceux qui ne veulent pas d'unity) : installer Xubuntu.

Pour faire réapparaitre le ruban, il suffit de taper à nouveau sur CTRL + F1

HighPush. document /06/2009 Révision pour version /11/2008 Revision pour la /10/2008 Documentation initiale.

Découvrir OpenOffice Comment optimiser et formater votre ebook avec OpenOffice

Le serveur SLIS - Utilisation de base

Comment formater votre ebook avec Open Office

DOCUMENTATION VISUALISATION UNIT

Toute personne souhaitant maîtriser les techniques liées à la conception de produits multimédia et à la création de sites Web.

Logiciel SCRATCH FICHE 02

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

Présentation du Framework BootstrapTwitter

Chapitre 3 : outil «Documents»

7.0 Guide de la solution Portable sans fil

Présentation de GnuCash

Guide utilisateur i-milo >> Décisionnel

I Pourquoi une messagerie?

Créer un sondage sous Magento

Création de site Internet avec Jimdo

Traitement d un AVI avec Iris

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Uniformiser la mise en forme du document. Accélère les mises à jour. Permets de générer des tables de matières automatiquement.

Mode d Emploi. Résult Arc Logiciel de Gestion de Compétitions. Droits d utilisation Informations Générales. 1/. Présentation de Résult Arc

VOS PREMIERS PAS AVEC TRACENPOCHE

Utilisation de l ordinateur portable Bluetooth avec le hub Logitech sans fil

EXCEL TUTORIEL 2012/2013

Présentation du tableau blanc interactif Interwrite

Gestion électronique des procurations

Manuel d utilisation du module GiftList Pro par Alize Web

Transcription:

Leçon 8.2 HTML5 Méthodologie Jeu des balles - Développement pas-à-pas J.-Y. Plantec Ce document a pour objectif de vous aider à réaliser le développement du jeu des balles. Le code complet du jeu n'est pas donné : il vous faudra écrire et tester plusieurs parties en vous aidant du travail de conception réalisé précédemment et en suivant scrupuleusement les étapes proposées! De loin en loin, vous trouverez des copies d'écran qui vous permettront de vérifier votre progression. 1 Code HTML On commence par le fichier HTML que l'on construit au sens du cahier des charges fonctionnel et de la partie consacrée à la liste des écrans et à leur contenu potentiel. Cette partie de code est donnée.

2 Code CSS Concernant le code CSS, le fichier s'appelle styles.js. Pour commencer à écrire ce fichier CSS, on s'appuie sur les éléments généraux des spécifications techniques détaillées. On définit ainsi : le fond de page gris clair #ccc le style du pied de page : Arial, noir, 12 pts le texte de base des écrans : Arial, noir, 12 pts pour l'écran d'accueil le titre : Arial, rouge, 16 pts le texte expliquant les règles : Vous mettrez à jour ce fichier CSS lorsque vous positionnerez les boutons et définirez le canvas. 3 Code JavaScript Concernant le code JavaScript ici, on a choisi de mettre en oeuvre jquery, mais ce n'est pas une obligation ; le fichier js s'appelle code.js Structure générale On commence à écrire la structure générale du code : Pour ceux qui n'auraient pas choisi jquery, il faut bien entendu remplacer $(function(){...}) ; par document.ready... À ce stade, on peut tester ce travail pour voir si aucune erreur n'est levée. Puis, on construit ce code étape par étape comme ci-dessous et en suivant les spécifications techniques détaillées.

Étape 1 : structure Nous créons dynamiquement les éléments de chaque écran. Dans l'écran d'accueil, on définit : le texte du titre (une chaîne de caractères), le code de l'image du jeu, même si nous n'avons évidemment pas encore d'image du jeu, le texte expliquant les règles, le code du bouton #boutonjeu. Dans l'écran de jeu, on définit : le texte pour la consigne, le code du canvas, le code du bouton #boutonquitter. Dans l'écran de bilan : on laisse vide pour l'instant l'élément où s'affichera le récapitulatif de ce qu'à fait le joueur ; on définit le code des boutons #boutonaccueil et #boutonrejeu. On définit le texte du footer. On teste. Tous les éléments sont visibles. Étape 2 : données On définit ici les 4 tableaux de données : listeniveaux, listeballes, listecouleurs, listetailles.

On n'oublie pas toutes les colonnes qui ont été ajoutées au moment des spécifications détaillées. Un conseil : commencez avec un jeu de données simple, par exemple deux niveaux et deux balles à chaque niveau! On teste avec la console ouverte. Étape 3 : variables On définit et on initialise les variables : tempsjeu, niveaucourant, ecrancourant. On teste avec la console ouverte. Étape 4 : lancement Au chargement du jeu L'écran d'accueil s'affiche au chargement (et masque les autres, bien entendu). Les instructions sont écrites dans la partie LANCEMENT de la fonction init(). On peut créer une fonction afficheaccueil() qui met à jour la variable ecrancourant (ecrancourant=''accueil'';), affiche l'écran #accueil, masque les autres écrans. On teste. Seul #accueil est visible. Étape 5 : gestionnaires et règles Écran d'accueil

On s'occupe des règles et fonctionnalités de l'écran d'accueil. Seule fonctionnalité de cet écran : si on clique sur le bouton #boutonjeu alors on passe à l'écran #jeu. On installe un gestionnaire sur le bouton #boutonjeu associé à une fonction affichejeu() qui met à jour la variable ecrancourant, affiche l'écran #jeu, masque les autres écrans. On teste : Écran de jeu Au départ tous les éléments potentiels s'affichent. La consigne du premier niveau s'affiche. On a vu que l'on construit cette consigne à partir des deux identifiants (un pour la couleur, un pour la taille) donnés dans le tableau des niveaux. Il va être utile de créer une fonction pour l'affichage de cette consigne. On l'appelle afficheconsigne().

On s'occupe des règles de l'écran de jeu. Première règle très générale : sans condition, les balles du premier niveau descendent. Selon les spécifications détaillées, il suffit, maintenant que le code HTML du canvas a été créé, de lancer un setinterval() dans la partie REGLES de la fonction init() ; ce setinterval() exécutera une fonction regles() ; définir la fonction regles() qui lancera (à condition que l'écran courant soit l'écran de jeu) une fonction animer(). Que fait cette fonction animer()? Elle incrémente le temps de jeu, efface le canvas, boucle sur les balles du niveau courant et dessine ces balles en lançant la fonction dessineballe(). On teste après avoir défini le code CSS du canvas. Quelques conseils : Soyez vigilants dans dessineballe() à bien récupérer les bonnes informations pour dessiner la balle : couleur, taille, vitesse, position selon x. Soyez vigilants sur la portée des variables utilisées. N'hésitez pas à utiliser le débogueur! Pour tester, on peut aussi mettre en commentaire le setinterval et lancer une seule fois la fonction Animer() pour vérifier les instructions.

Vérifiez pour ce premier niveau que les balles tombent de la bonne position x, avec la bonne couleur, la bonne taille et la bonne vitesse. Règle suivante : si le temps de jeu dépasse un certain nombre de secondes alors on passe à l'écran #bilan (et on masque les autres écrans). On peut créer ici une fonction affichebilan() qui met à jour la variable ecrancourant, affiche l'écran #bilan, masque les autres écrans. Selon le cahier de spécifications, ce test est fait tout au début de la fonction animer(). On teste. Pour tester cette règle de temps limite, on peut ajuster la valeur maxi de temps à 10 ou 15 secondes (en fonction de la fréquence du setinterval et de la vitesse choisie pour les balles). Règles suivantes : si les balles correspondant à un niveau donné sont toutes passées ou ont toutes disparu parce qu'elles ont été cliquées, alors on passe au niveau suivant. si au moment de changer de niveau c'est le dernier niveau qui vient de passer alors on passe à l'écran #bilan (et on masque les autres écrans). Selon le cahier de spécifications, ce test est fait dans la fonction animer() et l'algorithme est donné. On se rappelle que l'on doit garder en mémoire les coordonnées selon y de chaque balle. Ceci est fait dans dessineballe() en mettant à jour la colonne y dans le tableau listeballes pour la balle courante. Je vous propose de tester ça. Vérifiez que l'on change de niveau! Créez si nécessaire d'autres niveaux et d'autres balles! N'hésitez pas à donner une grande vitesse de descente aux balles pour accélérer le test! Attention à nouveau à la portée des variables! Si arrivez juste qu'ici, bravo! L'essentiel est fait. Ce point était le point dur du développement. La suite est plus facile. Première fonctionnalité de cet écran de jeu : si on clique dans l'élément où s'affichent les balles alors cette balle disparaît (même si ce n'est pas une balle à faire disparaître au sens de la consigne). Selon le cahier de spécifications, nous devons installer un gestionnaire de clic sur le canvas (ceci se fait dans init(), dans la partie GESTIONNAIRE) et nous adaptons la fonction cliccanvas(e) de la semaine 6. Si le clic se produit bien sur une balle alors on met la colonne visible de cette balle à 0 ; ainsi dans

la fonction Animer() le test qui vérifie que conduit au dessin de la balle courante en vérifiant que la valeur visible de cette balle vaut 1. On teste. Deuxième fonctionnalité : si on clique sur le bouton #boutonquitter alors on revient à l'écran d'accueil. Pour mettre en oeuvre cette fonctionnalité, on installe un gestionnaire de clic sur le bouton #boutonquitter. Ce gestionnaire affiche l'écran d'accueil (il lance la fonction afficheaccueil(), mais il ne faut pas oublier de réinitialiser le niveau courant, la position des balles selon y ainsi que leur visibilité. Pour ces deux derniers points, on peut créer une fonction reinitialisation(). On teste. Écran de bilan Au départ tous les éléments potentiels s'affichent : le texte récapitulatif et les deux boutons. Les spécifications détaillées proposent un l'algorithme qui permet de calculer le nombre de points obtenus ainsi que le nombre de points possible. Cet algorithme sera écrit dans la fonction affichebilan() ; On teste avec le débogueur. Conseil : testez de nombreuses fois cet aspect (les utilisateurs n'aiment pas que les scores soient mal calculés, n'est-ce pas?) en mettant le résultat affiché en correspondance avec le jeu de données de test. On s'occupe des fonctionnalités de l'écran de bilan : si on clique sur le bouton # boutonrejouer alors on repasse à l'écran #ecranjeu ; si on clique sur le bouton # boutonaccueil alors on repasse à l'écran #ecranaccueil. Ces fonctionnalités sont faciles à mettre en oeuvre : un gestionnaire sur le bouton #boutonrejouer, un autre sur le bouton #boutonaccueil. Le code à exécuter est décrit dans les spécifications détaillées. 4 Tests Voilà. Vous êtes arrivés au bout! À ce stade, pourquoi ne pas valider le code qui a été écrit?

HTML : http://validator.w3.org CSS : http://jigsaw.w3.org/css-validator/ JavaScript : http://www.javascriptlint.com/online_lint.php Tiens au fait? Que se passe-t-il si des balles se superposent au moment du clic. Voilà un problème que l'on n'avait pas envisagé au moment de la conception et que je vous soumets. Indice, il y a peutêtre des choses à vérifier dans la fonction cliccanvas() (à propos, sait-on quelle est la balle qui est par-dessus l'autre? Est-ce important?). 5 Jouabilité À ce stade le jeu est simplement fonctionnel. Avant de le publier, il faut définir un jeu de données correspondant à un cas réel, c'est-à-dire des tableaux de niveau et de balles tels que le jeu puisse être jouable/intéressant. À vous de définir une succession de niveaux de difficulté croissante, par exemple, en modifiant essentiellement la vitesse des balles. Il faut également définir un temps limite. Ce temps limite doit a priori être supérieur au temps passé dans chaque écran. Mais, comme le fait de cliquer les bonnes balles plus vite ne modifie pas le gameplay, ce temps limite ne servirait donc à rien? Je vous laisse échanger sur ce point.