Étape 2: O Sketch
Código
/ / Vamos Comecar definindo como filhos Notas parágrafo OS
# Définir NOTE_D4 294 # define 392 NOTE_G4 # define 440 NOTE_A4 # define NOTE_A5 880
/ / Preencher o conjunto de para 4 OS filhos parágrafo sortear hum som int toneladas [4] = {NOTE_A5, NOTE_A4, NOTE_G4, NOTE_D4} ; / / De Nossa Sequência mangé 100 itens Vai Comecar Vazia. int sequencia [100] = {} ; / / Indica uma reorientation 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 *, levou O Primeiro AO ESTA relacionado Primeiro Botão. Un destas Ordem * Sequências aussi 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 boucle de diretor pressionado Durante o Botão FOI. int botao_pressionado = 0 ; / / Drapeau indicando se o Jogo acabou. int perdeu_o_jogo = false ;
annuler le programme d’installation () {}
/ / Definindo dos Leds Como Saida du dos pinos du o Modo. pour (int i = 0; j’ai < = 3; J’ai + +) {pinMode (sortie pinosLeds [i]);} / / Definindo dos BOTOES Como Entrada du dos pinos du o Modo. pour (int i = 0; j’ai < = 3; J’ai + +) {pinMode (entrée pinosBotoes [i]);} / / Definindo o Modo fazer pino de Áudio Como Saida. pinMode (pinoAudio, sortie) ; / / Inicializando o acaso atraves de UMA Leitura da porta analógica. . / / Cette gera de Leitura hum valor Variável Entre 0 e 1.023 randomSeed (analogRead (0)) ; }
void loop () {}
/ / Se Perdeu o Jogo reinicializamos Todas como Variáveis. Si (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 lorsque E a Primeira Rodada. Si (rodada_atual == 0) {tocarSomDeInicio (); retard (500);} / / Chama a função qu’inicializa un Próxima Rodada. proximaRodada () ;
/ / Reproduz un Atual Sequência. reproduzirSequencia () ; / / Aguarda OS BOTOES Serem pressionados Pelo Jogador. aguardarJogador () ;
/ / Jogada CADA Segundo Entre Aguarda 1. retarder (1000) ; } / / Sorteia hum novo point de e adiciona na Sequência. vazio proximaRodada () {int numero_sorteado = aléatoire (0, 4); sequencia [rodada_atual + +] = numero_sorteado;} / / Reproduz un memorizada de serviços Sequência para. vazio reproduzirSequencia () {pour (int i = 0; i < rodada_atual ; j’ai + +) {tom (pinoAudio, toneladas [sequencia [i]]); digitalWrite (pinosLeds [sequencia [i]], HIGH) retard (500); noTone (pinoAudio); digitalWrite (pinosLeds [sequencia [i]], LOW); atraso (100) ; NoTone} (pinoAudio) ; }
/ / Aguarda o Jogador iniciar SUA Jogada. vazio aguardarJogador () {pour (int i = 0; i < rodada_atual ; j’ai + +) {aguardarJogada (); verificarJogada () ;
Si (perdeu_o_jogo) {break ; Passo_atual_na_sequencia} + + ; }
/ / Redefinir um Variável parágrafo 0 passo_atual_na_sequencia = 0. ; }
anular aguardarJogada () {jogada_efetuada booléen = false ; while (! jogada_efetuada) {pour (int j’ai = 0; j’ai < = 3; J’ai + +) {si ((digitalRead pinosBotoes [i]) == HIGH) {}
/ / Dizendo quali FOI o Alexandre pressionado. botao_pressionado = i ;
Tom (pinoAudio, toneladas [i]) ; digitalWrite (pinosLeds [i], HIGH) ; retard (300) ; digitalWrite (pinosLeds [i], baixo) ; noTone (pinoAudio) ; jogada_efetuada = true ; }}
atraso (10) ; }}
anular verificarJogada () {si (sequencia [passo_atual_na_sequencia]! = botao_pressionado) {/ / GAME OVER.
pour (int i = 0; i < = 3; J’ai + +) {tom (pinoAudio, toneladas [i]); digitalWrite (pinosLeds [i], HIGH); atraso (200); digitalWrite (pinosLeds [i], baixo); noTone (pinoAudio);} Tom (pinoAudio, toneladas [3]) ; pour (int j’ai = 0; j’ai < = 3; J’ai + +) {digitalWrite (pinosLeds [0], HIGH); digitalWrite (pinosLeds [1], HIGH); digitalWrite (pinosLeds [2], HIGH); digitalWrite (pinosLeds [3], HIGH); atraso (100); digitalWrite (pinosLeds [0], faible); digitalWrite (pinosLeds [1], faible); digitalWrite (pinosLeds [2], LOW); digitalWrite (pinosLeds [3], faible); 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); retard (500); digitalWrite (pinosLeds [0], basse); digitalWrite (pinosLeds [1], basse); digitalWrite (pinosLeds [2], faible); digitalWrite (pinosLeds [3], basse); retard (500); noTone (pinoAudio);}