     }
 
     // Update game state
-    gameinProgress = true;
+    gameInProgress = true;
 
     // Update display
     renderBoard();

        break;

        case LEFT:
            // TODO
        break;
    }

    // Update display
    renderBoard();
}

void endGame() {
    // Update game state
    gameInProgress = false;
}

/****************************************

 ****************************************/

 void renderBoard() {
    // TODO ~ Hahahahahahahaha
 }

 /* Prints board to serial. For debugging. */
 void printBoard() {
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            Serial.print(board[i][j]);
        }
        Serial.println("");
    }
 }

 /****************************************
 ********** UTILITY METHODS *************
 ****************************************/

 /* Randomly returns either 0 or 1. */
int randomTile() {
    return random(0, 2);

}

/* Randomly returns the index of a row or column. */
int randomIndex() {
    return random(0, 4);
}

/* Returns whether tile at (i, j) can be moved to (i2, j2).
 * Updates |tempBoard| if a move is possible. */
boolean attemptTileMove(int i, int j, int i2, int j2) {
    // No tile in the original space
    if (tempBoard[i][j] == 0) {
        return false;
    }

    // No tile in the new space
    if (tempBoard[i2][j2] == 0) {
        tempBoard[i2][j2] = tempBoard[i][j];
        tempBoard[i][j] = 0;
        return true;
    }

    // Identical tiles, collapse them into the new location
    if (tempBoard[i][j] == tempBoard[i2][j2]) {
        tempBoard[i][j] = 0;
        tempBoard[i2][j2]++;
        return true;
    }

    return false;
}