Stap 2: O schets
Código
/ / Vamos Comecar definindo como Studios Notas parágrafo OS
# Definieer NOTE_D4 294 # Definieer NOTE_G4 392 # Definieer NOTE_A4 440 # Definieer NOTE_A5 880
/ / Criando o conjunto de para OS 4 Studios parágrafo sortear hum som int toneladas [4] = {NOTE_A5, NOTE_A4, NOTE_G4, NOTE_D4}; / / Nossa Sequência de aten 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 Seqüência, E used enquanto uma Seqüência / / ESTA Sendo reproduzida. int passo_atual_na_sequencia = 0; / ** Indica o pino de and, 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. Een Ordem destas * Sequências ook estao bedriegen een 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 lus. int botao_pressionado = 0; / / Vlag 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; ik < = 3; ik + +) {pinMode (pinosLeds [i], OUTPUT);} / / Definindo o Modo dos pinos dos BOTOES Como Entrada. voor (int i = 0; ik < = 3; ik + +) {pinMode (pinosBotoes [i], INPUT);} / / Definindo o Modo fazer pino de and Como Saida. pinMode (pinoAudio, OUTPUT); / / Inicializando o acaso atraves de UMA Leitura da porta analógica. . / / Deze 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. Als (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 als E een Primeira Rodada. Als (rodada_atual == 0) {tocarSomDeInicio (); vertraging (500);} / / Chama een Foreign dat inicializa een Próxima Rodada. proximaRodada ();
/ / Reproduz een Atual Seqüência. reproduzirSequencia (); / / Aguarda OS BOTOES Serem pressionados Pelo Jogador. aguardarJogador ();
/ / Aguarda 1 Segundo Entre CADA Jogada. vertraging (1000); } / / Sorteia hum novo item de e groepen nb Seqüência. Vazio proximaRodada () {int numero_sorteado = willekeurige (0, 4) sequencia [rodada_atual + +] = numero_sorteado;} / / een serviços memorizada Seqüência para Reproduz. Vazio reproduzirSequencia () {for (int i = 0; ik < rodada_atual; ik + +) {tom (pinoAudio, toneladas [sequencia [i]]); digitalWrite (pinosLeds [sequencia [i]], hoge) vertraging (500); noTone (pinoAudio), digitalWrite (pinosLeds [sequencia [i]], laag); atraso (100); NoTone} (pinoAudio); }
/ / Aguarda o the iniciar SUA Jogada. Vazio aguardarJogador () {for (int i = 0; ik < rodada_atual; ik + +) {aguardarJogada (); verificarJogada ();
Als (perdeu_o_jogo) {onderbreking; Passo_atual_na_sequencia} + +; }
/ / Redefinir um Variável parágrafo 0 passo_atual_na_sequencia 0 =.; }
anular aguardarJogada () {jogada_efetuada Boole = vals; terwijl (! jogada_efetuada) {voor (int ik = 0; ik < = 3; ik + +) {als ((digitalRead pinosBotoes [i]) == HIGH) {}
/ / Dizendo quali FOI o elkadrey pressionado. botao_pressionado = i;
Tom (pinoAudio, toneladas [i]); digitalWrite (pinosLeds [i], hoge); vertraging (300); digitalWrite (pinosLeds [i], baixo); noTone (pinoAudio); jogada_efetuada = true; }}
atraso (10); }}
anular verificarJogada () {als (sequencia [passo_atual_na_sequencia]! = botao_pressionado) {/ / GAME OVER.
for (int i = 0; ik < = 3; ik + +) {tom (pinoAudio, toneladas [i]); digitalWrite (pinosLeds [i], hoge); atraso (200); digitalWrite (pinosLeds [i], baixo); noTone (pinoAudio);} Tom (pinoAudio, toneladas [3]); voor (int ik = 0; ik < = 3; ik + +) {digitalWrite (pinosLeds [0], hoge); digitalWrite (pinosLeds [1], hoge); digitalWrite (pinosLeds [2], hoge); digitalWrite (pinosLeds [3], hoge); atraso (100); digitalWrite (pinosLeds [0], laag); digitalWrite (pinosLeds [1], laag); digitalWrite (pinosLeds [2], laag); digitalWrite (pinosLeds [3], laag); atraso (100);}
noTone (pinoAudio); perdeu_o_jogo = true; }} Vazio tocarSomDeInicio () {tom (pinoAudio, toneladas [0]); digitalWrite (pinosLeds [0], hoge) digitalWrite (pinosLeds [1], hoge); digitalWrite (pinosLeds [2], hoge); digitalWrite (pinosLeds [3], hoge); vertraging (500); digitalWrite (pinosLeds [0], LOW); digitalWrite (pinosLeds [1], LOW); digitalWrite (pinosLeds [2], laag); digitalWrite (pinosLeds [3], LOW); vertraging (500); noTone (pinoAudio);}