speedy's image Licence 2ème année - Projet OcamlPilot
Last update: 25-11-2023
1.Nouvelles fraîches 
2.Présentation générale
3.Présentation du jeu
4.Les exécutables d'OcamlPilot(d)
5.Les énoncés de TP
6.Les tailles des objets graphiques
7.Ressources
8.Env de développement
9.Le protocole d'OcamlPilot
10.Coding style
11.Le Plan du cours
12.Evaluation des projets
13.Foire Aux Questions

Valid XHTML 1.0! Valid CSS!
TME numéro 6



Exercice 1

Reprenez le TME précédent et écrivez une fonction:
connexion_serveur : unit -> Graphics.color * in_channel * out_channel
qui demande à l'utilisateur la couleur qu'il désire avoir pour son vaisseau spatial, qui crée la connexion avec le serveur et qui, si tout s'est bien passé, renvoie un triplet contenant la couleur du vaisseau ainsi que les canaux d'entrée et de sortie permettant de communiquer avec le serveur. En revanche, si la couleur est déjà utilisée (si c'est le cas, le serveur vous l'indiquera), votre fonction fermera proprement les sockets et se terminera. Si une erreur survient lors de la tentative de connexion (problème de réseau, etc) votre fonction terminera votre programme.



Exercice 2

Écrivez une fonction main qui lance la connexion au serveur, initialise les variables de taille, puis boucle indéfiniment sur l'affichage des objets graphiques et l'envoi au serveur des instructions du joueur (ces deux fonctions pourront être lancées à intervalle de 1/30ème de seconde).



Exercice 3

Vérifiez maintenant tout votre code pour vous assurer qu'il n'y a plus de bug. En particulier, assurez-vous que, lorsque l'on ferme le client ou que la communication avec le serveur est interrompue, votre application se termine en fermant proprement les sockets qu'elle a ouvertes (lancez un netstat -tau dans une console pour vous en assurer).



Exercice 4

Supprimez maintenant le « open Aide_client » que vous avez écrit en début de fichier. Votre programme ne fonctionne plus car la fonction nanosleep n'est plus connue d'Ocaml. Pour pallier cela, insérez la ligne suivante dans votre fichier ml :
external nanosleep : float -> unit = "ocamlpilot_nanosleep";;
Cette ligne indique à Ocaml le type de la fonction nanosleep et lui précise que c'est en fait la fonction C « ocamlpilot_nanosleep » qu'il faut exécuter lorsque l'on appelle nanosleep. Recompilez dans xemacs : maintenant tout devrait fonctionner.



Exercice 5

(fin de la partie client) Soumettez le source (commenté) de votre client sur l'URL:
http://pageperso.lis-lab.fr/~gonzales/teaching/li260-2005fev/soumission.php


Note: pour obtenir un exécutable de votre client, et en supposant que le source de ce dernier s'appelle client.ml, vous pouvez utiliser les commandes suivantes:
ocamlc -c jeu.mli
gcc -I /usr/lib/ocaml/ -c ocamlpilot_stub.c
ocamlc -custom -o ocamlpilot unix.cma graphics.cma ocamlpilot_stub.o client.ml
Vous pouvez aussi utiliser le Makefile qui vous est fourni dans la rubrique « ressources » de la page ouèbe du module ou bien dans le répertoire /Infos/lmd/2004/licence/ue/li260-2005fev/g7/ml et taper « make ocamlpilot ». Le Makefile suppose que votre fichier s'appelle client.ml.

Cela dit, je rappelle que ce sont les SOURCES que vous devez transmettre via l'URL ci-dessus.



Licence 2ème année - Projet OcamlPilot