XNA Atelier 06. La gestion des entrées



Documents pareils
Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

A.P.I. Kuka Manuel de l utilisateur Version 0.0.5

Les structures. Chapitre 3

Package Java.util Classe générique

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Construire des plug-ins pour SAS Management Console SAS 9.1

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours de Systèmes d Exploitation

TD/TP PAC - Programmation n 3

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

1. Base de données SQLite

Cours LG : Administration de réseaux et sécurité informatique. Dans les Paramètres Système onglet Processeur, le bouton "Activer PAE/NX"

TP1 : Initiation à Java et Eclipse

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Une introduction à Java

Projet de programmation (IK3) : TP n 1 Correction

Programmer en JAVA. par Tama

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Leçon N 5 PICASA Généralités

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Programme Compte bancaire (code)

Remote Method Invocation Les classes implémentant Serializable

WebParts. Version 1.0

Sélection du contrôleur

Chapitre 10. Les interfaces Comparable et Comparator 1

Java DataBaseConnectivity

Programmation en Java IUT GEII (MC-II1) 1

4. Groupement d objets

TD3: tableaux avancées, première classe et chaînes

INTRODUCTION À L INFORMATIQUE. Etsup 2012 Florian JACQUES

Canevas théoriques du projet sur le poker Partie A

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Programmation Par Objets

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Tp 1 correction. Structures de données (IF2)

HAYLEM Technologies Inc.

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Programmation système I Les entrées/sorties

Langage Java. Classe de première SI

Utilisation d objets : String et ArrayList

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Classes et Objets en Ocaml.

TD/TP PAC - Programmation n 3

ACTIVITÉ DE PROGRAMMATION

Cours 1: Java et les objets

Gestion distribuée (par sockets) de banque en Java

Education Delivery Intelligent Tool

FileMaker Pro 13. Utilisation d une Connexion Bureau à distance avec FileMaker Pro 13

TP, première séquence d exercices.

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Plan du cours. Historique du langage Nouveautés de Java 7

Guide pour l Installation des Disques Durs SATA et la Configuration RAID

TD3 - Facturation avec archivage automatisé

Programmation par les Objets en Java

Premier cours d informatique

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Notions fondamentales du langage C# Version 1.0

Programmation stochastique

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Développement XNA. pour la Xbox et le PC. Premiers pas en développement de jeu vidéo. Léonard Labat

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Construire une application marketing Facebook sur la plateforme Windows Azure

.NET - Classe de Log

Partager rapidement un fichier volumineux

COMPÉTENCES QUÉBEC COMPÉTITION PROVINCIALE 2014 SOUTIEN INFORMATIQUE


Découverte de l ordinateur. Partie matérielle

Documentation de conception

1. Installation d'un serveur d'application JBoss:

Chapitre 2 Devine mon nombre!

Thunderbird est facilement téléchargeable depuis le site officiel

OpenPaaS Le réseau social d'entreprise

Conception et développement d'un périphérique USB pour le simulateur de vol Microsoft Flight Simulator

Bernard HAMM, Évelyne LAVOISIER

Télécharger et Installer OpenOffice.org sous Windows

FIDÉICOMMIS. Être en mesure de :

Tout savoir sur le clavier

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Algorithmique et Programmation, IMA

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Capacité de mémoire Tablettes

LÉA, plateforme pédagogique

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

2. Comprendre les définitions de classes

DOCUMENTATION POINT FACTURE

GUIDE ADMINISTRATEUR BIEN DÉMARRER AVEC WISEMBLY

Plateforme PAYZEN. Définition de Web-services

Mode d emploi base de données AIFRIS : Commande et inscriptions

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Module.NET 3 Les Assemblys.NET

Transcription:

XNA Atelier 06 La gestion des entrées Auteur Vincent Echelard Table des matières A. BUT DE L ATELIER... 2 B. LA GESTION DES ENTRÉES... 2 1. Introduction... 2 2. La stratégie... 2 3. Le composant InputManager... 3 C. TRAVAIL À RÉALISER... 4 D. MODALITÉ DE REMISE... 5 420-203-RE Développement de programmes dans un environnement graphique

A. But de l atelier Cet atelier vous permettra de vous initier aux divers aspects du développement d une application XNA liés à la gestion des périphériques d entrée de données. Pour commencer : 1. Téléchargez le fichier d archives contenant l atelier à compléter à partir de mon site Web (vechelard.clg.qc.ca). Ce fichier porte le nom «Atelier_06-Base.zip». 2. Décompressez le fichier d archives et ouvrez l atelier avec Visual Studio; B. La gestion des entrées 1. Introduction Dans un logiciel interactif, la relation avec l utilisateur doit de toute évidence être bidirectionnelle. Avec XNA, l utilisateur peut utiliser différents périphériques pour communiquer avec l application le clavier, la souris et la manette. Contrairement à ce qui se passe dans une application en interface graphique classique où la gestion des entrées revêt la forme d une gestion d événements, avec XNA l utilisation d un périphérique d entrée prendra la forme d une gestion de l état du périphérique. Il sera également nécessaire de prendre en considération les concepts liés au temps et à la gestion de la boucle de jeu. 2. La stratégie La première approche qui sera implémentée sera non événementielle dans la mesure où nous ne tenterons pas de profiter des capacités événementielles de XNA, mais plutôt orientée vers l analyse de l état des périphériques. Auteur : Vincent Echelard, 2015 Page 2

3. Le composant InputManager public class InputManager : Microsoft.Xna.Framework.GameComponent Keys[] AnciennesTouches get; set; Keys[] NouvellesTouches get; set; KeyboardState ÉtatClavier get; set; public InputManager(Game game) : base(game) public override void Initialize() AnciennesTouches = new Keys[0]; NouvellesTouches = new Keys[0]; base.initialize(); public override void Update(GameTime gametime) AnciennesTouches = NouvellesTouches; ÉtatClavier = Keyboard.GetState(); NouvellesTouches = ÉtatClavier.GetPressedKeys(); base.update(gametime); public bool EstClavierActivé get return NouvellesTouches.Length > 0; public bool EstEnfoncée(Keys touche) return ÉtatClavier.IsKeyDown(touche); public bool EstNouvelleTouche(Keys touche) int NbTouches = AnciennesTouches.Length; bool EstNouvelleTouche = ÉtatClavier.IsKeyDown(touche); int i = 0; while (i < NbTouches && EstNouvelleTouche) EstNouvelleTouche = AnciennesTouches[i]!= touche; ++i; return EstNouvelleTouche; Auteur : Vincent Echelard, 2015 Page 3

Comme vous pouvez le constater, ce composant se limite pour l instant à la gestion du clavier. Sa stratégie est la suivante : 1. L état du clavier est conservé dans deux tableaux qui contiennent chacun la liste des touches enfoncées, mais à des moments différents. Ainsi, le tableau NouvellesTouches contiendra l état actuel du clavier, tandis que le tableau AnciennesTouches contiendra l état précédent du clavier. La taille de ces tableaux dépend du nombre de touches simultanément enfoncées. 2. Les deux tableaux sont initialisés à vide lors de la construction du composant. 3. Dans la méthode Update() : a. le contenu du tableau NouvellesTouches est copié dans le tableau AnciennesTouches; b. le clavier est interrogé pour connaître son état (quelles sont les touches enfoncées); c. la liste des touches enfoncées est copiée dans le tableau NouvelleTouches. Pour savoir si une touche vient tout juste d être enfoncée, il suffit de vérifier si elle l était précédemment dans le tableau AncienneTouche. C. Travail à réaliser Vous devez compléter l atelier en réalisant les tâches suivantes : 1. modifiez le composant «InputManager» pour qu il puisse également gérer les différents états de la souris. Pour ce faire, il vous faudra implémenter les fonctionnalités suivantes : a. la propriété EstSourisActive //bool b. la méthode EstAncienClicDroit() //bool c. la méthode EstAncienClicGauche() //bool d. la méthode EstNouveauClicDroit() //bool e. la méthode EstNouveauClicGauche() //bool f. la méthode GetPositionSouris() //Point Note : Ces modifications n entraineront pas de changement aux paramètres actuels du constructeur du composant InputManager. Auteur : Vincent Echelard, 2015 Page 4

2. Créez un nouveau composant nommé «SpriteMobile» qui sera un descendant du composant «Sprite», mais qui aura les particularités suivantes : a. être déplaçable à l aide des touches classiques de déplacement au clavier (WASD); b. la vitesse de déplacement du sprite pourra être modifiée par les touches PageUp (accélération) et PageDown (décélération); et, c. Le constructeur de ce composant devrait avoir cette signature : public SpriteMobile(Game jeu, string nomimage, Vector2 position, float intervalmaj) D. Modalité de remise Vous devrez remettre, par Colnet, un fichier d archives qui contiendra les éléments suivants : 1. Le composant ArrièrePlanDéroulant; 2. Le composant InputManager; et, 3. Le composant SpriteMobile. N oubliez pas, pour chacun de ces composants, de respecter les constructeurs imposés. Votre fichier d archives devra s intituler comme suit : «Atelier 06 - Nom Prénom» Vous devrez remettre ce fichier d archives avant minuit le lundi 28 septembre 2015. Tout retard entraînera une pénalité. Auteur : Vincent Echelard, 2015 Page 5