#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "player.h"
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
int buttons_pin[] = {3, 2, 4};
byte buttons_lastState[] ={LOW, LOW, LOW};
unsigned long buttons_lastStateChanged[] = {0, 0, 0};
unsigned long debounceDuration = 50;
unsigned long previousTime = 0;
int page = 1;
int lastpage = 4;
int pageLast = page;
int unlocked = 0;
int money_2;
int money_2_last = 0;
char moneyDisplayed[4];
Player player;
void setup() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.setTextSize(2);
display.setTextColor(WHITE);
display.display();
display.clearDisplay();
unsigned long currenttime = millis();
for(int a=0;a<sizeof(buttons_pin);++a)
{
pinMode(buttons_pin[a], INPUT);
buttons_lastStateChanged[a]=currenttime;
}
display.setTextSize(2);
display.setCursor(0, 0);
display.println("Get 1B $ To Win");
display.display();
delay(3500);
display.clearDisplay();
}
void loop() {
unsigned long currenttime = millis();
unsigned long elapsedTime = currenttime - previousTime;
//Serial.print(F("Loop currenttime "));
//Serial.println(currenttime);
if (previousTime > 1000)
{
player.UpdateMoney(elapsedTime);
}
previousTime = currenttime;
for(int a=0;a<sizeof(buttons_pin);++a)
{
if (currenttime - buttons_lastStateChanged[a] > debounceDuration)
{
byte buttonState = digitalRead(buttons_pin[a]);
if (buttonState != buttons_lastState[a])
{
buttons_lastStateChanged[a] = currenttime;
buttons_lastState[a] = buttonState;
if (buttonState == LOW)
{
if (a == 0)
{
player.Click();
}
else if(a == 1)
{
if (page == 1)
{
player.BuyUpgrade();
}
else if (page == 2)
{
player.BuyAutoClicker();
}
else if (page == 3)
{
player.BuyMoneyMachine();
}
}
else if (a == 2)
{
if (page < lastpage)
{
++page;
}
else if (page = lastpage)
{
page = 1;
}
}
}
}
}
}
if (player.GetMoneyValue() > 0 & player.GetMoneyValue() < 1000)
{
money_2 = player.GetMoneyValue();
sprintf(moneyDisplayed, "%i", money_2);
}
else if (player.GetMoneyValue() > 999 & player.GetMoneyValue() < 1000000)
{
money_2 = player.GetMoneyValue()/1000;
sprintf(moneyDisplayed, "%i k", money_2);
}
else if (player.GetMoneyValue() > 999999 & player.GetMoneyValue() < 1000000000)
{
money_2 = player.GetMoneyValue()/1000000;
sprintf(moneyDisplayed, "%i m", money_2);
}
else if(player.GetMoneyValue() > 999999999)
{
page = 10;
}
if(money_2_last != money_2)
{
display.clearDisplay();
money_2_last = money_2;
}
if (pageLast != page)
{
display.clearDisplay();
pageLast = page;
}
if (page != 10)
{
display.setTextColor(WHITE, BLACK);
display.setCursor(115, 48);
display.println(page);
display.display();
}
else
{
}
if (page == 1) {
display.setTextSize(2);
display.setCursor(0, 0);
display.println("$/CLICK :");
display.display();
display.setCursor(0, 48);
char buff[8];
display.println(moneyDisplayed);
display.display();
display.setCursor(0, 28);
sprintf(buff, "%lu $", player.GetUpgradePrice());
display.println(buff);
}
else if (page == 2)
{
display.setTextSize(2);
display.setCursor(0, 0);
display.println("AUTO-CLICK");
display.display();
display.setCursor(0, 48);
char buff[8];
display.println(moneyDisplayed);
display.display();
display.setCursor(0, 28);
sprintf(buff, "%lu $", player.GetUpgradePriceAutoClicker());
display.println(buff);
}
else if (page == 3)
{
if (player.GetMoneyValue() >= 250 || unlocked == 1)
{
if (unlocked == 0)
{
++unlocked;
display.clearDisplay();
}
display.setTextSize(2);
display.setCursor(0, 0);
display.println("$ MACHINE");
display.setCursor(0, 28);
char buff[8];
sprintf(buff, "%lu $", player.GetUpgradePriceMoneyMachine());
display.println(buff);
display.println(moneyDisplayed);
}
else if (player.GetMoneyValue() < 250 & unlocked == 0)
{
display.setTextSize(3);
display.setCursor(10, 0);
display.println("LOCKED");
display.setCursor(10, 28);
display.setTextSize(2);
display.println("NEED 250$");
display.display();
}
}
else if (page == lastpage)
{
display.setTextSize(2);
display.setCursor(0, 0);
display.println("INFO :");
display.display();
display.setCursor(0, 48);
char buff[8];
sprintf(buff, "$/SEC %lu", player.GetMoneyPerSec());
display.println(buff);
display.display();
display.setCursor(0, 28);
sprintf(buff, "$/CLICK %lu", player.GetMoneyPerClick());
display.println(buff);
}
else if (page == 10)
{
display.setTextSize(2);
display.setCursor(10, 0);
display.println("you win!");
display.display();
delay(1000);
}
}