#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int compScore = 0;
int playerScore = 0;
void setup() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(1000);
display.clearDisplay();
}
void loop() {
int compInput;
String compInputText;
int playerInput = -1;
String playerInputText;
bool inputReceived;
//Computer RNG
compInput = random(0, 5);
//Computer RNG to Text
if (compInput == 0) {
compInputText = "Rock";
} else if (compInput == 1) {
compInputText = "Paper";
} else if (compInput == 2) {
compInputText = "Scissors";
} else if (compInput == 3) {
compInputText = "Fire";
} else if (compInput == 4) {
compInputText = "Water";
}
//Display Text for Input
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(BIN);
display.setCursor(0, 0);
display.println("Choose a move: ");
display.println("1 - Rock");
display.println("2 - Paper");
display.println("3 - Scissors");
display.println("4 - Fire");
display.println("5 - Water");
display.display();
//Player Input
playerInput = -1;
while (playerInput < 1 || playerInput > 5) {
Serial.flush();
while (!Serial.available()) {}
playerInput = Serial.parseInt();
}
//Player Win Condition
display.clearDisplay();
display.setCursor(0, 0);
if (compInput == playerInput) {
display.println("Draw! Computer chose " + compInputText);
} else if (compInput == 0 && playerInput == 1, 3) {
display.println("Player Wins! Computer chose " + compInputText);
playerScore++;
} else if (compInput == 1 && playerInput == 2, 3) {
display.println("Player Wins! Computer chose " + compInputText);
playerScore++;
} else if (compInput == 2 && playerInput == 3, 0) {
display.println("Player Wins! Computer chose " + compInputText);
playerScore++;
} else if (compInput == 3 && playerInput == 4) {
display.println("Player Wins! Computer chose " + compInputText);
playerScore++;
} else if (compInput == 4 && playerInput == 0, 1, 2) {
display.println("Player Wins! Computer chose " + compInputText);
playerScore++;
} else if (playerInput == 0 && compInput == 1, 3) {
display.println("Computer Wins! Computer chose " + compInputText);
compScore++;
} else if (playerInput == 1 && compInput == 2, 3) {
display.println("Computer Wins! Computer chose " + compInputText);
compScore++;
} else if (playerInput == 2 && compInput == 3, 0) {
display.println("Computer Wins! Computer chose " + compInputText);
compScore++;
} else if (playerInput == 3 && compInput == 4) {
display.println("Computer Wins! Computer chose " + compInputText);
compScore++;
} else if (playerInput == 4 && compInput == 0, 1, 2) {
display.println("Computer Wins! Computer chose " + compInputText);
compScore++;
}
display.display();
delay(2500);
//Display Scores
display.clearDisplay();
display.setCursor(1, 1);
display.println("Computer: " + String(compScore));
display.println("Player: " + String(playerScore));
display.display();
delay(2500);
//Ask for rematch
display.clearDisplay();
display.setCursor(0, 0);
display.println("Wanna go again?");
display.println("1 - Yes");
display.println("2 - No");
display.display();
//Player Input for Rematch
playerInput = -1;
while (playerInput < 1 || playerInput > 2) {
Serial.flush();
while (!Serial.available()) {}
playerInput = Serial.parseInt();
}
//Either go again or "end" match
if (playerInput == 1) {
display.println("Lets go again!");
display.display();
} else if (playerInput == 2) {
display.println("I see how it is...");
display.display();
delay(100000000000000000000);
}
delay(2500);
}