Introduction: Memory Game - Genius

Picture of Memory Game - Genius

Para QUEM Localidade: Não lembra, Genius FOI O Primeiro Brinquedo Eletrônico vendido no Brasil e fez Muito Sucesso na Década de 80 era Ele. Hum Jogo da Memória Opaco gerava UMA Sequência aleatória com 4 Teclas Coloridas ea CADA acerto, adicionava UMA nova cor AO da Sequência última Para Aumentar o do Nível de dificuldade.


Materiais Utilizado:
Arduino Uno Cabo USB A par B protoboard 830 Chave Tactil Resistor 10k Buzzer LED RGB LED Verde LED Amarelo Vermelho LED Alguns Jumpers

Step 1: Montagem

Picture of Montagem

Siga o exemplo acima utilizando as seguintes peças.

  • Arduino Uno
  • Cabo USB A par B
  • Protoboard 830
  • Chave táctil Resistores 10k
  • Buzzer
  • LED RGB
  • LED Verde
  • LED Amarelo
  • LED Vermelho
  • Alguns Jumpers

Step 2: O Sketch

Picture of O Sketch


Código

/ / Vamos Comecar definindo como filhos Notas parágrafo OS

# Define NOTE_D4 294 # define NOTE_G4 392 # define NOTE_A4 440 # define NOTE_A5 880

/ / Criando o conjunto de para OS 4 filhos parágrafo sortear hum som int toneladas [4] = {NOTE_A5, NOTE_A4, NOTE_G4, NOTE_D4}; / / Nossa Sequência de ATE 100 itens Vai Comecar Vazia. int sequencia [100] = {}; / / Indica uma Rodada Atual Que o Jogo se Encontra. int rodada_atual = 0; / / Indica o Passo Atual Dentro da Sequência, E USADO enquanto uma Sequência / / ESTA Sendo reproduzida. int passo_atual_na_sequencia = 0; / ** Indica o pino de áudio, leds e BOTOES. * Os pinos de leds e BOTOES estao los Ordem, Relacionados uns EAo OUTROS, OU SEJA *, O Primeiro levou ESTA AO relacionado Primeiro Botão. A Ordem destas * Sequências also estao relacionadas a Ordem dos toneladas. * / Int pinoAudio = 6; int pinosLeds [4] = {8, 9, 10, 11}; int pinosBotoes [4] = {2, 3, 4, 5};

/ / Indica se hum Botão FOI pressionado Durante o diretor loop. int botao_pressionado = 0; / / Flag indicando se o Jogo acabou. int perdeu_o_jogo = false;

void setup () {

/ / Definindo o Modo dos pinos dos Leds Como Saida. for (int i = 0; i <= 3; i + +) {pinMode (pinosLeds [i], OUTPUT); } / / Definindo o Modo dos pinos dos BOTOES Como Entrada. for (int i = 0; i <= 3; i + +) {pinMode (pinosBotoes [i], INPUT); } / / Definindo o Modo fazer pino de Áudio Como Saida. pinMode (pinoAudio, OUTPUT); / / Inicializando o acaso atraves de UMA Leitura da porta analógica. . / / This Leitura gera hum valor Variável Entre 0 e 1.023 randomSeed (analogRead (0)); }

void loop () {

/ / Se Perdeu o Jogo reinicializamos Todas como Variáveis. if (perdeu_o_jogo) {int sequencia [100] = {}; rodada_atual = 0; passo_atual_na_sequencia = 0; perdeu_o_jogo = false; }

/ / Toca hum som de inicio parágrafo anúnicar Que o Jogo ESTA começando when E a Primeira Rodada. if (rodada_atual == 0) {tocarSomDeInicio (); delay (500); } / / Chama a função that inicializa a Próxima Rodada. proximaRodada ();

/ / Reproduz a Atual Sequência. reproduzirSequencia (); / / Aguarda OS BOTOES Serem pressionados Pelo Jogador. aguardarJogador ();

/ / Aguarda 1 Segundo Entre CADA Jogada. delay (1000); } / / Sorteia hum novo item de e adiciona na Sequência. vazio proximaRodada () {int numero_sorteado = random (0, 4); sequencia [rodada_atual + +] = numero_sorteado; } / / Reproduz a serviços memorizada Sequência para. vazio reproduzirSequencia () {for (int i = 0; i <rodada_atual; i + +) {tom (pinoAudio, toneladas [sequencia [i]]); digitalWrite (pinosLeds [sequencia [i]], HIGH); delay (500); noTone (pinoAudio); digitalWrite (pinosLeds [sequencia [i]], LOW); atraso (100); NoTone} (pinoAudio); }

/ / Aguarda o Jogador iniciar SUA Jogada. vazio aguardarJogador () {for (int i = 0; i <rodada_atual; i + +) {aguardarJogada (); verificarJogada ();

if (perdeu_o_jogo) {break; Passo_atual_na_sequencia} + +; }

/ / Redefinir um Variável parágrafo 0 passo_atual_na_sequencia = 0.; }

anular aguardarJogada () {jogada_efetuada boolean = false; while (! jogada_efetuada) {for (int i = 0; i <= 3; i + +) {if ((digitalRead pinosBotoes [i]) == HIGH) {

/ / Dizendo quali FOI o botao pressionado. botao_pressionado = i;

tom (pinoAudio, toneladas [i]); digitalWrite (pinosLeds [i], HIGH); delay (300); digitalWrite (pinosLeds [i], baixo); noTone (pinoAudio); jogada_efetuada = true; }}

atraso (10); }}

anular verificarJogada () {if (sequencia [passo_atual_na_sequencia]! = botao_pressionado) {/ / GAME OVER.

for (int i = 0; i <= 3; i + +) {tom (pinoAudio, toneladas [i]); digitalWrite (pinosLeds [i], HIGH); atraso (200); digitalWrite (pinosLeds [i], baixo); noTone (pinoAudio); } Tom (pinoAudio, toneladas [3]); for (int i = 0; i <= 3; i + +) {digitalWrite (pinosLeds [0], HIGH); digitalWrite (pinosLeds [1], HIGH); digitalWrite (pinosLeds [2], HIGH); digitalWrite (pinosLeds [3], HIGH); atraso (100); digitalWrite (pinosLeds [0], LOW); digitalWrite (pinosLeds [1], LOW); digitalWrite (pinosLeds [2], LOW); digitalWrite (pinosLeds [3], LOW); atraso (100); }

noTone (pinoAudio); perdeu_o_jogo = true; }} Vazio tocarSomDeInicio () {tom (pinoAudio, toneladas [0]); digitalWrite (pinosLeds [0], HIGH); digitalWrite (pinosLeds [1], HIGH); digitalWrite (pinosLeds [2], HIGH); digitalWrite (pinosLeds [3], HIGH); delay (500); digitalWrite (pinosLeds [0], LOW); digitalWrite (pinosLeds [1], LOW); digitalWrite (pinosLeds [2], LOW); digitalWrite (pinosLeds [3], LOW); delay (500); noTone (pinoAudio); }

Comments

guilhermeb37 (author)2016-05-24

Porém a eletrônica está mais otimizada do que nos outros projetos que vi

guilhermeb37 (author)2016-05-24

Código todo bugado.

About This Instructable

2,273views

6favorites

License:

More by GabrielMartins:Memory Game - Genius
Add instructable to: