Faire un jeu de ciseaux de papier de roche avec un appareil compatible Arduino / Boing Boing | shoppingmaroc.net


Cet été, j'ai travaillé comme stagiaire dans une société appelée Switch Science à Tokyo, au Japon. J'écris sur mon expérience ici sous la forme d'articles de blog, et vous pouvez trouver mon premier post ici .

Jeudi dernier, on m'a donné une caméra thermique pour travailler avec mon M5Stack . Mon but était de les connecter ensemble et d'afficher les données thermiques sous la forme d'une image sur l'écran du M5Stack. La caméra thermique a été appelée MLX90640 par Melexis. Après avoir brièvement lu à ce sujet, je savais que je savais où connecter les fils et quelle adresse I2C utiliser, mais j'ai rapidement réalisé que la taille des broches de la caméra thermique était trop petite pour être connectée aux broches des fils. Bien que je puisse les brancher les uns aux autres, la connexion ne fonctionnerait correctement que la moitié du temps. Donc, mon collègue Kazunori m'a aidé en coupant l'extrémité des fils et en les soudant directement aux épingles de la caméra. Il a semblé se connecter bien, et j'ai continué à essayer de comprendre comment afficher les données de celui-ci.

Puis, lundi matin, l'appareil photo a soudainement cessé de se connecter. J'ai passé quelques heures à essayer de comprendre tout cela avant de demander de l'aide à Kazu. Il a suggéré que nous essayions de connecter un appareil photo différent, mais pas de cigare. Nous avons également essayé une autre esquisse Arduino réalisée par une personne différente, mais cela n'a pas fonctionné non plus. Finalement, nous avons essayé d'utiliser un tout nouveau M5Stack, et il s'est connecté!

Mais quelques minutes plus tard, il a cessé de se connecter à nouveau.

Étant donné que cette question avait déjà pris une journée de travail complète et étant assez incohérente, j'ai décidé de quitter le projet et de commencer quelque chose de nouveau.

Mardi, je me suis rendu au bureau pour me demander travailler sur. J'ai ouvert mon sac à dos pour attraper mes affaires, et j'ai vu mon ancien M5Stack et mon nouveau lundi. Cela m'a donné l'idée de faire un jeu impliquant les deux M5Stacks. J'ai décidé de créer un jeu simple Rock Paper Scissors où les joueurs choisiraient chacun leur option sur leur M5Stack et ensuite l'écran afficherait qui a gagné. À vrai dire, j'étais un peu arrogant et je pensais pouvoir terminer ce projet en une seule journée de travail, mais ce n'était pas le cas.

J'ai travaillé avec mon M5Stack et le port série de mon ordinateur pour simuler le M5Stack de l'autre joueur parce que c'était plus facile que de télécharger continuellement du nouveau code, débrancher le M5Stack, le télécharger sur le second M5Stack, puis le brancher l'un à l'autre. Je préfère l'exécuter pendant qu'il était encore connecté à mon ordinateur, puis simuler l'autre M5Stack manuellement sur le port série d'Arduino. Par conséquent, à la fin de la journée, quand je pensais que mon jeu fonctionnait bien, j'étais un peu surpris de voir que lorsque je téléchargeais le code sur les deux appareils et les jouais les uns contre les autres, c'était un désordre absolu.

Je ne peux honnêtement pas décrire l'erreur qui a empêché mon jeu de fonctionner, car je pense qu'il y en avait beaucoup. J'étais pour le moins débordé, et le lendemain je n'étais pas très motivé pour comprendre cela. J'ai un peu travaillé, mais j'étais fatigué et ça s'est passé lentement. Au moins je l'ai eu de ressembler à un mème genre d'être cohérent, bien que toujours pas ce que je voulais. Certaines valeurs persisteraient même après la fin du tour et toutes les variables étaient censées être réinitialisées, mais rien n'était cohérent. Par exemple, vous pouvez parfois choisir du roc, du papier ou des ciseaux, et cela vous dira si vous avez gagné ou perdu sans que l'adversaire n'ait encore choisi son choix. D'autres fois, le statut de l'adversaire se lirait comme "PRÊT" depuis le début du tour (il devrait seulement se tourner vers "PRÊT" après que l'adversaire ait fait son choix), puis quand vous choisiriez, il continuerait à dire "PRÊT" au lieu de révéler le choix de l'adversaire.

Puis, ce matin, j'ai décidé que j'allais finir de faire ce jeu avant l'heure du déjeuner. J'ai fait pas mal de choses, mais à la fin, l'astuce consistait à créer un "moniteur de valeurs" et à l'ajouter à ma fonction de réinitialisation avant / après chaque tour.

J'étais enfin capable de voir que l'entier «oppChoice» (si l'autre joueur a choisi le rock, le papier ou les ciseaux) continuerait de changer les valeurs entre votre choix et le choix des autres joueurs après le premier tour, même lorsque la fonction de réinitialisation est jouée. C'était parce que l'entrée série ("mailbox [0]") continuait à lire ces valeurs quand elle n'aurait pas dû. J'ai finalement été capable de reconnaître et de résoudre ce problème (il faudrait encore quelques paragraphes pour expliquer, et je vais vous sauver cette catastrophe) et le jeu a enfin FONCTIONNÉ! (Voir la photo en haut de cet article.)

Je ne dis pas que c'est parfait, car le joueur doit maintenir son choix pendant une seconde pour qu'il s'enregistre et les résultats ne sont pas bien centrés, mais je vais continuer à réparer ces questions et obtenir mon projet au meilleur état dans lequel il peut être, même si ce n'est que Rock Paper Scissors.

Je continuerai à poster sur mon stage dans un proche avenir! Merci d'être resté.

<! –

janefrauenfelder

Jane Frauenfelder conçoit un jeu d'aventure 8bit. Si vous êtes intéressé à l'aider à la développer, contactez son père, Mark .

->


Arduino Maroc
Acheter Arduino ICI

Source

Laisser un commentaire

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