Minnesspel - Genius (2 / 2 steg)
Steg 2: O skiss
Código
/ / Vamos Comecar definindo como filhos anmärkningar parágrafo OS
# Definiera 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 åt 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, lysdioder e BOTOES. * Os pinos de lysdioder e BOTOES estao los Ordem, Relacionados uns EAo OUTROS, OU SEJA *, O Primeiro levou ESTA AO relacionado Primeiro Botão. En Ordem destas * Sequências också estao relacionadas en 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; / / Fana indicando se o Jogo acabou. int perdeu_o_jogo = false;
Ogiltiga inställningar () {
/ / Definindo o Modo dos pinos dos lysdioder Como Saida. för (int jag = 0; jag < = 3; jag + +) {pinMode (pinosLeds [i], produktionen);} / / Definindo o Modo dos pinos dos BOTOES Como Entrada. för (int jag = 0; jag < = 3; jag + +) {pinMode (pinosBotoes [i], ingång);} / / Definindo o Modo fazer pino de Áudio Como Saida. pinMode (pinoAudio, produktionen); / / Inicializando o acaso atraves de UMA Leitura da porta analógica. . / / Detta Leitura gera hum tapperhet Variável Entre 0 e 1.023 randomSeed (analogRead (0)); }
Ogiltig loop () {
/ / Se Perdeu o Jogo reinicializamos Todas como Variáveis. om (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 när E en Primeira Rodada. om (rodada_atual == 0) {tocarSomDeInicio (), fördröjning (500);} / / Chama en função att inicializa en Próxima Rodada. proximaRodada ();
/ / Reproduz en Atual Sequência. reproduzirSequencia (); / / Aguarda OS BOTOES Jönsson pressionados Pelo Jogador. aguardarJogador ();
/ / Aguarda 1 Segundo Entre CADA Jogada. fördröjning (1000); } / / Sorteia hum novo objekt de e adiciona na Sequência. vazio proximaRodada () {int numero_sorteado = random (0, 4), sequencia [rodada_atual + +] = numero_sorteado;} / / Reproduz en serviços memorizada Sequência para. vazio reproduzirSequencia () {för (int jag = 0; jag < rodada_atual; jag + +) {tom (pinoAudio, toneladas [sequencia [i]]), digitalWrite (pinosLeds [sequencia [i]], hög), fördröjning (500); noTone (pinoAudio), digitalWrite (pinosLeds [sequencia [i]], låg), atraso (100); NoTone} (pinoAudio); }
/ / Aguarda o Jogador iniciar SUA Jogada. vazio aguardarJogador () {för (int jag = 0; jag < rodada_atual; jag + +) {aguardarJogada (), verificarJogada ();
om (perdeu_o_jogo) {semester. Passo_atual_na_sequencia} + +; }
/ / Redefinir um Variável parágrafo 0 passo_atual_na_sequencia = 0.; }
anular aguardarJogada () {jogada_efetuada boolean = false; medan (! jogada_efetuada) {för (int jag = 0; jag < = 3; jag + +) {om ((digitalRead pinosBotoes [i]) == hög) {
/ / Dizendo kvali FOI o botao pressionado. botao_pressionado = i.
Tom (pinoAudio, toneladas [i]); digitalWrite (pinosLeds [i], hög); fördröjning (300); digitalWrite (pinosLeds [i], baixo); noTone (pinoAudio); jogada_efetuada = sant; }}
atraso (10). }}
anular verificarJogada () {om (sequencia [passo_atual_na_sequencia]! = botao_pressionado) {/ / GAME OVER.
för (int jag = 0; jag < = 3; jag + +) {tom (pinoAudio, toneladas [i]), digitalWrite (pinosLeds [i], hög), atraso (200), digitalWrite (pinosLeds [i], baixo), noTone (pinoAudio);} Tom (pinoAudio, toneladas [3]); för (int jag = 0; jag < = 3; jag + +) {digitalWrite (pinosLeds [0], hög), digitalWrite (pinosLeds [1], hög), digitalWrite (pinosLeds [2], hög), digitalWrite (pinosLeds [3], hög), atraso (100); digitalWrite (pinosLeds [0], låg); digitalWrite (pinosLeds [1], låg), digitalWrite (pinosLeds [2], låg); digitalWrite (pinosLeds [3], låg); atraso (100);}
noTone (pinoAudio); perdeu_o_jogo = sant; {}} Vazio tocarSomDeInicio () {tom (pinoAudio, toneladas [0]), digitalWrite (pinosLeds [0], hög), digitalWrite (pinosLeds [1], hög); digitalWrite (pinosLeds [2], hög); digitalWrite (pinosLeds [3], hög); fördröjning (500); digitalWrite (pinosLeds [0], låg); digitalWrite (pinosLeds [1], låg); digitalWrite (pinosLeds [2], låg); digitalWrite (pinosLeds [3], låg); fördröjning (500), noTone (pinoAudio);}