/*
ABOUT:
Welcome to "CARV"! It's a carnival-themed number guessing game where you have three attempts to guess
the correct number, ranging from 0 to 9. You can make your selections using a specific button.
Enjoy the challenge and see if you can uncover the mystery number within your three tries!
INSTRUCTION:
1. Press the yellow button to start the game.
2. Wait until the number in the display stay in place, and then you may now start guessing.
3. Press the green button to increase the number.
4. Press the red button to decrease the number.
5. Press the yellow button again if you think the number displayed is the correct number.
6. If you pick the wrong one, repeat again. Each time you are wrong, one red LED will lit up.
7. When three red LED lit up. It's GAME OVER. ψ(`∇´)ψ
8. If you pick the right one, the green light will lit up and you WIN. (≧∀≦)
9. If you WIN or LOSE, you may press the yellow button to start again.
GOOD LUCK! ♪(๑ᴖ◡ᴖ๑)♪
*/
// Variable
int segA = 1;
int segB = 2;
int segC = 3;
int segD = 4;
int segE = 5;
int segF = 6;
int segG = 7;
int btnPlus = 8;
int btnMinus = 9;
int btnGuess = 10;
int correctLED = 0;
int firstAttempt = 11;
int secondAttempt = 12;
int thirdAttempt = 13;
int currentNum = 0;
int guessNum = random(0,9);
int attempt = 1;
int isGameOn = 0;
int machineOn = 0;
void setup() {
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(btnPlus, INPUT);
pinMode(btnMinus, INPUT);
pinMode(btnGuess, INPUT);
pinMode(correctLED, OUTPUT);
pinMode(firstAttempt, OUTPUT);
pinMode(secondAttempt, OUTPUT);
pinMode(thirdAttempt, OUTPUT);
}
void loop() {
if (machineOn == 0)
{
delay(1000);
displayTitle();
machineOn = 1;
delay(1000);
Num0();
}
if ((digitalRead(btnPlus)) == HIGH)
{
if (isGameOn == 1)
{
if (currentNum < 9)
{
currentNum += 1;
}
else
{
currentNum = 0;
}
displayNum();
delay(500);
}
}
if ((digitalRead(btnMinus)) == HIGH)
{
if (isGameOn == 1)
{
if (currentNum > 0)
{
currentNum -= 1;
}
else
{
currentNum = 9;
}
displayNum();
delay(500);
}
}
if ((digitalRead(btnGuess)) == HIGH)
{
if (guessNum == currentNum)
{
digitalWrite(firstAttempt, LOW);
digitalWrite(secondAttempt, LOW);
digitalWrite(thirdAttempt, LOW);
resetlight(correctLED, correctLED, correctLED);
attempt = 1;
Num0();
guessNum = random(0,9);
isGameOn = 0;
}
else if (isGameOn == 1)
{
attempt += 1;
if (attempt == 2) {digitalWrite(firstAttempt, HIGH);}
else if (attempt == 3) {digitalWrite(secondAttempt, HIGH);}
else
{
digitalWrite(thirdAttempt, HIGH);
resetlight(firstAttempt, secondAttempt, thirdAttempt);
attempt = 1;
guessNum = random(0,9);
isGameOn = 0;
Num0();
}
}
else
{
randomSlotThingyStuff();
guessNum = random(0,9);
isGameOn = 1;
}
delay(1000);
}
}
void randomSlotThingyStuff() {
for (int i = 0; i<(random(10,20)); i++ )
{
currentNum = random(0,9);
displayNum();
delay(250);
}
}
void resetlight(int pin1, int pin2, int pin3) {
digitalWrite(pin1, LOW);
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
delay(250);
digitalWrite(pin1, HIGH);
digitalWrite(pin2, HIGH);
digitalWrite(pin3, HIGH);
delay(250);
digitalWrite(pin1, LOW);
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
delay(250);
digitalWrite(pin1, HIGH);
digitalWrite(pin2, HIGH);
digitalWrite(pin3, HIGH);
delay(250);
digitalWrite(pin1, LOW);
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
delay(250);
digitalWrite(pin1, HIGH);
digitalWrite(pin2, HIGH);
digitalWrite(pin3, HIGH);
delay(2000);
digitalWrite(pin1, LOW);
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
}
void displayNum() {
if (currentNum == 0)
{Num0();}
else if (currentNum == 1)
{Num1();}
else if (currentNum == 2)
{Num2();}
else if (currentNum == 3)
{Num3();}
else if (currentNum == 4)
{Num4();}
else if (currentNum == 5)
{Num5();}
else if (currentNum == 6)
{Num6();}
else if (currentNum == 7)
{Num7();}
else if (currentNum == 8)
{Num8();}
else {Num9();}
}
// NUMBERS
void NumNil() {
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void Num0() {
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
}
void Num1() {
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void Num2() {
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
}
void Num3() {
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
}
void Num4() {
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
}
void Num5() {
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
}
void Num6() {
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
}
void Num7() {
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void Num8() {
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
}
void Num9() {
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
}
void displayTitle() {
// C
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
delay(500);
// A
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
delay(500);
// R
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
delay(500);
// V
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}