#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const int button1 = 6, button2 = 7, button3 = 8;
int state = 0;
int numDecks = 39;
int prevNumDecks = 1;
int delTimer = 50;
int prestate = 0;
void setup() {
randomSeed(analogRead(0));
pinMode(button1, INPUT);
pinMode(button2, INPUT);
lcd.begin(16, 2);
state = 0;
lcd.print("Thanks for using");
lcd.setCursor(0,1);
lcd.print("DECK PICKER 9000");
delay(2500);
}
int BS1() {
int buttonState1 = digitalRead(button1);
return buttonState1;
}
int BS2() {
int buttonState2 = digitalRead(button2);
return buttonState2;
}
int BS3() {
int buttonState3 = digitalRead(button3);
return buttonState3;
}
int numAvaDecks(int deckCheck[], int numberDecks) {
int sum = 0;
for (int i = 0; i < numberDecks; i++) {
if (deckCheck[i] == 1) {
sum++;
}
}
return sum;
}
int deckChoice(int deckArray[], int numdecks) {
int validChoice = 0;
int randInt;
while (validChoice == 0) {
randInt = random(0, numdecks);
if (deckArray[randInt] == 1) {
deckArray[randInt] = 0;
validChoice = 1;
}
}
lcd.setCursor(0,1);
lcd.print(" ");
return randInt;
}
void loop() {
//Deck Selection state
if (state == 0) {
lcd.clear();
lcd.print("Number of decks?");
while (state == 0) {
lcd.setCursor(0,1);
lcd.print(numDecks);
if (BS3() == 1) {
state++;
}
//Decrement
if (BS1() == 1) {
delay(delTimer);
if (BS1() == 0) {
delay(delTimer);
if (numDecks == 0) {
continue;
}
else {
prevNumDecks = numDecks;
numDecks--;
lcd.setCursor(0,1);
lcd.print(" ");
}
}
}
//Increment
if (BS2() == 1) {
delay(delTimer);
if (BS2() == 0) {
delay(delTimer);
prevNumDecks = numDecks;
numDecks++;
lcd.setCursor(0,1);
lcd.print(" ");
}
//else {
//continue;
//}
}
}
}
int decks[numDecks];
//Array Generation state
if(state == 1) {
for (int i = 0; i<(sizeof decks/sizeof decks[0]); i++) {
decks[i] = 1;
}
}
lcd.clear();
state++;
//Deck Distribution state
if(state == 2) {
lcd.clear();
lcd.print("Press button to");
lcd.setCursor(0,1);
lcd.print("advance player");
int player = 1;
while (state == 2) {
if (BS1() == 1 || BS2() == 1 || BS3() == 1){
if(numAvaDecks(decks, numDecks) > 1) {
lcd.clear();
lcd.print("Player ");
lcd.print(player);
int deck1 = deckChoice(decks, numDecks);
int deck2 = deckChoice(decks, numDecks);
lcd.setCursor(0,1);
lcd.print(deck1+1);
lcd.print(", ");
lcd.print(deck2+1);
player++;
delay(1000);
}
else {
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("Out of Decks");
lcd.setCursor(0,1);
lcd.print("Confirm->restart");
}
}
if (BS3() ==1) {
state = 0;
delay(1000);
}
}
}
}