// ASCII RPG GAME
// https://wokwi.com/projects/346354551689839187
#include <SPI.h>
#include <Wire.h>
#include "Rooms.h"
#include "PlayerController.h"
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
const uint8_t upButton = 2;
const uint8_t downButton = 3;
const uint8_t leftButton = 4;
const uint8_t rightButton = 5;
const uint8_t aButton = 6;
const uint8_t bButton = 7;
PlayerController player;
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
void drawRoom()
{
display.clearDisplay();
uint8_t yCoord = 0;
for (uint8_t i = 0; i < 6; ++i)
{
display.setCursor(0, yCoord);
display.print((char*)pgm_read_word(&(rooms[player.room][i])));
yCoord += 10;
}
player.roomChange = false;
}
void setup()
{
for (int i = 2; i < 8; ++i)
{
pinMode(i, INPUT_PULLUP);
}
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE, BLACK);
display.setCursor(32, 20);
display.print("Micro Punk");
display.setCursor(32, 32);
display.print(" 3089");
display.display();
delay(2000);
player.room = 0;
drawRoom();
}
void loop()
{
if (player.enemyDestroyed)
{
display.clearDisplay();
display.setCursor(0, 0);
display.print("Enemy Destroyed");
display.display();
delay(1000);
player.enemyDestroyed = false;
display.clearDisplay();
drawRoom();
}
if (player.damageTaken)
{
display.clearDisplay();
display.setCursor(0, 0);
display.print("Damage Taken");
display.display();
delay(250);
player.damageTaken = false;
display.clearDisplay();
drawRoom();
}
if (player.damageDealt)
{
display.clearDisplay();
display.setCursor(0, 0);
display.print("Damage Dealt");
display.setCursor(0, 10);
display.print("Enemy HP: ");
display.setCursor(70, 10);
int hp = player.enemy.hp;
display.print(hp);
display.display();
delay(250);
player.damageDealt = false;
display.clearDisplay();
drawRoom();
}
if (player.roomChange)
{
drawRoom();
}
player.update();
display.setCursor(player.oldX, player.oldY);
display.print(" ");
display.setCursor(player.playerX, player.playerY);
display.print(player.playerChar);
display.display();
}