TP 6-7-8-9 Informatique et Algorithmique Byte Battle

Documents pareils
Messages d'erreurs. Redémarrez votre PC en cliquant sur Démarrer, en sélectionnant ensuite Arrêter puis en cochant Redémarrer

Le transfert de fichiers avec Filezilla Initiation à l'utilisation d'un client FTP

BADPLUS V5 MANUEL D'UTILISATION. Imports de données joueurs à partir de la base fédérale en ligne Poona. Stéphan KIEFFER - Dominique BOSSERT

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Utilisation du logiciel Epson Easy Interactive Tools

Partager son lecteur optique

LibreOffice Calc : introduction aux tableaux croisés dynamiques

Contrôler plusieurs ordinateurs avec un clavier et une souris

Création d'un site neutre et présentation des éléments de la page d'accueil

Algorithmique avec Algobox

CALAMEO. Publier et partager vos documents sur la toile

Transférer et enregistrer les photos sur l'ordinateur

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

Notice d'utilisation Site Internet administrable à distance

Captation automatique. Mode d'emploi

Répertorier vos mots de passe avec Passbox : 1) Télécharger le fichier d'installation :

TRANSFERER UNE PHOTO SUR CLE USB

Gestion des utilisateurs : Active Directory

Contro ler plusieurs ordinateurs avec un clavier et une souris

Open-Xchange Server. Manuel utilisateur de VoipNow

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

LANDPARK NETWORK IP LANDPARK NETWORK IP VOUS PERMET D'INVENTORIER FACILEMENT VOS POSTES EN RÉSEAU

Astuces de dépannage quand problème de scan to folder

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

Classer et partager ses photographies numériques

Visio Kit. Mode d'emploi

inviu routes Installation et création d'un ENAiKOON ID

Edutab. gestion centralisée de tablettes Android

Pluridisciplinarité. Classe de BTS DATR

Le langage C. Séance n 4

Guide d'utilisation de la. plate-forme GAR. pour déposer une demande. de Bourse Sanitaire et Sociale

Gérer, stocker et partager vos photos grâce à Picasa. Janvier 2015

L'assistance à distance

Comment configurer X-Lite 4 pour se connecter au serveur Voip de Kavkom?

Guide de l'utilisateur de l'utilitaire d'installation de caméra Avigilon

PHPWEBSITE -Tutoriel image

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.3

Utiliser Internet Explorer 7

Administration du site (Back Office)

SOS Info: Traitement de textes. 1. Structurer un document. 2. Enregistrer un document

I. Introduction aux fonctions : les fonctions standards

Panda Managed Office Protection. Guide d'installation pour les clients de WebAdmin

Description de la procédure pour ouvrir un compte et pour procéder aux achats en ligne

Organiser vos documents Windows XP

Google Drive, le cloud de Google

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

Tester la se curite de son re seau WiFi

GesTab. Gestion centralisée de tablettes Android

Comment formater votre ebook avec Open Office

Partager sa connexion Internet via le WiFi avec Windows 8

Avec PICASA. Partager ses photos. Avant de commencer. Picasa sur son ordinateur. Premier démarrage

Créer un sondage en ligne

Canon Mobile Printing Premiers pas

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

Le générateur d'activités

Qu'est ce que le Cloud?

Les possibilités de paramétrage réseau des logiciels de virtualisation sont les suivantes quant à la connexion réseau :

Programmation Objet - Cours II

Mises à jour des logiciels Manuel de l'utilisateur

Comment utiliser sa messagerie laposte.net

Guide de correction et d optimisation des images en vue de leur publication sous Marcomedia Contribute. Logiciel utilisé : Adobe PhotoShop 7

POUR ALLER UN PEU PLUS LOIN SUR UN TABLEUR. Version EXCEL

GUIDE D INSTALLATION RAPIDE DEXH264

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

MODULES 3D TAG CLOUD. Par GENIUS AOM

POUR MAC Guide de démarrage rapide. Cliquez ici pour télécharger la version la plus récente de ce document

Guide Google Cloud Print

Partager sa connexion Internet via le WiFi avec Windows 8

Utiliser CHAMILO pour le travail collaboratif

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

Pour paramétrer l'extranet Pré-inscription, sélectionner Pré-inscriptions dans le menu Paramètre.

COMMANDER A DISTANCE LE ROBOT-PONG ETUDE DE LA TELECOMMANDE (2 nde PARTIE)


Capture Pro Software. Démarrage. A-61640_fr

PLAN. Qui peut faire quoi? Présentation. L'internaute Consulte le site public

SAGE Financements Notice de mise à jour via internet

ENT Espace de stockage

Guide d'utilisation du portail d'authentification Cerbère à usage des professionnels et des particuliers

Lenovo Online Data Backup Guide d'utilisation Version

Infolettre #12 : Office Live Workspace

VRM Monitor. Aide en ligne

Le service de création de site Internet : Mode d emploi. La Création de Site Internet

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Trousse de sécurité d'alarme - NVR

Les Enseignants de l Ere Technologique - Tunisie. Niveau 1

TeamViewer 9 Manuel Management Console

Guide de démarrage rapide

Dispositions relatives à l'installation :

Traitement de texte : Quelques rappels de quelques notions de base

Interface PC Vivago Ultra. Pro. Guide d'utilisation

Chapitre 4 Pierre, papier, ciseaux

Qlik Sense Cloud. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Exposer ses photos sur Internet

PARAMETRER LA MESSAGERIE SOUS THUNDERBIRD

Utilisation de la clé USB et autres supports de stockages amovibles

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.0

TeamViewer 7 Manuel Manager

Volet de visualisation

1. Introduction Sauvegardes Hyper-V avec BackupAssist Avantages Fonctionnalités Technologie granulaire...

Transcription:

TP 6-7-8-9 Informatique et Algorithmique Byte Battle Objectif : L'objectif est de réfléchir à la décomposition en sous-programmes d'un algorithme de haut niveau. Les sous-programmes pourront être des fonctions avec des paramètres par valeur et qui retournent un résultat via l'instruction return, ou des procédures qui retournent des résultats via les paramètres par variable. Les types synonymes nécessaires à la mise en œuvre seront utilisés. Au cours des quatre prochaines séances de TP, vous aurez à programmer plusieurs stratégies de jeu en vue de battre les trois niveaux de difficulté de l'ordinateur. A l'issue de ces TP, les volontaires pourront participer au tournoi de la promotion. A cette occasion, vous pourrez mesurer votre programme final à ceux de vos camarades. 1. Présentation du jeu Byte Battle Le jeu Byte Battle est un jeu vidéo dans lequel deux joueurs s'affrontent à travers un combat d'octets. Les octets (ou pions) de chaque joueur sont identifiés par une couleur (les bleus et les verts). Le jeu se joue sur une carte rectangulaire 4096x2048. Le gagnant est celui qui élimine tous les pions de l'adversaire. Vous trouverez sur Moodle, une vidéo d'introduction qui complète les instructions présentées dans ce document. Position de départ : Chaque joueur démarre la partie avec 48 pions. Les pions bleus, du premier joueur, peuvent être positionnés à gauche ou à droite de la carte. Ce positionnement est déterminé de manière aléatoire au début de la partie. Les pions verts, du second joueur, sont positionnés de manière symétrique aux pions bleus : Principe du jeu : Au début de la partie, les pions de l'adversaire ne sont pas visibles car ils sont trop éloignés des pions du joueur. En effet, chaque pion possède un champ de vision limité. Par conséquent, chaque joueur doit se servir de ses pions pour rechercher les pions adverses et engager le combat lorsque ces derniers sont découverts. Les deux joueurs ayant un même nombre de pions, l'issue de la partie dépend uniquement de la manière dont les pions sont utilisés. Chaque joueur doit donc définir une stratégie de jeu pour exploiter ses pions de la manière la plus efficace. Ordres possibles : Pour mettre en place sa stratégie de jeu, chaque joueur peut commander ses pions. Trois ordres peuvent être définis : demander à un pion de se déplacer vers une position particulière ; demander à un pion d'attaquer un pion adverse ; demander à un pion de stopper son action en cours. Informations accessibles : Chaque joueur peut également obtenir un certain nombre d'informations sur le jeu : l'état de fin de partie qui indique si la partie est terminée ; pour chacun de ses pions, le joueur a accès à leur position sur la carte, leur capital santé ainsi que leur action en cours (en déplacement, en attaque ou en attente) ; 1

pour chacun des pions adverses VISIBLES, le joueur a accès à leur position sur la carte et à leur capital santé. Remarque : les ordres déplacer et attaquer présentés précédemment permettent seulement de définir des objectifs. Les pions qui reçoivent de tels ordres vont alors tenter de les satisfaire du mieux qu'ils le peuvent. Deux principes peuvent donc être dégagés : 1. il est possible d'ordonner simultanément à plusieurs pions de se déplacer vers une même position ou d'attaquer un même pion adverse. Chacun d'eux tentera alors d'atteindre son objectif du mieux qu'il le peut ; 2. pour déterminer si un pion a terminé son action, il suffit de vérifier que ce pion est en attente. Lancement d'une partie contre l'ordinateur : 1. Pour lancer le jeu «Byte Battle» : 1. double-cliquez simplement sur l'icône présente sur le bureau : 2. ou ouvrez un terminal et saisissez la commande : spring Remarque : «spring» est le moteur de jeu qui supporte «Byte Battle». Il doit donc être exécuté afin de pouvoir lancer la partie. Figure 1 : Fenêtre de sélection du jeu. 2. Lorsque la fenêtre de sélection du jeu s'ouvre (voir figure 1), vérifiez que les trois composants «Project : Byte Battle 1.0», «ByteBattleMap» et «Commanders» soient bien sélectionnés comme indiqué sur l'image ci-contre. Si ces composants ne sont pas sélectionnés, cliquez sur les boutons «Select» respectifs et choisissez-les parmi les listes proposées. Le premier permet de sélectionner un jeu (ici «Project: Byte Battle 1.0») ; le deuxième permet de sélectionner une carte de jeu sur laquelle la partie se déroulera (ici «ByteBattleMap») ; le troisième permet de sélectionner un script de démarrage qui initialisera la partie (ici «Commanders»). 3. Après avoir vérifié ces trois premiers points, cliquez sur le bouton «Test the Game». Figure 2 : Menu de jeu de «Byte Battle». 4. Après un court chargement, le menu du jeu «Byte Battle» est alors affiché comme indiqué sur la figure 2. Cliquez sur le bouton «Missions» pour choisir le niveau de difficulté de l'ordinateur. 2

Figure 3 : Sélection du niveau de difficulté. 5. Trois niveaux de difficulté vous sont alors proposés comme indiqué sur la figure 3. Le niveau 0 est le plus facile, le niveau 2 est le plus complexe. Cliquez simplement sur le niveau de difficulté désiré pour lancer la partie contre l'ordinateur (Pour débuter, choisissez le niveau 0 : «Projectlauncher(Ai-Level0)»). 6. Après un court chargement et un décompte de trois secondes, la partie est lancée. Il ne vous reste plus qu'à exécuter votre programme et observer son déroulement dans le jeu. Astuces complémentaires : 2. Par défaut, le jeu présente la partie par une vue de dessus. Vous pouvez déverrouiller cette vue en pressant la touche «Tabulation». Une seconde pression verrouillera à nouveau le point de vue. En mode libre, vous pouvez utiliser la molette de la souris pour zoomer sur le champ de bataille et utiliser les flèches du clavier pour déplacer le point de vue. La vitesse du jeu peut être accélérée ou ralentie à l'aide des touches «+» et «-» du clavier numérique. A tout moment vous pouvez relancer la partie en cours. Pour ce faire appuyez sur la touche «Echap» pour afficher le menu du jeu, puis cliquez sur le bouton «Restart». Présentation de la bibliothèque Prog&Play La bibliothèque Prog&Play fournit un ensemble de fonctions et de procédures indispensables pour programmer le comportement des pions. Pour pouvoir utiliser cette bibliothèque, ajoutez en tête de votre programme l'instruction de préprocesseur suivante : #include "PP_IMM.h" Types synonymes et constantes : Les fonctions et procédures définies dans la bibliothèque Prog&Play utilisent deux types synonymes et une constante : Le type PP_Pion permet de représenter un pion présent dans le jeu vidéo ; Le type PP_Pos permet de représenter une position sous la forme d'une structure composée de deux float x et y. Exemple d'utilisation pour définir la position {2048.0, 1024.0} : PP_Pos p; p.x = 2048.0; p.y = 1024.0; 3

La constante NB_MAX_PIONS, définie à la valeur 48, indique le nombre maximum de pions contrôlés par chaque joueur. Procédures et fonctions : Les fonctions et procédures de la bibliothèque Prog&Play sont présentées en détail dans le fichier «PP_IMM.h» disponible sur Moodle au format pdf. Option de compilation : Pour compiler votre programme, ajoutez simplement l'option «-lppimm» à votre ligne de compilation comme indiqué dans l'exemple suivant : gcc -Wall -ansi -g monprogramme.c -o monprogramme -lppimm 3. Travail demandé Il s agit de mettre en oeuvre, une stratégie de jeu pour tenter de vaincre les trois niveaux de difficulté de l'ordinateur. Lors de la dernière séance, vous pourrez également mesurer votre programme contre ceux de vos camarades. 3.1. Découverte du jeu 1. Commencez par lancer le jeu avec le niveau de difficulté 0. 2. Téléchargez l'exemple de programme («imm_exemple.c») disponible sur Moodle. 3. Compilez, exécutez cet exemple et observez son influence dans le jeu. Que fait ce programme? 3.2. Travail préliminaire 1. Relancez le jeu. 2. Définissez les données et types synonymes nécessaires à l'écriture de votre programme (constantes et structures de données) : 1. Définissez les constantes CARTE_L et CARTE_H qui représentent respectivement la largeur (4096) et la hauteur (2048) de la carte. 2. Définissez le type synonyme PP_Pion_t qui représente un tableau de PP_Pion de taille NB_MAX_PIONS. 3. Définissez la structure de données Groupe composée de deux champs : 1. un tableau de pions de type PP_Pion_t pour représenter les membres du groupe ; 2. une valeur de type int pour stocker le nombre de pions dans le groupe. 3. Créez une procédure qui affiche l'état d'un pion dans la console (sa position et son capital santé). 4. Créez une fonction qui retourne «true» si tous les membres d'un groupe sont en attente d'un ordre et «false» sinon. 4. Modifiez et exécutez l'exemple précédent pour afficher l'état du pion déplacé avant et après son déplacement. Remarque : vous devez attendre que le pion se soit arrêté avant d'afficher son état final. 5. Modifiez votre programme pour déplacer tous vos pions au centre de la carte de jeu. Attention : vous n'utiliserez pas de variables globales, les variables sont déclarées dans le main et passées en paramètres des sous-programmes. 3.3. Niveau de difficulté 0 Attention : toujours travailler sur une copie de votre code pour développer une nouvelle version, pour conserver la version précédente qui fonctionne. Présentation de la stratégie de jeu : Au niveau de difficulté 0, les pions contrôlés par l'ordinateur restent passifs. Chacun d'eux s'activera seulement s'il se trouve attaqué par l'un de vos pions. Pour battre le niveau 0, une stratégie gagnante consiste simplement à ordonner à tous les pions en attente de commande d'attaquer le premier pion adverse dès qu'il est détecté. L'algorithme est donc le suivant : Début Initialiser la bibliothèque Prog&Play TantQue la partie n'est pas terminée faire Obtenir les pions du jeu Si un pion adverse est visible alors 4

Ordonner aux pions qui n'attaquent pas d'attaquer le premier pion ennemi visible Sinon Ordonner à chaque pion en attente de commande de se déplacer vers une position aléatoire sur la carte FinSi FinTantQue Fermer la bibliothèque Prog&Play Fin A partir de cet algorithme, définissez et réalisez les sous-programmes nécessaires, puis modifiez ensuite votre programme principal pour tester ces sous-programmes. Faites valider votre code et votre victoire par votre enseignant de TP. Remarque : Après avoir lancé votre programme, vous pouvez (dans la fenêtre du jeu) appuyer simultanément sur les touches «Ctrl» et «a» pour afficher graphiquement les ordres réalisés par vos pions. 3.4. Niveaux de difficulté 1 et 2 Vous êtes maintenant libre d'améliorer le programme précédent ou de concevoir votre propre stratégie de jeu pour tenter de battre les niveaux 1 et 2 de l'ordinateur. 1. Pour chaque niveau de difficulté, définissez un algorithme de haut niveau décrivant votre stratégie de jeu. 2. A partir de l'algorithme de premier niveau, déduisez les sous-programmes (fonctions et procédures) nécessaires, ainsi que leurs en-têtes respectifs, en précisant les paramètres passés par valeur et ceux passés par variable. Faites valider vos choix par l'enseignant de TP. 3. Ecrivez le programme principal C permettant de tester les sous-programmes que vous avez écrits. Faites valider par votre enseignant de TP. 3.5. Éléments de stratégie Tous ensembles... Cette stratégie de jeu est utilisée pour battre le niveau 0 de l'ordinateur. Elle consiste donc à concentrer toute sa force de frappe sur une et une seule cible. Cette stratégie perd de son efficacité lorsque les différents pions sont éloignés les uns des autres (comme c'est le cas dans le jeu «Byte Battle») car ils perdront du temps dans les déplacements. De proche en proche... Une deuxième stratégie de jeu consiste à limiter les déplacements des pions en leur faisant attaquer les pions ennemis les plus proches d'eux. Ceci revient à rechercher pour chaque pion, le pion ennemi le plus proche à attaquer. En formation... Une stratégie complémentaire aux deux précédentes, consiste à conserver les pions en formations de manière à constituer une ligne de front plus efficace que des pions clairsemés. Ceci revient à faire progresser les pions en ligne droite en direction des positions adverses. 4. Jouer contre un camarade Pour jouer à deux, les participants doivent en tout premier lieu définir leur rôle (joueur 1 ou joueur 2). Le joueur 1 doit commencer par identifier l'adresse IP de son ordinateur. Pour cela, il doit saisir dans un terminal, la commande suivante : «/sbin/ifconfig». L'adresse IP est composée de quatre nombres séparés par des points (elle doit être de la forme : 141.115.20.14, la dernière valeur étant propre à chaque machine). Demandez de l'aide à votre enseignant en cas de difficultés. Le joueur 1 doit alors lancer le jeu et sélectionner la mission «Projectlauncher-(1vs1)» plutôt qu'un niveau de difficulté. Le jeu va alors se lancer et attendre la connexion du second joueur. Après avoir noté l'adresse IP du joueur 1, le second joueur ne doit pas cliquer sur le bouton «Test the Game» mais doit à la place utiliser le bouton «Direct connect». Le joueur 2 doit alors indiquer l'adresse IP du joueur 1 et vérifier que les champs «Port:» et «Player...» soient bien respectivement définis à «8451» et à «Player2». Puis le joueur 2 doit simplement cliquer sur le bouton «Connect» pour lancer la partie. 5