Netsnake - jeu de serpent en réseau (nio : tcp / udp (unicast / multicast))

Description

Ceci est un jeu de serpent, qui peut se jouer seul ou en réseau.
Il y a plusieurs modes de jeu :
- être le dernier à rester vivant
- manger le plus de pommes
- manger le plus de pommes alors qu'elles sont toutes à l'écran au départ
- mode tron (les serpents grandissent tout le temps)

Il existe un type de jeu 'aventure', qui permet de jouer tout seul dans des niveaux de plus en plus dur.

Afin de rendre le jeu intéressant, même tout seul, des bots (joueurs virtuels) ont été créés. (Ils s'appuient sur une recherche de plus court chemin "A Star")

La partie réseau est très complète, et s'appuie sur les NIO :
- UDP (unicast ou multicast) pour récupérer la liste des jeux disponibles sur le serveur
- TCP pour la gestion des jeux. Une RFC a été mise dans l'archive pour expliquer le protocole utilisé.

Le sujet complet du projet peut être trouvé ici :
http://igm.univ-mlv.fr/~duris/RESEAU/JAVA/IR2/projetIR2JavaReseau20052006.html

Conclusion :


Bug connu : lorsque l'on a créé une partie, et que l'on change de niveaux, il arrive que les clients n'en soient pas informés, et restent en attente.
Ceci vient d'un problème réseau :
- lorsqu'une partie est finie, le serveur envoie à tout le monde une info "jeu terminé".
- parfois, les clients reçoivent APRES une trame que le serveur a envoyé avant.
- du coup, ils lisent cette info au lieu de récupérer la trame donnant la nouvelle map, et restent donc en attente.

Je n'ai malheureusement pas le temps de corriger celà. Ce projet restera dans l'état, j'en suis désolé :/

Sinon, la partie graphique a été réalisée grâce à une librairie d'un de nos enseignants :
http://www-igm.univ-mlv.fr/~jcervell/

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.