#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int buttonPin = 32;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(buttonPin, INPUT);
lcd.init();
lcd.backlight();
Serial.begin(9600);
randomSeed(analogRead(0));
}
void displayPressButtonMessage() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Press. o botao");
}
void loop() {
bool gameEnded = false;
while (!gameEnded) {
displayPressButtonMessage();
waitForButtonPress();
// Lançamento dos dados e exibição dos resultados
lcd.clear(); // Limpa o LCD
lcd.setCursor(0, 0);
lcd.print("Lancando dados...");
delay(1000);
// Primeiro lançamento de dados
int diceRoll1 = random(1, 7);
int diceRoll2 = random(1, 7);
int totalPoints = diceRoll1 + diceRoll2;
lcd.clear(); // Limpa o LCD
lcd.setCursor(0, 0);
lcd.print("Resultado : ");
lcd.print(totalPoints);
lcd.setCursor(0, 1);
lcd.print("D1: ");
lcd.print(diceRoll1);
lcd.print(" D2: ");
lcd.print(diceRoll2);
Serial.print("Resultado : ");
Serial.println(totalPoints);
// Aguarda um pouco para mostrar lançar dados novamente
delay(2000);
if (totalPoints == 7 || totalPoints == 11) {
lcd.setCursor(0, 0);
lcd.print("Voce venceu! ");
lcd.setCursor(0, 1);
lcd.print("Jogo reiniciado.");
Serial.println("Voce venceu!");
gameEnded = true;
} else if (totalPoints == 2 || totalPoints == 3 || totalPoints == 12) {
lcd.setCursor(0, 0);
lcd.print("Voce perdeu! ");
lcd.setCursor(0, 1);
lcd.print("Jogo reiniciado.");
Serial.println("Voce perdeu!");
gameEnded = true;
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ponto: ");
lcd.print(totalPoints);
lcd.setCursor(0, 1);
delay(1000);
lcd.clear();
lcd.print("Press. o botao");
Serial.print("Ponto: ");
Serial.println(totalPoints);
// Lançar dados novamente
bool pointReached = false;
while (!pointReached) {
waitForButtonPress();
int newDiceRoll1 = random(1, 7);
int newDiceRoll2 = random(1, 7);
int newTotalPoints = newDiceRoll1 + newDiceRoll2;
lcd.clear(); // Limpa o LCD
lcd.setCursor(0, 0);
lcd.print("Resultado: ");
lcd.print(newTotalPoints);
lcd.setCursor(0, 1);
lcd.print("D1: ");
lcd.print(newDiceRoll1);
lcd.print(" D2: ");
lcd.print(newDiceRoll2);
Serial.print("Resultado do lancamento: ");
Serial.println(newTotalPoints);
// Tempo para verificar o resultado
delay(2000);
lcd.clear();
if (newTotalPoints == totalPoints) {
lcd.setCursor(0, 0);
lcd.print("Voce venceu! ");
lcd.setCursor(0, 1);
lcd.print("Jogo reiniciado.");
Serial.println("Voce venceu!");
pointReached = true;
gameEnded = true;
} else if (newTotalPoints == 7) {
lcd.setCursor(0, 0);
lcd.print("Voce perdeu! ");
lcd.setCursor(0, 1);
lcd.print("Jogo reiniciado.");
Serial.println("Voce Perdeu!");
pointReached = true;
gameEnded = true;
} else {
lcd.setCursor(0, 0);
lcd.print("Ponto: ");
lcd.print(totalPoints);
lcd.setCursor(0, 1);
delay(1000);
lcd.clear();
lcd.print("Press. o botao");
Serial.print("Ponto: ");
Serial.println(totalPoints);
}
}
}
delay(2000); // Pausa para o jogador visualizar o resultado
}
}
void waitForButtonPress() {
while (digitalRead(buttonPin) == LOW) {
// Aguarda que o botão seja pressionado
}
while (digitalRead(buttonPin) == HIGH) {
// Aguarda que o botão seja liberado
}
}