Combinamos o microcontrolador "infantil" e os jogos de tabuleiro

Eles me deram recentemente Micro: Bit. O que para ensinar crianças em idade escolar, da BBC e agora tem popularidade crescente (especialmente depois que os chineses prometeram tornar seu clone duas vezes mais barato). Eu mesmo conheço o Arduino, foi um dos pioneiros em nosso país que mostrou como cruzar o Arduino com o Scratch e esse cachecol ... no começo eu não estava interessado. Mas um pouco depois nasceu a ideia: mas não cruzá-la com jogos de tabuleiro?

Eu mesmo sou o autor do "desktop", seu fã. E a presença de um ambiente de programação bastante amigável (inicialmente o quadro é programado em Python e Java, mas há um ambiente de blocos com um simulador) me fez tentar implementar essa idéia.

Devo avisar você imediatamente - não sou programador! E isso é bom, já que até meu aluno do ensino fundamental e qualquer um de vocês pode repetir minha pesquisa. E torne-se um dispositivo "personalizado" que ajuda e simplifica a vida com jogos de tabuleiro.



O primeiro surgiu com a idéia de implementar dados D6 comuns (que são de 1 a 6). Mal disse o que fez. Executando o ambiente makecode.microbit.org, esbocei um programa simples que, quando você pressiona o botão A, gera um número aleatório de 1 a 6 e o ​​exibe na matriz de LEDs do dispositivo.

Para "decorar" o código, adicionei algumas fotos da "geração" do cubo e voila. Prepare um cubo eletrônico simples.



E se você precisar de um cubo D12? Geramos um número aleatório até 12. E D20? Até 20, é claro. Mas o problema é que apenas um dígito é colocado na "tela" e dois dígitos são rolados, mas apenas uma vez pelo comando para enviá-los para a matriz. O que fazer Eu tive que adicionar uma variável para armazenar o resultado, exibir ciclos e repetir o valor do último lançamento do osso pressionando o botão B.



Substituir o evento de pressionar um botão por uma leitura de "trepidação" (Micro: Bit possui um acelerômetro) pode tornar o processo de "arremesso" mais realista.

E se você precisar jogar dois dados? A tarefa se tornou mais interessante. Além disso, eu queria fazer dados como deveria com pontos. Felizmente, a matriz (tamanho 5 x 5) consiste em LEDs que estão longe o suficiente e, se você os acender mesmo nas proximidades, é possível distinguir facilmente onde "unidade" e "seis".

Agora eu estava fazendo "dados" para jogos como Monopoly e Colonializers (onde 2 dados são jogados) ou Machi Koro (onde um ou dois dados D6 devem ser lançados durante o jogo). Mas o problema surgiu ao exibir esses arremessos.

Como escrevi acima, a matriz está no Micro: Bit 5x5. Para exibir um cubo hexagonal regular, precisamos de LEDs 3x3.



Dois cubos também podem ser exibidos no centro, um após o outro, mas visualmente é ruim lê-los. Portanto, decidi exibir um cubo com um deslocamento no canto superior esquerdo e o segundo no canto inferior direito em um loop infinito até que outra ação seja executada.

Tendo descoberto que o comando while não funciona bem com a leitura de eventos de pressionamento de botão e a gravação de um sistema de muletas a partir de variáveis ​​e a verificação deles, obtive o resultado necessário. Pressionando o botão A, um cubo foi gerado, em B - dois dados, A + B desligou a tela e levou o sistema ao seu estado inicial.

Também decidi “estabelecer” o gerador de números aleatórios usando a fórmula simples dado = rodada (aleatória (de 50 a 649) / 100). "Cubos" começaram a cair um pouco mais realistas.

O "código do monstro" final ficou assim (o código para gerar diretamente os gráficos dos cubos não se encaixava, pois fica muito abaixo).



E o resultado do trabalho pode ser visto no vídeo:


Já algo interessante. Além disso, devido a uma mudança nos cantos, até 5 cubos podem ser exibidos sequencialmente e podem ser facilmente seqüenciais.

Posso fazer outra coisa? No meu novo jogo de tabuleiro "Parobot Card League", os dados serão usados ​​para duas coisas: determinar o bônus para os jogadores na rodada atual e determinar a equipe para robôs de bots no campo de jogo. Portanto, foi decidido implementar o seguinte:

  1. Contador de ronda (existem 8 no total)
  2. Determinação do bônus na rodada atual (botão A)
  3. Definição de comando bot (botão B)
  4. Avança para a próxima rodada (pressionar repetidamente o botão A)

Eu implementei cubos "personalizados", exibindo imediatamente na tela o símbolo do cartão de bônus que caiu (ou N, se não estiver) e o infográfico das equipes de Bot - a flecha de movimento (para frente, para trás, vira à esquerda e à direita, acerta e defesa).



Como o programa funciona é visível no vídeo:


Como o download para o Micro: Bit é simples (basta conectá-lo via micro-USB a um computador e transferir o arquivo hexadecimal do programa para a raiz do disco que aparece), criei uma página no meu site na qual desejo colocar "predefinições" prontas para vários jogos de tabuleiro: www.simplerobot.org/elektronika

Lá você pode encontrar arquivos hexadecimais prontos e um link para os códigos-fonte. Use na saúde. Você pode comprar uma placa no mesmo Amperka ou "dos chineses" no Ali.

O que mais você quer fazer? Em primeiro lugar, "desate" a placa da energia externa, parafusando a blindagem das baterias.



Em segundo lugar, tente implementar com base no quadro “automático” para jogar sozinho com um oponente do computador e use a bússola e o acelerômetro integrados.

Se você criar seu próprio programa personalizado para um jogo de tabuleiro e me enviar, terei prazer em publicá-lo no site. Ou posso fazê-lo a seu pedido (com o melhor de minhas habilidades e limitações do fórum).

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


All Articles