Table des matières:

Jeu de cuirassé Arduino : 3 étapes
Jeu de cuirassé Arduino : 3 étapes

Vidéo: Jeu de cuirassé Arduino : 3 étapes

Vidéo: Jeu de cuirassé Arduino : 3 étapes
Vidéo: Arduino #27: Comment créer une nouvelle bibliothèque en 3 étapes ? [TUTO] 2024, Novembre
Anonim
Jeu de Cuirassé Arduino
Jeu de Cuirassé Arduino

Je me souviens avoir joué à une version papier et crayon du Battleship Game quand j'étais enfant. En fait, il existe depuis la Première Guerre mondiale environ. J'avais également une variante «électronique» au début des années 1960 appelée «Sonar Sub Hunt» qui avait des lumières, des sons et des mines cachées. Selon les normes actuelles des jeux vidéo, Battleship est assez ennuyeux, mais je pensais en faire un de toute façon juste pour voir ce que les petits-enfants en pensaient. Après tout, le rétro peut parfois être cool.

Il y a des morceaux de ce projet qui seraient utiles ailleurs même si vous n'êtes pas intéressé à faire le jeu Battleship. Il possède une simple interface LCD 1602 à 4 bits qui comprend une routine pour définir un emplacement de caractère spécifique. Il existe également une interface pour décoder une matrice de commutation 4x4. Ces deux interfaces sont disponibles sous forme de fichiers d'inclusion séparés afin qu'elles soient facilement transportables. Le jeu propose également diverses routines d'effets sonores et un simple circuit amplificateur audio à un transistor.

Étape 1: Matériel

Matériel
Matériel
Matériel
Matériel

Le schéma présenté ici est pour un seul joueur, il faudrait donc créer deux unités. Les unités communiquent à l'aide d'une interface à 3 fils qui comprend les lignes UART TX et RX et un fil de terre. J'ai choisi d'utiliser une prise casque stéréo standard de 1/8 pouce et un câble standard avec des fiches mâles aux deux extrémités. Le RX d'un boîtier va au TX de l'autre boîtier et vice-versa. Vous pouvez le faire en échangeant les fils soudés à la prise casque à l'intérieur de la boîte ou en les échangeant sur la carte de circuit imprimé lorsque vous la construisez.

Le jeu classique était présenté sous forme de matrice, mais j'ai décidé de faire une implémentation simple en utilisant un écran LCD 1602 pour l'affichage. La première ligne montre l'emplacement des vaisseaux du joueur et les tirs de l'adversaire. La deuxième ligne montre les tirs du joueur et tous les coups sur les navires de l'adversaire. Cela fournit 16 emplacements possibles pour les navires. Le nombre de navires est défini dans le logiciel et j'ai choisi arbitrairement 5.

Les 16 emplacements des navires correspondent bien aux exigences du commutateur car ils permettent une matrice 4x4. Il existe des pads de commutateur matriciel 4x4 disponibles, mais j'ai choisi d'utiliser des commutateurs individuels sur une seule ligne pour correspondre à l'affichage linéaire. J'ai cependant câblé les commutateurs comme une matrice 4x4 afin que seules huit broches Arduino soient nécessaires. Reportez-vous au schéma de câblage de l'interrupteur et au schéma pour les connexions appropriées.

L'écran LCD est câblé pour une interface 4 bits. J'ai également ajouté une LED externe sur la broche D13 pour indiquer quel joueur doit tirer. Au départ, les joueurs décident qui tire le premier coup, puis le logiciel contrôle automatiquement les allers-retours du jeu.

Je voulais ajouter des effets sonores simples pour le tir, les explosions, le jeu prêt et le gagnant/perdant. J'ai essayé d'utiliser un simple buzzer piézo mais j'ai fini par utiliser un petit haut-parleur à la place. Le courant requis par le haut-parleur dépasse ce que l'Arduino peut gérer, un simple amplificateur à transistor a donc été ajouté. Le son n'est toujours pas génial mais c'est mieux qu'avec le buzzer. Mon haut-parleur est de 4 ohms, mais si vous en avez un de 8 ohms, changez la résistance dans le schéma de 39 ohms à 33 ohms. Si vous utilisez un buzzer piézo, vous devriez pouvoir le piloter directement à partir de la broche Arduino avec l'autre côté du buzzer connecté à la terre.

Un interrupteur de réinitialisation externe est également inclus et est câblé directement entre la terre et la broche de « réinitialisation » de l'Arduino. Cela permet de relancer le jeu.

Étape 2: Logiciel

Le logiciel a le fichier d'inclusion pour mon interface LCD et j'ai également créé un fichier d'inclusion pour le balayage de la matrice de commutation 4x4. L'initialisation invite le joueur à sélectionner les emplacements de ses navires, puis passe à l'état « Prêt ». Lorsque les deux joueurs sont prêts, l'un d'eux lance le jeu en appuyant sur un interrupteur.

L'emplacement du tir est transmis via l'UART à l'autre joueur et le résultat approprié est retransmis au joueur qui a tiré. Comme mentionné précédemment, une fois la première photo prise, le logiciel contrôle qui prend la photo suivante. Avant qu'un plan ne soit transmis, il est vérifié par rapport aux emplacements des plans précédents. Si cet emplacement a déjà été utilisé, la prise de vue ne sera pas transmise. La LED « My_Shot » détermine à qui revient le tour. Il y a aussi un son de tir généré pour une sélection valide et un son d'explosion si un navire est touché. Les effets sonores sont dérivés d'exemples trouvés en ligne avec des modifications pour s'adapter au jeu.

Une fois que les navires d'un adversaire ont tous été touchés, un message s'affiche sur chaque écran LCD - un comme le gagnant et un comme le perdant. Le message précise également que le jeu peut être relancé en appuyant sur le bouton de réinitialisation. Il existe également des effets sonores séparés pour le gagnant et le perdant.

Étape 3: Captures d'écran

Captures d'écran
Captures d'écran
Captures d'écran
Captures d'écran
Captures d'écran
Captures d'écran
Captures d'écran
Captures d'écran

Voici quelques captures d'écran du jeu. C'est tout pour ce post. Consultez mes autres Instructables et aussi mon site Web à l'adresse: www.boomerrules.wordpress.com

Conseillé: