#include <Arduino.h>
#include <LiquidCrystal.h>

// Constants
const int SW_PIN = 2;   // Switch pin
const int X_PIN = 0;    // Analog X pin
const int Y_PIN = 1;    // Analog Y pin

// LCD
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// Game variables
int playerX = 7;    // Initial position of player
int playerY = 0;    // Initial position of player

void setup() {
  // Initialize LCD
  lcd.begin(16, 2);  // 16 columns, 2 rows

  // Setup analog inputs
  pinMode(SW_PIN, INPUT_PULLUP);  // Enable internal pull-up resistor
}

void loop() {
  // Read analog inputs
  int xValue = analogRead(X_PIN);
  int yValue = analogRead(Y_PIN);
  
  // Read switch state
  int switchState = digitalRead(SW_PIN);

  // Clear LCD
  lcd.clear();

  // Display game screen
  displayGameScreen();

  // Update player position based on analog inputs
  updatePlayerPosition(xValue, yValue);

  // Display player
  lcd.setCursor(playerX, playerY);
  lcd.print("P");

  // Display switch state
  lcd.setCursor(10, 0);
  lcd.print("SW:");
  lcd.print(switchState);

  // Delay for stability
  delay(100);  // Adjust delay as needed
}

void displayGameScreen() {
  // Example: Display borders of game area
  lcd.setCursor(0, 0);
  lcd.print("|                |");

  lcd.setCursor(0, 1);
  lcd.print("|                |");
}

void updatePlayerPosition(int xValue, int yValue) {
  // Example: Update player position based on analog inputs
  // Normalize analog input values to fit within the game area
  playerX = map(xValue, 0, 1023, 1, 15);  // Map X value to LCD columns
  playerY = map(yValue, 0, 1023, 0, 1);   // Map Y value to LCD rows
}