#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int horzPin = A1;
const int vertPin = A0;
const int selPin = 2;
int credits = 10;
int bet = 0;
int crsr = 0;
const char heroes[] = "WATPHK";
const int multipliers[] = {2, 3, 5, 7, 10, 12};
unsigned long move = 0;
int debounceDelay = 200;
bool bett = true;
int lcrsr = -1, lbet = -1, lcrdts = -1;
char win = ' ';
const char* heroNames[] = {
"Woman",
"Alli",
"Tiger",
"Panda",
"Hippo",
"Kong"
};
void setup() {
lcd.init();
lcd.backlight();
pinMode(selPin, INPUT_PULLUP);
displayGame(true);
}
void loop() {
int horzValue = analogRead(horzPin);
int vertValue = analogRead(vertPin);
int selPressed = digitalRead(selPin);
if (bett && millis() - move > debounceDelay) {
if (horzValue > 700 && crsr < 5) {
crsr++;
move = millis();
} else if (horzValue < 300 && crsr > 0) {
crsr--;
move = millis();
}
}
if (bett && millis() - move > debounceDelay) {
if (vertValue > 700 && bet < credits) {
bet++;
credits--;
move = millis();
} else if (vertValue < 300 && bet > 1) {
bet--;
credits++;
move = millis();
}
}
if (bett && selPressed == LOW) {
bett = false;
lcd.clear();
playGame();
return;
}
if (bett) {
displayGame(false);
}
}
void displayGame(bool upd) {
if (upd || crsr != lcrsr || credits != lcrdts || bet != lbet) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("WATPHK");
lcd.setCursor(7, 0);
lcd.print("C:");
lcd.print(credits);
lcd.setCursor(12, 0);
lcd.print("B:");
lcd.print(bet);
lcd.setCursor(crsr, 1);
lcd.print("-");
lcrsr = crsr;
lcrdts = credits;
lbet = bet;
}
}
void playGame() {
int rndm = random(0, 6);
win = heroes[rndm];
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Winner: ");
lcd.print(heroNames[rndm]);
if (heroes[crsr] == win) {
int winnings = bet * multipliers[rndm];
credits += winnings;
lcd.setCursor(0, 1);
lcd.print("Win! +");
lcd.print(winnings);
} else {
credits -= bet;
}
delay(2000);
if (credits > 0) {
bett = true;
bet = 1;
crsr = 0;
displayGame(true);
} else {
lcd.clear();
lcd.print("Game Over!");
while (true);
}
}
int rndm() {
return random(0, 6);
}