Une bataille navale en ligne… Et en console !

Bonjour à tous !

Et un nouveau projet pour 2015, un ! Bon, il s’agit d’un projet scolaire (toujours à l’IG2I de Lens), mais ça ne le rend pas moins passionnant ! Le but de ce projet est de mettre en pratique les connaissances acquises dans le module Middleware et Client-Serveur, et donc, vous l’aurez deviné, de réaliser un logiciel proposant des fonctionnalités réseau.

Alors ni une, ni deux, je me lance avec mon binôme Adrien Deprez à l’assaut d’une bataille navale !

Présentation du projet

Fonctionnalités

Alors, une bataille navale, c’est bien beau, mais qu’est-ce que notre application fait réellement ? En plus d’implémenter une interface en ligne de commande avec la fameuse bibliothèque Ncurses, et un moteur de jeu que nous essayons de rendre le plus intuitif possible (et qui inclura probablement un chat), le jeu proposera d’héberger des parties en réseau et d’en rejoindre des existantes.

À l'attaque !
À l’attaque !

Le tout est programmé en C et distribué sous licence GNU GPL, ce qui signifie que vous aurez tout le loisir de télécharger le jeu, d’aller jeter un œil aux codes source, et même, si l’envie vous en prend, de les bricoler à votre sauce. Dès qu’on aura terminé, bien entendu. 😛

État actuel

Ne vous emballez pas, le jeu est encore loin d’être terminé, quoiqu’il commence à ressembler à quelque chose. Les interfaces Ncurses ne sont pas encore réalisées et les adresses IP sont à régler à chaque exécution, mais le noyau de jeu est fonctionnel. Voici d’ailleurs rien que pour vous et en exclusivité mondiale une capture d’écran d’une partie en cours. 🙂

C'est plutôt mal parti pour moi ! :(
C’est plutôt mal parti pour moi ! 🙁

Sur cette image, la grille du haut représente mes bateaux (dont l’un a déjà été coulé, en F1 et F2), et la grille du bas représente ce que je sais de la grille de mon adversaire. Comme vous l’aurez (je pense) compris, les ‘X’ représentent les tirs qui ont fait mouche e les ‘~’ ceux qui ont fini à l’eau. On voit également d’après le message en bas de l’écran que c’est à mon adversaire de faire feu.

Comment ça marche ?

Déroulement d’une partie

Je n’ai pas envie de vous ennuyer avec un cours de programmation, mais j’ai quand même envie de présenter un peu ce qui se passe en coulisses pendant que vous bombardez votre ennemi.

Une fois les deux joueurs connectés ensemble et que la partie commence, ils commencent à positionner leur flotte. Le joueur qui a rejoint la partie envoie à l’hôte les coordonnées de ses bateaux. Mais ce n’est pas pour tricher, puisque le joueur hébergeant la partie ne les voit pas, c’est simplement pour que l’hôte puisse vérifier si un tir a touché ou non.

Une fois les bateaux en place, les belligérants ouvrent le feu, en commençant par l’hôte. Une fois les coordonnées de son tir établies, le jeu vérifie s’il touche un navire adverse ou non et l’affiche à l’écran. Il envoie également à l’autre joueur à rapport signalant que son ennemi a tiré et si sa salve a été efficace on non. Puis c’est au tour de l’autre joueur de riposter, et ainsi de suite jusqu’à ce que l’une des deux flottes soit intégralement envoyée par le fond, auquel cas la partie est finie et l’un des deux joueurs déclaré vainqueur.

Présentation des futures interfaces

Vous avez déjà eu un avant-goût avec l’interface que nous avons réalisée pour tester le jeu, mais je vous propose de jeter un œil à ce à quoi ressemblera l’écran de jeu lorsque nous aurons mis en place les interfaces Ncurses.

Screenshot from 2015-01-16 18:46:35

On retrouve les deux fameuses grilles de la bataille navale, accommodées de quelques options supplémentaires : un log affichant l’historique des tirs émis par l’un et l’autre des joueurs, et un chat pour qu’Adrien reconnaisse que je suis le meilleur.

Mais bon, on n’en est pas encore là.

Planning du projet

S’agissant d’un projet pour l’école, il y a bien évidemment une deadline, et elle est au 31 janvier. Donc d’ici là, nous aurons un jeu pleinement fonctionnel. Cependant, je doute que les interfaces Ncurses soient finies d’ici là, donc nous rendrons le projet sans, mais Adrien et moi continuerons à avancer sur le projet à titre personnel et nous implémenterons ces interfaces.

Nous nous sommes fixés la date du 31 février 2015 pour finir les interfaces, ce qui signifie que de noumbreuses choses vont encore arriver et que le dépôt sera toujours actif, alors gardez l’œil ouvert !

Pour aller plus loin

Si le jeu vous intéresse, que ce soit pour l’essayer ou simplement pour jeter un œil au code, rendez-vous sur le dépôt GitHub du projet. Et bien évidemment, si vous avez des remarques, des questions ou des histoires drôles à raconter, les commentaires sont là pour ça !

Une pensée sur “Une bataille navale en ligne… Et en console !”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *