Índice:

"Ninja Dollar", o jogo para Arduino: 3 etapas
"Ninja Dollar", o jogo para Arduino: 3 etapas

Vídeo: "Ninja Dollar", o jogo para Arduino: 3 etapas

Vídeo:
Vídeo: Acidente de trabalho em máquina 2024, Novembro
Anonim
Imagem
Imagem

Outro videogame para arduino. É um ótimo jogo é mais avançado que o último que publiquei. Por que é mais complexo do que outro? É mais complexo porque pode pular e atirar e ter uma luz sonora e um novo método de cont. De pontos.

Suprimentos

  1. Arduino.
  2. Tábua de pão
  3. fios de ligação
  4. LED vermelho
  5. 2 botões de pressão
  6. 2 resistores de 10k ohm
  7. 2 resistores 220R.
  8. LED azul super brilhante.
  9. campainha piezo
  10. Visor LCD 16 * 2

Etapa 1: conectando tudo junto

Conectando tudo junto
Conectando tudo junto

Agora você precisa conectar tudo

Etapa 2: como jogar:

  1. Ligue o arduino.
  2. O LCD deve imprimir: "o jogo começa em" e uma contagem regressiva.
  3. Pressione um dos botões para pular e outro para atirar.
  4. cada bloco que você salta ganha um ponto e cada * que você pega dá 5 pontos.
  5. Quando você tem 50 pontos ou mais você vence

Etapa 3: o código

// este jogo e muito interessante e ao mesmo tempo irritante e frustante mas muito divertido.

#incluir

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;

const int buttonPin1 = 1; const int buttonPin2 = 6; const int buzzer = 7; pts longos sem sinal = 0; // definir estados de botão bool buttonState1 = 0; bool buttonState2 = 0; // número aleatório para a posição dos obstáculos int randomNums [6]; // número aleatório para número de obstáculos int randomNum = 0; // número aleatório para a posição dos pontos int randomNums1 [3]; // número aleatório para número de pontos int randomNum1 = 0; // tempo de atraso de início, que diminui gradualmente unsigned int myDelay = 500; // fez este booleano para verificar se o botão2 está pressionado porque se for pressionado uma vez no primeiro loop for, eu quero que os obstáculos não sejam escritos até o final dele bool temp = 0; // esta variável armazena as posições do guerreiro enquanto ele atira. pode haver 16 posições porque o guerreiro tem 16 posições. int tempI [16]; // eu uso este booleano para verificar se o ponto foi capturado bool temp1 = 0;

// use esta variável para armazenar a posição do ponto capturado. deve ser um array para armazenar a posição de todos os pontos em uma iteração do primeiro loop for. se armazenasse apenas uma posição, o ponto "antigo" voltaria na nova iteração

int tempI1 [3]; // use esta variável para ter um número de tiros do guerreiro, que também é o comprimento de um array tempI int button2IsPressed = 0; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

void setup () {

// configura o número de colunas e linhas do LCD: lcd.begin (16, 2); // define o modo do botão pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (campainha, OUTPUT); lcd.setCursor (4, 0); lcd.print ("O JOGO"); lcd.setCursor (2, 1); lcd.print ("INICIA"); lcd.print ("5"); atraso (1000); lcd.setCursor (12, 1); lcd.print ("4"); atraso (1000); lcd.setCursor (12, 1); lcd.print ("3"); atraso (1000); lcd.setCursor (12, 1); lcd.print ("2"); atraso (1000); lcd.setCursor (12, 1); lcd.print ("1"); atraso (1000); lcd.clear ();

}

void loop () {

aqui:

randomNum = random (5);

para (int i = 0; i9 && pts19 && pts29 && pts = 50) {pts = 0; myDelay = 500; lcd.clear (); lcd.setCursor (5, 0); lcd.print ("VITÓRIA"); tom (campainha, 262); atraso (200); tom (campainha, 330); atraso (200); tom (campainha, 392); atraso (100); tom (campainha, 330); atraso (100); tom (campainha, 392); atraso (100); tom (campainha, 523); atraso (200); noTone (campainha); atraso (3000); lcd.clear (); vá aqui; } else lcd.setCursor (15, 0); lcd.print (pts); buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); // colocando obstáculos se o guerreiro não atirou ou atirou, mas também saltou if (! temp) {for (int j = 0; jrandomNums [j]) {lcd.setCursor (randomNums [j], 1); lcd.print ("#"); }

}

}

// definindo pontos

if (! temp1) {for (int j = 0; j

}

Recomendado: