Previous Up

6  Jeu en C

Passons maintenant à l’interfaçage de la manette avec le jeu en C.

6.1  Code fourni

Le code d’un micro-moteur de déplacement dans un labyrinthe en 3D vous est fourni : http://rex.plil.fr/Enseignement/Reseau/TP.Reseau.GIS3-postcovid/XMaze.tgz.

Installez les bibliothèques graphiques (paquetages Debian libsdl2-dev et libsdl2-gfx-dev) et testez le programme.

Un Makefile est disponible, pour compiler il suffit de taper make.

Vous aurez à ajouter le code réseau pour utiliser la manette pour vous déplacer dans le labyrinthe. Les fonctions faisant appel à la bibliothèque des sockets sont à ajouter dans la bibliothèque libcom.a du répertoire Communication. Vous appelerez ces fonctions dans la fonction main du répertoire Labyrinthe.

6.2  Recherche de la manette

Modifiez votre programme sur la manette pour accepter les paquets IPv4 de diffusion, donc à destination de l’adresse IPv4 255.255.255.255.

Dans le projet "labyrinthe" créez une socket en mode non connectée pour envoyer un paquet UDP en diffusion sur le port adéquat. Votre manette doit répondre avec l’état de ses boutons et surtout avec son adresse IPv4.

Stockez précieusement l’adresse de socket de réponse de la manette.

6.3  Récupération de l’état des boutons

Le jeu doit envoyer régulièrement des paquets UDP à la manette pour provoquer une réponse comportant l’état de ses boutons. Cette réponse doit être lue et interprétée en terme de déplacements dans le labyrinthe.

6.4  Gestion des LED et jeu

Pour aller plus loin vous pouvez implanter une gestion des collisions dans le jeu pour éviter la traversée des murs. Vous pouvez aussi rendre le jeu plus intéressant en choisissant un point à atteindre dans le labyrinthe. Indiquez au joueur où se trouve le point en vous servant des LED. Si la LED centrale est allumée, le point à atteindre est droit devant. Sinon la position de la LED représente la rotation à effectuer pour cibler le point. Si le joueur se place très près du point faites clignoter les LED pour indiquer la victoire et retirez un point au hasard.


Previous Up