Início
/
Projetos Arduino
/
Jogos
/
Jogo da Forca - arduino jogo #01
Jogo da Forca - arduino jogo #01
Angelo Luis Ferreira | 18/12/2018
Acessos: 11.161
Objetivo
Neste projeto vamos criar o jogo clássico "Jogo da Forca" com leds e um buzzer que toca uma música caso você perca o jogo. Também é possível alterar a palavra oculta e a dicas para ser dada aos jogadores. O jogo é todo apresentado no Monitor Serial do IDE do Arduino.
Obs.: No nosso exemplo utilizamos uma barra gráfica e um led vermelho. Entretanto, você poderá substituir a barra gráfica leds de qualquer cor.
Aplicação
Para fins didáticos.
Componentes necessários
Referência
|
Componente
|
Quantidade
|
Imagem
|
Observação
|
Protoboard |
Protoboard 830 pontos |
1 |
|
No mínimo utilizar protoboard com 415 pontos
|
Jumpers |
Kit cabos ligação macho / macho |
1 |
|
|
Buzzer |
Buzzer ativo 5V 12mm |
1 |
|
Utilize um buzzer ou um disco piezoelétrico |
Barra Gráfica (bargraph) |
Barra Gráfica de 10 segmentos |
1 |
|
Utilize barra gráfica de qualquer cor.
Obs.: Você poderá substituir a barra gráfica por 5 leds de qualquer cor.
|
Led 5mm |
Led 5mm |
1 |
|
Obs.: Se substituir a barra gráfica por leds, você precisará de 6 leds de qualquer cor.
|
Resistor |
Resistor |
2 |
|
2 Resistores 150 Ω (1 para o LED vermelho e 1 para a barra gráfica vermelha)
Obs.: Se substituir a barra gráfica por leds, você precisará de 6 resistores de 150 Ω (para leds vermelhos)
Se precisar usar outros valores, calcule o resistor apropriado para o led ou barra grafica utilizada.
|
|
Arduino UNO R3
|
1
|
|
Você poderá utilizar uma placa Arduino UNO original ou similar
|
Montagem do Circuito
Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.
Atenção
1) Lembre-se que o LED tem polaridade: O terminal maior tem polaridade positiva e o lado do chanfro tem polaridade negativa.
2) Determinamos o valor do resistor através da tabela prática: Tabela prática de utilização de leds 3mm e 5mm. Entretanto, o mais correto é sempre verificar o datasheet do fabricante do LED para você ter os exatos valores de tensão e corrente do mesmo - leia Leds ligados em série e em paralelo.
2.1. Valores mínimos utilizados para nossos projetos: LEDs difusos ou de alto brilho: Vermelho, Laranja e Amarelo: 150 Ω | Led Verde e Azul: 100 Ω
3) A barra gráfica (bargraph) possui polaridade. O lado com chanfro recebe ligação positiva ou negativa dependendo do fabricante. Caso o projeto não funcione, inverta a posição da barra gráfica.
4) Em função do "datasheet" da barra gráfica, calculamos o valor do resistor em 150 ohms (barra gráfica vermelha). Entretanto, por segurança, pode-se utilizar um resistor de 300 ohms para barra gráfica de qualquer cor para que o projeto funcione normalmente sem que o componente seja danificado. Obs.: Geralmente as características de cada segmento de uma barra gráfica é similar as de um led comum.
5) O buzzer tem polaridade. Portando, cuidado para não ligar o buzzer invertido. Se você retirar o adesivo superior do buzzzer poderá ver um sinal de positivo (+). Este sinal mostra onde está o pino positivo do componente que deverá estar conectado ao Arduino (neste projeto) ou a uma porta digital do Arduino e o polo negativo ao GND.
4) Veja abaixo como ficou a montagem do nosso projeto:
Código do Projeto (Sketch)
1) Faça o dowload e abra o arquivo jogo1.ino no IDE do Arduino: DOWNLOAD - jogo1.ino
Ou se preferir, copie e cole o código abaixo no IDE do Arduino:
/*******************************************************************************
*
* Jogo 1 - Jogo da Fora
* Créditos: Laboratório de Garagem
* Adaptções: Squids Arduino
*
* http://squids.com.br/arduino
*
*******************************************************************************/
#include "notas.h" // Baixe e instale o header notas.h
const byte buzzer = 12; // Define o pino onde o buzzer será conectado
const int compasso = 1500; //Define o compasso da música
byte ledPin[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13}; // cria um array para os pinos digitais dos LEDs (10 da barra + 1 led)
byte nleds = 11; // números de leds (barra + led) // se você utilizar somente leds, mude para 6
int erros=0, acertos, i, j;
String segredo= "SQUIDS ARDUINO"; //<-Altere nesta String a palavra secreta
const String dica= "Onde voce encontra os melhores PROJETOS sobre Arduino"; //<-Altere nesta linha a dica sobre a palavra utilizada
String tentativas = " -", test;
char inChar;
const int gameover[] = {
NOTE_C5,NOTE_G4,NOTE_E4,NOTE_A4,NOTE_B4,NOTE_A4,NOTE_GS4,NOTE_AS4, NOTE_GS4, NOTE_E4,NOTE_D4,NOTE_E4
};
const int tempo_gameover[] = {
4,4,4,8,8,8,8,8,8,
12,12,4
};
boolean temletra=0;
void setup() {
Serial.begin(9600);
for (int x=0; x 0) {
char caracter = Serial.read();
if(isAlphaNumeric(caracter) || isDigit(caracter)) {
caracter = toupper(caracter);
for (j = 0; j < tentativas.length(); j++){
if( tentativas[j] == (caracter) ){
temletra = 1;
}
}
if (temletra == 1)
{
Serial.println("Letra ja digitada");
temletra = 0;
}
else
{
tentativas += caracter;
if(segredo.indexOf(caracter) <0 ){
erros++;
}
acertos = 0;
for (j = 0; j < tentativas.length(); j++){
for (i = 0; i < segredo.length(); i++){
if( segredo[i]== tentativas[j]){
test[i*2]= segredo[i];
acertos++;
}
}
}
Serial.print("ERROS: ");
Serial.println(erros);
Serial.println();
//###########################################################
// imprime letras na tela
for ( i = 0; i < (segredo.length()*2); i++){
Serial.print(test[i]);
}
Serial.println();
Serial.println();
}
}
else {
Serial.println("Digite um caracter valido");
Serial.println();
}
//Atualiza LEDs que indicam os erros
byte led_ind = erros;
byte leda = ((2 * led_ind)-1)-1;
byte ldeb = leda+1;
digitalWrite(1, LOW);
digitalWrite(ledPin[leda], LOW);
digitalWrite(ledPin[ldeb], LOW); // elimine essa linha se estiver usando 6 leds
if (acertos == segredo.length()){
Serial.println("Voce venceu!!!");
while(1){
}
}
if (erros >=6){
Serial.println("GAME OVER"); //Toca musica de GAME OVER
for (int Nota = 0; Nota < 12; Nota++) {
int tempo = compasso/tempo_gameover[Nota];
tone(buzzer, gameover[Nota],tempo);
delay(tempo*1.2);
}
while(1){
}
}
}
}
Baixar e instalar o "header file" notas.h
Para que a música no final do jogo possa ser produzida é necessário baixar o arquivo notas.h seguindo as instruções abaixo:
1) Obtenha o header file notas.h e coloque na mesma pasta do sketch no IDE do Arduino: DOWNLOAD - notas.h
Atenção: o arquivo notas.h deverá estar na mesma pasta onde está o sketch principal:
2) No IDE do Arduino, faça a verificação e o upload para o microcontrolador.
Atenção: Observe que deverá aparecer uma aba com o header file notas.h, como mostra a figura acima. Para visualizar ou alterar o código no IDE basta clicar sobre a aba notas.h.
Vídeo
Como o projeto deve funcionar
1. Ao executar o programa, abra o monitor serial do IDE do Arduino. Aguarde o monitor estar pronto para você iniciar o jogo:
a) Observe que irá aparecer inicialmente a dica da palavra e os "traços" com o número de letras da palavra oculta.
2. Digite uma letra e tecle [Enter].
a) Se a letra digitada estiver correta, ele mostrará as posições das letras na palavra oculta. Mostrará também o número de erros.
b) Se você digitar uma letra que não faz parte da palavra oculta, o programa irá mostrar que você errou, contando o número de ERROS.
c) No circuito eletrônico as luzes da barra gráfica irão se apagando também a cada erro. A luz do led será a sua última chance.
ATENÇÃO: É permitido apenas 6 erros. Errando mais de 6 vezes você perderá o jogo.
3. Caso você perca o jogo, ou seja, tiver mais de 6 erros, o programa irá avisar com "OVER GAME" e uma música no final será produzida pelo buzzer.
4) Se você acertar todas as letras, aparecerá no final a frase "Você Venceu!!!".
5. Para reiniciar o jogo basta fechar o Monitor Serial e abrí-lo novamente.
6. Para alterar a palavra oculta, acesse o sketch do projeto e altere as strings segredo e dica. Faça o upload novamente para o controlador.
Créditos
Este projeto foi uma adaptação do projeto original: http://arduino.labdegaragem.com/Guia_preview/SMK_15_forca.html.
Desafios
Com base neste projeto, resolva os seguintes desafios: Desafio 32
O anúncio abaixo ajuda a manter o Squids Arduino funcionando
Comentários