Battleship

Envoyé par le 29 Jan 2013

Dans le cadre de l’intersemestre 2013 au FabLab, Samy TAFASCA et Albin TISSOT ont réalisé un projet du nom de « Battleship ». Le but était de concevoir puis de construire un dispositif permettant de jouer au célèbre jeu de la bataille navale à partir d’un Arduino.

Le système actuel est un dérivé de la bataille navale, il se joue seul. A chaque coup, le joueur sélectionne une case parmi 100 sur l’écran de gauche et sur l’écran de droite, celui-ci voit si le bateau ennemi est touché ou non signalé par un clignotement rouge/vert de la case.

Les règles sont les suivantes: le joueur dispose de 60 coups pour trouver 5 bateaux non indiqués, sur l’écran de droite. Chaque bateau fait entre 2 et 4 cases et est pris aléatoirement à chaque partie parmi une liste de 15 bateaux prédéfinis.

 

Matériel

L’appareil se compose d’un Arduino, d’une matrice Leds(64*16) qui fait office d’écran, d’un buzzer pour ajouter différents sons en cas de défaite/victoire, et enfin de trois boutons poussoirs. Deux de ces derniers permettent de déplacer le curseur sur l’écran de gauche et le troisième définit la validation.

 

Programmation

Concernant le programme, il a fallu écrire environ 300 lignes de code en langage C sur Arduino. La démarche suivie est la même que celle d’une conception algorithmique, une analyse descendante a été adoptée pour résoudre le problème. En effet, dans un premier temps, il a fallu repérer les différentes actions élémentaires qui pourraient aider à développer la solution complète, ensuite il a fallu établir le code des fonctions permettant la réalisation de ces actions, puis finalement regrouper le tout en un seul bloc « main() » qui exécute la tache souhaitée. Parmi les plus importantes fonctions,il y a la fonction «RefreshScreen» qui permet après chaque action, de rafraîchir l’écran LED tout en prenant en compte l’action exécutée. Une autre fonction intéressante est la fonction « initialiser », qui permet au début de chaque partie de positionner de manière aléatoire, un nombre spécifique de bateaux sur une nouvelle carte pour que l’utilisateur puisse jouer.

En terme de complexité, ce code n’est pas le meilleur qui puisse exister. Mais le groupe a tenté de prendre en considération ce facteur en pensant à la façon la plus optimale pour écrire nos fonctions. A titre d’exemple, pour caractériser les bateaux prédéfinis et pour que le programme choisisse aléatoirement ceux qu’il va positionner sur la carte, une nouvelle structure appelée «bateau» a été employée, elle comprend les différentes variables permettant de distinguer chaque bateau des autres, à savoir la longueur et les différentes coordonnées des cases qu’il occupe !

Cependant, tout code peut être sujet de critiques, et il reste évidemment des choses à améliorer. Au niveau des options du jeu, et pour des raisons d’ergonomie, nous avons eu l’idée de faire défiler un « START » annonçant le début de la partie, ainsi qu’un « LOST » ou « WON » accompagnés de leurs tonalités respectives pour dire si oui ou non le joueur a remporté la victoire.

 

Améliorations possibles

Cela fut la première phase de la conception du projet. Quelques imprévus se sont ensuite révélés lors de l’exposition du jeu au centre vie quand des gens l’ont essayé. Ils ont fait part de remarques intéressantes qui pourraient très bien être des pistes d’amélioration. Par exemple, il aurait été bien de mettre un compteur sur la matrice LED qui afficherait le nombre de coups effectués afin que le joueur ait une idée de combien de coups il lui reste avant de perdre, parce que franchement compter des dizaines de points rouges à chaque fois , ça rend pas le jeu fun … Une autre idée serait de mettre quatre boutons poussoirs à la place de deux, cela permettrait d’améliorer la maniabilité du jeu et faciliter le déplacement dans la carte.

 

 

Le schéma suivant reprend le montage en intégralité:

schemaBattleship

 

Le code source est disponible sur le GitHub de Telecom Bretagne.

2 Commentaires

  1. Salut,

    Je suis vraiment intéressé par votre jeu de cuirassé. Je cherche à accéder au code du jeu sur le site « GitHub Telecom Bretagne ». Où le trouverai-je?

    Merci,
    Lenox

  2. Bonjour,
    Je suis vraiment intéressé par votre jeu de cuirassé. J’essaie d’accéder au code du jeu sur le site « GitHub Telecom Bretagne. » Où vais-je trouver?
    Je vous remercie,
    Lenox

Répondre à Lenox Annuler la réponse

Votre adresse e-mail ne sera pas publiée.