#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;
int state = 0;
int numDecks = 0;
int prevNumDecks = 1;
int delTimer = 50;
int prestate = 0;
void setup() {
randomSeed(analogRead(0));
pinMode(button1, INPUT);
pinMode(button2, INPUT);
lcd.begin(16, 2);
//lcd.print("First line");
//lcd.setCursor(0,1);
//lcd.print("Second line");
state = 0;
lcd.print("welcome!");
delay(1000);
}
int BS1() {
int buttonState1 = digitalRead(button1);
return buttonState1;
}
int BS2() {
int buttonState2 = digitalRead(button2);
return buttonState2;
}
int numAvaDecks(int deckCheck[], int numberDecks) {
int sum = 0;
for (int i = 0; i < numberDecks; i++) {
if (deckCheck[i] == 1) {
sum++;
}
}
return sum;
}
int randDeck(int numDecks) {
int randInt = random(0, numDecks);
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 (BS1() == 1 && BS2() == 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();
lcd.print("val: ");
lcd.print(decks[i]);
lcd.print(" pos: ");
lcd.print(i);
delay(1000);
}
}
lcd.clear();
lcd.print("array compiled");
lcd.setCursor(0,1);
lcd.print("Ava Decks: ");
lcd.print(numAvaDecks(decks, numDecks));
state++;
//delay(5000);
/*
while (state == 1) {
if (numAvaDecks(decks, numDecks) > 1) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Test");
lcd.setCursor(0,1);
lcd.print(randDeck(numDecks));
lcd.print(", ");
lcd.print(randDeck(numDecks));
delay(1000);
}
}
*/
}
//Deck Distribution state
if(state == 2) {
lcd.clear();
lcd.print("Press a button");
lcd.setCursor(0,1);
lcd.print("to advance player");
int player = 1;
while (state == 2) {
if (BS1() || BS2() == 1){
delay(250);
lcd.clear();
lcd.print("Player ");
lcd.print(player);
player++;
}
}
}
}