Nous combinons le microcontrôleur "enfants" et les jeux de société

Ils m'ont récemment donné Micro: Bit. Ce qui, pour enseigner aux écoliers, de la BBC et a maintenant une popularité croissante (surtout après que les Chinois ont promis de rendre son clone environ deux fois moins cher). Je connais moi-même Arduino, a été l'un des pionniers dans notre pays qui a montré comment traverser Arduino avec Scratch et cette écharpe ... au début je n'étais pas intéressé. Mais un peu plus tard l'idée est née: mais pas pour la croiser avec les jeux de société?

Je suis moi-même l'auteur du "desktop", leur fan. Et la présence d'un environnement de programmation assez convivial (au départ la carte est programmée en Python et Java, mais il y a un environnement de bloc avec un simulateur) m'a fait essayer d'implémenter cette idée.

Je dois vous avertir tout de suite - je ne suis pas programmeur! Et c'est bien, puisque même mon élève du primaire et n'importe lequel d'entre vous peuvent répéter mes recherches. Et faites-vous un appareil «personnalisé» qui aide et simplifie la vie avec les jeux de société.



Le premier est venu avec l'idée d'implémenter des dés D6 ordinaires (qui sont de 1 à 6). Aussitôt dit, aussitôt fait. En exécutant l' environnement makecode.microbit.org, j'ai esquissé un programme simple qui, lorsque vous appuyez sur le bouton A, génère un nombre aléatoire de 1 à 6 et l'affiche sur la matrice LED de l'appareil.

Pour "décorer" le code, j'ai ajouté quelques photos de la "génération" du cube et le tour est joué. Préparez un simple cube électronique.



Et si vous avez besoin d'un cube D12? Nous générons un nombre aléatoire jusqu'à 12. Et D20? Jusqu'à 20 bien sûr. Mais le problème est qu'un seul chiffre est placé sur "l'écran" et deux chiffres défilent, mais une seule fois par la commande pour les sortir vers la matrice. Que faire J'ai dû ajouter une variable pour stocker le résultat, afficher les cycles et répéter la valeur du dernier lancer osseux en appuyant sur le bouton B.



Remplacer l'événement d'appuyer sur le bouton par la lecture de «secouer» (Micro: Bit a un accéléromètre) peut rendre le processus de «lancer» plus réaliste.

Et si vous devez lancer deux dés? La tâche est devenue plus intéressante. De plus, je voulais faire des dés comme il se doit avec des points. Heureusement, la matrice (5x5) est constituée de LED suffisamment éloignées et si vous les allumez même à proximité, vous pouvez facilement distinguer où «unité» et où «six».

Maintenant, je faisais des «cubes de jeu» pour des jeux comme Monopoly et Colonializers (où ils lancent 2 dés) ou Machi Koro (où vous devez lancer un ou deux dés D6 pendant le jeu). Mais le problème s'est posé lors de l'affichage de ces lancers.

Comme je l'ai écrit ci-dessus, la matrice est en Micro: Bit 5x5. Pour afficher un cube hexadécimal ordinaire, nous avons besoin de LED 3x3.



Deux cubes peuvent également être affichés au centre l'un après l'autre, mais visuellement, il est mauvais de les lire. Par conséquent, j'ai décidé d'afficher un cube avec un décalage dans le coin supérieur gauche et le second dans le coin inférieur droit dans une boucle infinie jusqu'à ce qu'une autre action soit effectuée.

Ayant découvert que la commande while ne fonctionne pas bien avec la lecture des événements de pression de bouton et l'écriture d'un système de béquille à partir de variables et leur vérification, j'ai obtenu le résultat dont j'ai besoin. En appuyant sur le bouton A, un cube a été généré, sur B - deux dés, A + B a éteint l'écran et a ramené le système à son état initial.

J'ai également décidé de "jouer" le générateur de nombres aléatoires en utilisant la formule simple dés = rond (aléatoire (de 50 à 649) / 100). "Cubes" a commencé à tomber un peu plus réaliste.

Le "code monstre" final s'est avéré comme ceci (le code pour sortir directement les graphiques des cubes ne convenait pas, car il descend très loin).



Et le résultat du travail peut être regardé dans la vidéo:


Déjà quelque chose d'intéressant. De plus, en raison du décalage dans les coins, jusqu'à 5 cubes peuvent être affichés séquentiellement et ils peuvent être facilement assez séquentiellement.

Puis-je faire autre chose? Dans mon nouveau jeu de société "Parobot Card League", les dés seront utilisés pour deux choses: déterminer le bonus pour les joueurs du tour en cours et déterminer l'équipe pour les robots robots sur le terrain de jeu. Par conséquent, il a été décidé de mettre en œuvre les éléments suivants:

  1. Compteur rond (il y en a 8 au total)
  2. Détermination du bonus dans le tour en cours (bouton A)
  3. Définition de la commande Bot (bouton B)
  4. Avance au tour suivant (appui répété sur le bouton A)

J'ai implémenté des cubes «personnalisés», affichant immédiatement à l'écran le symbole de la carte bonus qui est tombée (ou N, si ce n'est pas le cas) et l'infographie des équipes de Bot - la flèche de mouvement (avant, arrière, tourne à gauche et à droite, touche et défense).



Le fonctionnement du programme est visible sur la vidéo:


Comme le téléchargement sur Micro: Bit est simple (il suffit de le connecter via micro-USB à un ordinateur et de transférer le fichier hexadécimal du programme à la racine du disque qui apparaît), j'ai créé une page sur mon site Web où je veux placer des «préréglages» prêts à l'emploi pour divers jeux de société: www.simplerobot.org/elektronika

Vous y trouverez à la fois des fichiers hex prêts à l'emploi et un lien vers les codes source. Utilisation sur la santé. Vous pouvez acheter une planche dans le même Amperka ou "des Chinois" sur Ali.

Que voulez-vous faire d'autre? Tout d'abord, «détachez» la carte de l'alimentation externe en y vissant le blindage des batteries.



Deuxièmement, essayez de mettre en œuvre sur la base de la carte «automat» pour jouer seul avec un adversaire informatique et utilisez la boussole et l'accéléromètre intégrés.

Si vous créez votre propre programme personnalisé pour un jeu de société et que vous me l'envoyez, je le posterai volontiers sur le site. Ou je peux le faire à votre demande (au mieux de mes capacités et des limites du plateau).

Source: https://habr.com/ru/post/fr479794/


All Articles