What's wrong with my code? I am coding a battleship game that uses a dpad using C on an arduino mega which is connected to a screen. I noticed that something is missing from my code but I can't figure out what it is and why battleship is not running. For context, we have two buttons: one for select and one for deselect. I need that incorporated as well. #include <TFT_eSPI.h> // Define the TFT display object TFT_eSPI tft = TFT_eSPI(); // Define the dpad pins #define UP_PIN 2 #define DOWN_PIN 3 #define LEFT_PIN 4 #define RIGHT_PIN 5 #define CONFIRM_PIN 6 #define SELECT_PIN 7 #define DESELECT_PIN 8 // Define the grid size const int GRID_SIZE = 10; // Define the ship lengths const int SHIP_LENGTHS[] = {1, 2, 3, 4}; // Define the player grids int player1Grid[GRID_SIZE][GRID_SIZE]; int player2Grid[GRID_SIZE][GRID_SIZE]; // Define the current player and ship length int currentPlayer = 1; int currentShipLength = 1; // Define the ship placement position int shipRow = 0; int shipCol = 0; int shipDirection = 0; // 0 = horizontal, 1 = vertical // Function to initialize the game void initializeGame() { // Clear the player grids memset(player1Grid, 0, sizeof(player1Grid)); memset(player2Grid, 0, sizeof(player2Grid)); // Set the current player and ship length currentPlayer = 1; currentShipLength = 1; // Set the initial ship placement position shipRow = 0; shipCol = 0; shipDirection = 0; // Draw the player grids tft.fillScreen(TFT_BLACK); tft.drawRect(0, 0, tft.width() / 2 - 1, tft.height() - 1, TFT_WHITE); tft.drawRect(tft.width() / 2, 0, tft.width() / 2 - 1, tft.height() - 1, TFT_WHITE); // Draw the current ship tft.drawRect(tft.width() / 2 + shipCol * 20, shipRow * 20, currentShipLength * 20 - 1, 19, TFT_WHITE); } // Function to update the ship placement position void updateShipPosition(int direction) { // Calculate the new ship position int newRow = shipRow; int newCol = shipCol; if (direction == 0) { // up newRow--; } else if (direction == 1) { // down newRow++; } else if (direction == 2) { // left newCol--; } else if (direction == 3) { // right newCol++; } // Check if the new position is valid if (newRow >= 0 && newRow < GRID_SIZE && newCol >= 0 && newCol < GRID_SIZE - currentShipLength + 1) { // Erase the current ship tft.drawRect(tft.width() / 2 + shipCol * 20, shipRow * 20, currentShipLength * 20 - 1, 19, TFT_BLACK); // Update the ship position shipRow = newRow; shipCol = newCol; // Draw the current ship tft.drawRect(tft.width() / 2 + shipCol * 20, shipRow * 20, currentShipLength * 20 - 1, 19, TFT_WHITE); } } // Function to update the ship placement direction void updateShipDirection() { // check if the "right" button is pressed if (digitalRead(RIGHT_BUTTON_PIN) == LOW) { // increment the ship direction shipDirection++; // wrap the direction around if it goes past 3 if (shipDirection > 3) { shipDirection = 0; } // draw the ship in the new direction drawShip(shipX, shipY, shipLength, shipDirection); } // check if the "left" button is pressed else if .