el15mh 200929957

Dependencies:   mbed

Maze/Maze.cpp

Committer:
el15mh
Date:
2017-05-04
Revision:
9:960dfc71c224

File content as of revision 9:960dfc71c224:

#include "Maze.h"

/**
 *  @details - constructor
 */
Maze::Maze()
{
    
}

/**
 *  @details - constructor
 */
Maze::~Maze()
{
    
}

/**
 *  @details - Initalise object with index value.
 */
void Maze::init(int mazeIndex)
{
    _mazeIndex = mazeIndex;
}

/**
 *  @details - Maze is drawn on LCD screen.
 */
void Maze::draw(N5110 &lcd)
{
    /// EASY MAZES ///
    if (_mazeIndex == 0){
        mazeIndexZero(lcd);
    }
    else if (_mazeIndex == 1){
        mazeIndexOne(lcd);
    }
    else if (_mazeIndex == 2){
        mazeIndexTwo(lcd);
    }
    /// MEDIUM MAZES ///
    else if (_mazeIndex == 3){
        mazeIndexThree(lcd);
    }
    else if (_mazeIndex == 4){
        mazeIndexFour(lcd);
    }
    else if (_mazeIndex == 5){
        mazeIndexFive(lcd);
    }
    /// HARD MAZES ///
    else if (_mazeIndex == 6){
        mazeIndexSix(lcd);
    }
    else if (_mazeIndex == 7){
        mazeIndexSeven(lcd);
    }
    else if (_mazeIndex == 8){
        mazeIndexEight(lcd);
    }
    /// EXTREME MAZE ///
    else if (_mazeIndex == 9){
        mazeIndexNine(lcd);
    }
}

/**
 *  @details - Creating lcd buffer for maze 0
 */
void Maze::mazeIndexZero(N5110 &lcd)
{
    // easy maze 1
    // index 0
    lcd.drawRect(0, 0, 84, 48, FILL_TRANSPARENT);
    
    lcd.drawLine(10, 0, 10, 39, FILL_BLACK);
    lcd.drawLine(10, 39, 20, 39, FILL_BLACK);
    lcd.drawLine(20, 0, 20, 20, FILL_BLACK);
    lcd.drawLine(30, 10, 39, 10, FILL_BLACK);
    lcd.drawLine(20, 30, 30, 30, FILL_BLACK);
    lcd.drawLine(20, 20, 40, 20, FILL_BLACK);
    lcd.drawLine(40, 0, 40, 10, FILL_BLACK);
    lcd.drawLine(30, 30, 30, HEIGHT - 1, FILL_BLACK);
    lcd.drawLine(30, 39, 50, 39, FILL_BLACK);
    lcd.drawLine(40, 20, 40, 30, FILL_BLACK);
    lcd.drawLine(40, 30, 60, 30, FILL_BLACK);
    lcd.drawLine(50, 20, 71, 20, FILL_BLACK);
    lcd.drawLine(50, 10, 50, 20, FILL_BLACK);
    lcd.drawLine(60, 30, 60, 39, FILL_BLACK);
    lcd.drawLine(71, 20, 71, 39, FILL_BLACK);
    lcd.drawLine(50, 10, WIDTH - 1, 10, FILL_BLACK);
    
    // drawing the goal
    for (int j = 1; j < 10; j++){
        lcd.clearPixel(83, j);
    }
}

/**
 *  @details - Creating lcd buffer for maze 1
 */
void Maze::mazeIndexOne(N5110 &lcd)
{
    // easy maze 2
    // index 1
    lcd.drawRect(0, 0, 84, 48, FILL_TRANSPARENT);
    
    lcd.drawLine(10, 0, 10, 20, FILL_BLACK);
    lcd.drawLine(20, 10, 40, 10, FILL_BLACK);
    lcd.drawLine(50, 10, 71, 10, FILL_BLACK);
    lcd.drawLine(30, 10, 30, 30, FILL_BLACK);
    lcd.drawLine(50, 10, 50, 30, FILL_BLACK);
    lcd.drawLine(10, 20, 20, 20, FILL_BLACK);
    lcd.drawLine(40, 20, 50, 20, FILL_BLACK);
    lcd.drawLine(71, 20, 83, 20, FILL_BLACK);
    lcd.drawLine(60, 20, 60, 39, FILL_BLACK);
    lcd.drawLine(71, 20, 71, 30, FILL_BLACK);
    lcd.drawLine(20, 30, 40, 30, FILL_BLACK);
    lcd.drawLine(10, 30, 10, 39, FILL_BLACK);
    lcd.drawLine(40, 30, 40, 47, FILL_BLACK);
    lcd.drawLine(60, 10, 60, 20, FILL_BLACK);
    lcd.drawLine(10, 39, 40, 39, FILL_BLACK);
    lcd.drawLine(50, 39, 83, 39, FILL_BLACK);
    
    // drawing the goal
    for (int j = 21; j < 30; j++){
        lcd.clearPixel(83, j);
    }
}

/**
 *  @details - Creating lcd buffer for maze 2
 */
void Maze::mazeIndexTwo(N5110 &lcd)
{
    // easy maze 3
    // index 2
    lcd.drawRect(0, 0, 84, 48, FILL_TRANSPARENT);
    
    lcd.drawLine(20, 0, 20, 20, FILL_BLACK);
    lcd.drawLine(40, 0, 40, 20, FILL_BLACK);
    lcd.drawLine(0, 10, 10, 10, FILL_BLACK);
    lcd.drawLine(10, 30, 40, 30, FILL_BLACK);
    lcd.drawLine(71, 0, 71, 10, FILL_BLACK);
    lcd.drawLine(10, 10, 10, 20, FILL_BLACK);
    lcd.drawLine(50, 10, 60, 10, FILL_BLACK);
    lcd.drawLine(60, 20, 60, 30, FILL_BLACK);
    lcd.drawLine(71, 30, 83, 30, FILL_BLACK);
    lcd.drawLine(30, 10, 30, 39, FILL_BLACK);
    lcd.drawLine(50, 10, 50, 39, FILL_BLACK);
    lcd.drawLine(60, 20, 83, 20, FILL_BLACK);
    lcd.drawLine(10, 30, 10, 39, FILL_BLACK);
    lcd.drawLine(40, 30, 40, 47, FILL_BLACK);
    lcd.drawLine(71, 30, 71, 39, FILL_BLACK);
    lcd.drawLine(20, 39, 20, 47, FILL_BLACK);
    lcd.drawLine(50, 39, 71, 39, FILL_BLACK);
    
    // drawing the goal
    for (int j = 21; j < 30; j++){
        lcd.clearPixel(83, j);
    }
    
}

/**
 *  @details - Creating lcd buffer for maze 3
 */
void Maze::mazeIndexThree(N5110 &lcd)
{
    // medium maze 1
    // maze index 3
    lcd.drawRect(0, 0, 84, 48, FILL_TRANSPARENT);
    
    lcd.drawLine(16, 0, 16, 8, FILL_BLACK);
    lcd.drawLine(56, 0, 56, 16, FILL_BLACK);
    lcd.drawLine(80, 0, 80, 16, FILL_BLACK);
    lcd.drawLine(8, 8, 24, 8, FILL_BLACK);
    lcd.drawLine(32, 8, 48, 8, FILL_BLACK);
    lcd.drawLine(64, 8, 72, 8, FILL_BLACK);
    lcd.drawLine(8, 8, 8, 40, FILL_BLACK);
    lcd.drawLine(24, 8, 24, 16, FILL_BLACK);
    lcd.drawLine(32, 8, 32, 40, FILL_BLACK);
    lcd.drawLine(48, 8, 48, 16, FILL_BLACK);
    lcd.drawLine(64, 8, 64, 24, FILL_BLACK);
    lcd.drawLine(72, 8, 72, 24, FILL_BLACK);
    lcd.drawLine(16, 16, 16, 24, FILL_BLACK);
    lcd.drawLine(40, 16, 40, 24, FILL_BLACK);
    lcd.drawLine(80, 16, 84, 16, FILL_BLACK);
    lcd.drawLine(16, 24, 32, 24, FILL_BLACK);
    lcd.drawLine(40, 24, 64, 24, FILL_BLACK);
    lcd.drawLine(8, 32, 24, 32, FILL_BLACK);
    lcd.drawLine(40, 32, 40, 40, FILL_BLACK);
    lcd.drawLine(48, 32, 48, 48, FILL_BLACK);
    lcd.drawLine(64, 32, 72, 32, FILL_BLACK);
    lcd.drawLine(72, 32, 72, 40, FILL_BLACK);
    lcd.drawLine(32, 40, 40, 40, FILL_BLACK);
    lcd.drawLine(72, 40, 84, 40, FILL_BLACK);
    lcd.drawLine(16, 40, 16, 48, FILL_BLACK);
    lcd.drawLine(64, 40, 64, 48, FILL_BLACK);
    lcd.drawLine(24, 32, 24, 40, FILL_BLACK);
    lcd.drawLine(40, 24, 40, 40, FILL_BLACK);
    lcd.drawLine(56, 24, 56, 40, FILL_BLACK);
    lcd.drawLine(64, 32, 72, 32, FILL_BLACK);
    lcd.drawLine(56, 40, 64, 40, FILL_BLACK);
    
    // drawing the goal
    for (int j = 41; j < 47; j++){
        lcd.clearPixel(83, j);
    }
}

/**
 *  @details - Creating lcd buffer for maze 4
 */
void Maze::mazeIndexFour(N5110 &lcd)
{
    // medium maze 2
    // index 4
    lcd.drawRect(0, 0, 84, 48, FILL_TRANSPARENT);
    
    // vertical
    lcd.drawLine(8, 0, 8, 8, FILL_BLACK);
    lcd.drawLine(32, 0, 32, 16, FILL_BLACK);
    lcd.drawLine(64, 0, 64, 16, FILL_BLACK);
    
    //horizontal
    lcd.drawLine(16, 8, 24, 8, FILL_BLACK);
    lcd.drawLine(40, 8, 56, 8, FILL_BLACK);
    //vertical
    lcd.drawLine(16, 8, 16, 24, FILL_BLACK);
    lcd.drawLine(40, 8, 40, 32, FILL_BLACK);
    lcd.drawLine(73, 8, 73, 32, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(0, 16, 8, 16, FILL_BLACK);
    lcd.drawLine(24, 16, 32, 16, FILL_BLACK);
    lcd.drawLine(48, 16, 64, 16, FILL_BLACK);
    // vertical
    lcd.drawLine(56, 16, 56, 32, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(8, 24, 48, 24, FILL_BLACK);
    lcd.drawLine(64, 24, 73, 24, FILL_BLACK);
    // vertical
    lcd.drawLine(8, 24, 8, 40, FILL_BLACK);
    lcd.drawLine(64, 24, 64, 40, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(24, 32, 56, 32, FILL_BLACK);
    // vertical
    lcd.drawLine(16, 32, 16, 40, FILL_BLACK);
    lcd.drawLine(32, 32, 32, 40, FILL_BLACK);
    lcd.drawLine(48, 32, 48, 40, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(16, 40, 32, 40, FILL_BLACK);
    lcd.drawLine(64, 40, 83, 40, FILL_BLACK);
    // vertical
    lcd.drawLine(40, 40, 40, 47, FILL_BLACK);
    lcd.drawLine(56, 40, 56, 47, FILL_BLACK);
    
    // drawing the goal
    for (int j = 41; j < 47; j++){
        lcd.clearPixel(83, j);
    }
    
}

/**
 *  @details - Creating lcd buffer for maze 5
 */
void Maze::mazeIndexFive(N5110 &lcd)
{
    // medium maze 3
    // maze index 5
    
    lcd.drawRect(0, 0, 84, 48, FILL_TRANSPARENT);
    
    // vertical
    lcd.drawLine(8, 0, 8, 16, FILL_BLACK);
    lcd.drawLine(24, 0, 24, 16, FILL_BLACK);
    lcd.drawLine(48, 0, 48, 16, FILL_BLACK);
    lcd.drawLine(64, 0, 64, 8, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(32, 8, 40, 8, FILL_BLACK);
    // vertical
    lcd.drawLine(16, 8, 16, 16, FILL_BLACK);
    lcd.drawLine(32, 8, 32, 24, FILL_BLACK);
    lcd.drawLine(56, 8, 56, 24, FILL_BLACK);
    lcd.drawLine(73, 8, 73, 16, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(16, 16, 24, 16, FILL_BLACK);
    lcd.drawLine(40, 16, 48, 16, FILL_BLACK);
    lcd.drawLine(56, 16, 73, 16, FILL_BLACK);
    // vertical
    
    // horizontal
    lcd.drawLine(0, 24, 8, 24, FILL_BLACK);
    lcd.drawLine(16, 24, 56, 24, FILL_BLACK);
    lcd.drawLine(64, 24, 83, 24, FILL_BLACK);
    // vertical
    lcd.drawLine(16, 24, 16, 32, FILL_BLACK);
    lcd.drawLine(40, 24, 40, 40, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(8, 32, 32, 32, FILL_BLACK);
    lcd.drawLine(48, 32, 73, 32, FILL_BLACK);
    // vertical
    lcd.drawLine(8, 32, 8, 40, FILL_BLACK);
    lcd.drawLine(48, 32, 48, 40, FILL_BLACK);
    lcd.drawLine(64, 32, 64, 40, FILL_BLACK);
    lcd.drawLine(73, 32, 73, 47, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(16, 40, 40, 40, FILL_BLACK);
    // vertical
    lcd.drawLine(16, 40, 16, 47, FILL_BLACK);
    lcd.drawLine(56, 40, 56, 47, FILL_BLACK);
    
    // drawing the goal
    for (int j = 41; j < 47; j++){
        lcd.clearPixel(83, j);
    }
    
}

/**
 *  @details - Creating lcd buffer for maze 6
 */
void Maze::mazeIndexSix(N5110 &lcd)
{
    // hard maze 1
    // maze index 6
    
    lcd.drawRect(2, 0, 81, 47, FILL_TRANSPARENT);
    
    lcd.drawLine(7, 1, 7, 6, FILL_BLACK);
    lcd.drawLine(22, 1, 22, 11, FILL_BLACK);
    lcd.drawLine(42, 1, 42, 21, FILL_BLACK);
    lcd.drawLine(57, 1, 57, 16, FILL_BLACK);
    lcd.drawLine(12, 6, 17, 6, FILL_BLACK);
    lcd.drawLine(27, 6, 37, 6, FILL_BLACK);
    lcd.drawLine(47, 6, 52, 6, FILL_BLACK);
    lcd.drawLine(72, 6, 82, 6, FILL_BLACK);
    lcd.drawLine(12, 6, 12, 26, FILL_BLACK);
    lcd.drawLine(37, 6, 37, 16, FILL_BLACK);
    lcd.drawLine(47, 6, 47, 21, FILL_BLACK);
    lcd.drawLine(62, 6, 62, 21, FILL_BLACK);
    lcd.drawLine(67, 6, 67, 11, FILL_BLACK);
    lcd.drawLine(2, 11, 7, 11, FILL_BLACK);
    lcd.drawLine(17, 11, 32, 11, FILL_BLACK);
    lcd.drawLine(52, 11, 57, 11, FILL_BLACK);
    lcd.drawLine(67, 11, 77, 11, FILL_BLACK);
    lcd.drawLine(32, 11, 32, 21, FILL_BLACK);
    lcd.drawLine(72, 11, 72, 21, FILL_BLACK);
    lcd.drawLine(7, 16, 17, 16, FILL_BLACK);
    lcd.drawLine(22, 16, 27, 16, FILL_BLACK);
    lcd.drawLine(37, 16, 42, 16, FILL_BLACK);
    lcd.drawLine(47, 16, 57, 16, FILL_BLACK);
    lcd.drawLine(62, 16, 67, 16, FILL_BLACK);
    lcd.drawLine(77, 16, 82, 16, FILL_BLACK);
    lcd.drawLine(17, 16, 17, 21, FILL_BLACK);
    lcd.drawLine(27, 16, 27, 26, FILL_BLACK);
    lcd.drawLine(2, 21, 7, 21, FILL_BLACK);
    lcd.drawLine(17, 21, 22, 21, FILL_BLACK);
    lcd.drawLine(17, 31, 17, 36, FILL_BLACK);
    lcd.drawLine(32, 21, 37, 21, FILL_BLACK);
    lcd.drawLine(52, 21, 62, 21, FILL_BLACK);
    lcd.drawLine(67, 21, 77, 21, FILL_BLACK);
    lcd.drawLine(22, 21, 22, 26, FILL_BLACK);
    lcd.drawLine(37, 21, 37, 26, FILL_BLACK);
    lcd.drawLine(52, 21, 52, 31, FILL_BLACK);
    lcd.drawLine(77, 21, 77, 31, FILL_BLACK);
    lcd.drawLine(7, 26, 17, 26, FILL_BLACK);
    lcd.drawLine(27, 26, 32, 26, FILL_BLACK);
    lcd.drawLine(37, 26, 52, 26, FILL_BLACK);
    lcd.drawLine(57, 26, 77, 26, FILL_BLACK);
    lcd.drawLine(7, 26, 7, 31, FILL_BLACK);
    lcd.drawLine(17, 26, 17, 26, FILL_BLACK);
    lcd.drawLine(32, 26, 32, 41, FILL_BLACK);
    lcd.drawLine(42, 26, 42, 41, FILL_BLACK);
    lcd.drawLine(67, 26, 67, 41, FILL_BLACK);
    lcd.drawLine(17, 31, 27, 31, FILL_BLACK);
    lcd.drawLine(32, 31, 42, 31, FILL_BLACK);
    lcd.drawLine(52, 31, 62, 31, FILL_BLACK);
    lcd.drawLine(72, 31, 77, 31, FILL_BLACK);
    lcd.drawLine(12, 31, 12, 36, FILL_BLACK);
    lcd.drawLine(47, 31, 47, 46, FILL_BLACK);
    lcd.drawLine(62, 31, 62, 41, FILL_BLACK);
    lcd.drawLine(72, 31, 72, 46, FILL_BLACK);
    lcd.drawLine(2, 36, 12, 36, FILL_BLACK);
    lcd.drawLine(22, 36, 27, 36, FILL_BLACK);
    lcd.drawLine(32, 36, 37, 36, FILL_BLACK);
    lcd.drawLine(47, 36, 57, 36, FILL_BLACK);
    lcd.drawLine(77, 36, 82, 36, FILL_BLACK);
    lcd.drawLine(22, 36, 22, 46, FILL_BLACK);
    lcd.drawLine(7, 41, 22, 41, FILL_BLACK);
    lcd.drawLine(27, 41, 31, 41, FILL_BLACK);
    lcd.drawLine(37, 41, 42, 41, FILL_BLACK);
    lcd.drawLine(52, 41, 62, 41, FILL_BLACK);
    lcd.drawLine(77, 37, 77, 41, FILL_BLACK);
    
    // drawing the goal
    for (int j = 37; j < 42; j++){
        lcd.clearPixel(82, j);
    }
}

/**
 *  @details - Creating lcd buffer for maze 7
 */
void Maze::mazeIndexSeven(N5110 &lcd)
{
    // hard maze 2
    // maze index 7
    lcd.drawRect(2, 1, 82, 46, FILL_TRANSPARENT);
    
    //vertical
    lcd.drawLine(12, 1, 12, 11, FILL_BLACK);
    lcd.drawLine(52, 1, 52, 16, FILL_BLACK);
    lcd.drawLine(67, 1, 67, 11, FILL_BLACK);
    lcd.drawLine(77, 1, 77, 31, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(2, 6, 7, 6, FILL_BLACK);
    lcd.drawLine(17, 6, 32, 6, FILL_BLACK);
    lcd.drawLine(37, 6, 47, 6, FILL_BLACK);
    lcd.drawLine(57, 6, 62, 6, FILL_BLACK);
    // vertical
    lcd.drawLine(32, 6, 32, 21, FILL_BLACK);
    lcd.drawLine(37, 6, 37, 26, FILL_BLACK);
    lcd.drawLine(47, 6, 47, 31, FILL_BLACK);
    lcd.drawLine(62, 6, 62, 36, FILL_BLACK);
    lcd.drawLine(72, 6, 72, 16, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(17, 11, 27, 11, FILL_BLACK);
    lcd.drawLine(17, 11, 27, 11, FILL_BLACK);
    lcd.drawLine(52, 11, 57, 11, FILL_BLACK);
    // vertical
    lcd.drawLine(7, 11, 7, 16, FILL_BLACK);
    lcd.drawLine(17, 11, 17, 31, FILL_BLACK);
    lcd.drawLine(42, 11, 42, 36, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(7, 16, 17, 16, FILL_BLACK);
    lcd.drawLine(22, 16, 27, 16, FILL_BLACK);
    lcd.drawLine(57, 16, 72, 16, FILL_BLACK);
    // vertical
    lcd.drawLine(27, 16, 27, 31, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(2, 21, 12, 21, FILL_BLACK);
    lcd.drawLine(17, 21, 22, 21, FILL_BLACK);
    lcd.drawLine(32, 21, 37, 21, FILL_BLACK);
    lcd.drawLine(47, 21, 57, 21, FILL_BLACK);
    lcd.drawLine(67, 21, 77, 21, FILL_BLACK);
    // vertical
    lcd.drawLine(22, 21, 22, 26, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(7, 26, 12, 26, FILL_BLACK);
    lcd.drawLine(27, 26, 37, 26, FILL_BLACK);
    lcd.drawLine(52, 26, 72, 26, FILL_BLACK);
    // vertical
    lcd.drawLine(7, 26, 7, 41, FILL_BLACK);
    lcd.drawLine(72, 26, 72, 31, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(12, 31, 27, 31, FILL_BLACK);
    lcd.drawLine(32, 31, 41, 31, FILL_BLACK);
    lcd.drawLine(47, 31, 62, 31, FILL_BLACK);
    lcd.drawLine(72, 31, 77, 31, FILL_BLACK);
    // vertical
    lcd.drawLine(12, 31, 12, 36, FILL_BLACK);
    lcd.drawLine(22, 31, 22, 36, FILL_BLACK);
    lcd.drawLine(37, 31, 37, 41, FILL_BLACK);
    lcd.drawLine(67, 31, 67, 36, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(22, 36, 32, 36, FILL_BLACK);
    lcd.drawLine(42, 36, 57, 36, FILL_BLACK);
    lcd.drawLine(67, 36, 82, 36, FILL_BLACK);
    // vertical
    lcd.drawLine(17, 36, 17, 41, FILL_BLACK);
    lcd.drawLine(32, 36, 32, 41, FILL_BLACK);
    lcd.drawLine(57, 36, 57, 45, FILL_BLACK);
    lcd.drawLine(72, 36, 72, 41, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(7, 41, 27, 41, FILL_BLACK);
    lcd.drawLine(37, 41, 52, 41, FILL_BLACK);
    lcd.drawLine(62, 41, 77, 41, FILL_BLACK);
    // vertical
    lcd.drawLine(27, 41, 27, 45, FILL_BLACK);
    
    // drawing the goal
    for (int j = 2; j < 6; j++){
        lcd.clearPixel(83, j);
    }
    
}

/**
 *  @details - Creating lcd buffer for maze 8
 */
void Maze::mazeIndexEight(N5110 &lcd)
{
    // hard maze 3
    // maze index 8
    
    lcd.drawRect(1, 1, 82, 46, FILL_TRANSPARENT);
    
    // vertical
    lcd.drawLine(7, 1, 7, 11, FILL_BLACK);
    lcd.drawLine(32, 1, 32, 21, FILL_BLACK);
    lcd.drawLine(62, 1, 62, 21, FILL_BLACK);
    lcd.drawLine(67, 1, 67, 6, FILL_BLACK);
    lcd.drawLine(77, 1, 77, 6, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(7, 6, 17, 6, FILL_BLACK);
    lcd.drawLine(22, 6, 27, 6, FILL_BLACK);
    lcd.drawLine(37, 6, 57, 6, FILL_BLACK);
    // vertical
    lcd.drawLine(22, 6, 22, 11, FILL_BLACK);
    lcd.drawLine(27, 6, 27, 21, FILL_BLACK);
    lcd.drawLine(57, 6, 57, 16, FILL_BLACK);
    lcd.drawLine(72, 6, 72, 11, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(17, 11, 22, 11, FILL_BLACK);
    lcd.drawLine(32, 11, 37, 11, FILL_BLACK);
    lcd.drawLine(47, 11, 52, 11, FILL_BLACK);
    lcd.drawLine(62, 11, 77, 11, FILL_BLACK);
    // vertical
    lcd.drawLine(12, 11, 12, 21, FILL_BLACK);
    lcd.drawLine(42, 11, 42, 26, FILL_BLACK);
    lcd.drawLine(52, 11, 52, 21, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(2, 16, 7, 16, FILL_BLACK);
    lcd.drawLine(12, 16, 27, 16, FILL_BLACK);
    lcd.drawLine(37, 16, 52, 16, FILL_BLACK);
    lcd.drawLine(57, 16, 62, 16, FILL_BLACK);
    lcd.drawLine(67, 16, 82, 16, FILL_BLACK);
    // vertical
    // NONE //
    
    // horizontal
    lcd.drawLine(7, 21, 12, 21, FILL_BLACK);
    lcd.drawLine(17, 21, 22, 21, FILL_BLACK);
    lcd.drawLine(27, 21, 37, 21, FILL_BLACK);
    lcd.drawLine(47, 21, 57, 21, FILL_BLACK);
    lcd.drawLine(62, 21, 77, 21, FILL_BLACK);
    // vertical
    lcd.drawLine(7, 21, 7, 31, FILL_BLACK);
    lcd.drawLine(17, 21, 17, 41, FILL_BLACK);
    lcd.drawLine(37, 21, 37, 31, FILL_BLACK);
    lcd.drawLine(67, 21, 67, 31, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(22, 26, 32, 26, FILL_BLACK);
    lcd.drawLine(42, 26, 62, 26, FILL_BLACK);
    lcd.drawLine(72, 26, 77, 26, FILL_BLACK);
    // vertical
    lcd.drawLine(12, 26, 12, 36, FILL_BLACK);
    lcd.drawLine(22, 26, 22, 31, FILL_BLACK);
    lcd.drawLine(62, 26, 62, 36, FILL_BLACK);
    lcd.drawLine(77, 26, 77, 41, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(22, 31, 57, 31, FILL_BLACK);
    lcd.drawLine(67, 31, 72, 31, FILL_BLACK);
    // vertical
    lcd.drawLine(52, 31, 52, 41, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(2, 36, 12, 36, FILL_BLACK);
    lcd.drawLine(17, 36, 32, 36, FILL_BLACK);
    lcd.drawLine(37, 36, 47, 36, FILL_BLACK);
    lcd.drawLine(57, 36, 72, 36, FILL_BLACK);
    // vertical
    lcd.drawLine(32, 36, 32, 41, FILL_BLACK);
    lcd.drawLine(47, 36, 47, 46, FILL_BLACK);
    lcd.drawLine(57, 36, 57, 46, FILL_BLACK);
    lcd.drawLine(67, 36, 67, 41, FILL_BLACK);
    
    // horizontal
    lcd.drawLine(7, 41, 17, 41, FILL_BLACK);
    lcd.drawLine(22, 41, 42, 41, FILL_BLACK);
    lcd.drawLine(62, 41, 67, 41, FILL_BLACK);
    lcd.drawLine(72, 41, 77, 41, FILL_BLACK);
    // vertical
    lcd.drawLine(72, 41, 72, 46, FILL_BLACK);
    
    // drawing the goal
    for (int j = 2; j < 5; j++){
        lcd.clearPixel(82, j);
    }
    
}

/**
 *  @details - Creating lcd buffer for maze 9
 */
void Maze::mazeIndexNine(N5110 &lcd)
{
    // maze index 9
    // extreme maze
    
    lcd.drawRect(0, 0, 84, 48, FILL_TRANSPARENT);
    
    // cycle through all rows/colums and set pixels
    int y = 3;
    lcd.drawLine(35, y, 37, y, FILL_BLACK);
    lcd.drawLine(47, y, 51, y, FILL_BLACK);
    
    y++;    // line 4
    lcd.drawLine(8, y, 12, y, FILL_BLACK);
    lcd.drawLine(20, y, 24, y, FILL_BLACK);
    lcd.drawLine(33, y, 34, y, FILL_BLACK);
    lcd.drawLine(51, y, 64, y, FILL_BLACK);
    lcd.drawLine(68, y, 79, y, FILL_BLACK);
    
    y++;    // line 5
    lcd.drawLine(31, y, 32, y, FILL_BLACK);
    lcd.drawLine(53, y, 54, y, FILL_BLACK);
    lcd.setPixel(30, y);
    lcd.setPixel(47, y);
    
    y++;    // line 6
    lcd.setPixel(30, y);
    lcd.drawLine(39, y, 42, y, FILL_BLACK);
    lcd.setPixel(47, y);
    lcd.setPixel(55, y);
    
    y++;    // line 7
    lcd.drawLine(28, y, 29, y, FILL_BLACK);
    lcd.drawLine(36, y, 38, y, FILL_BLACK);
    lcd.drawLine(47, y, 49, y, FILL_BLACK);
    lcd.drawLine(56, y, 57, y, FILL_BLACK);
    
    y++;    // line 8
    lcd.drawLine(0, y, 8, y, FILL_BLACK);
    lcd.drawLine(12, y, 20, y, FILL_BLACK);
    lcd.setPixel(27, y);
    lcd.drawLine(34, y, 35, y, FILL_BLACK);
    lcd.drawLine(50, y, 51, y, FILL_BLACK);
    lcd.drawLine(58, y, 68, y, FILL_BLACK);
    lcd.drawLine(77, y, 83, y, FILL_BLACK);
    
    y++;    // line 9
    lcd.setPixel(26, y);
    lcd.drawLine(32, y, 33, y, FILL_BLACK);
    lcd.drawLine(52, y, 53, y, FILL_BLACK);
    lcd.setPixel(59, y);
    
    y++;    // line 10
    lcd.setPixel(26, y);
    lcd.setPixel(31, y);
    lcd.setPixel(53, y);
    lcd.setPixel(59, y);
    
    y++;    // line 11
    lcd.drawLine(24, y, 25, y, FILL_BLACK);
    lcd.setPixel(30, y);
    lcd.setPixel(52, y);
    lcd.setPixel(60, y);
    
    y++;    // line 12
    lcd.drawLine(4, y, 12, y, FILL_BLACK);
    lcd.drawLine(16, y, 20, y, FILL_BLACK);
    lcd.setPixel(29, y);
    lcd.drawLine(40, y, 45, y, FILL_BLACK);
    lcd.setPixel(51, y);
    lcd.setPixel(61, y);
    lcd.drawLine(66, y, 72, y, FILL_BLACK);
    lcd.drawLine(76, y, 79, y, FILL_BLACK);
    
    y++;    // line 13
    lcd.setPixel(24, y);
    lcd.setPixel(28, y);
    lcd.drawLine(37, y, 39, y, FILL_BLACK);
    lcd.drawLine(46, y, 48, y, FILL_BLACK);
    lcd.setPixel(50, y);
    lcd.setPixel(57, y);
    lcd.setPixel(61, y);
    
    y++;    // line 14
    lcd.setPixel(23, y);
    lcd.setPixel(28, y);
    lcd.setPixel(36, y);
    lcd.setPixel(49, y);
    lcd.setPixel(57, y);
    lcd.setPixel(62, y);
    
    y++;    // line 15
    lcd.setPixel(23, y);
    lcd.setPixel(27, y);
    lcd.setPixel(36, y);
    lcd.setPixel(50, y);
    lcd.setPixel(58, y);
    lcd.setPixel(62, y);
    
    y++;    // line 16
    lcd.drawLine(0, y, 8, y, FILL_BLACK);
    lcd.setPixel(22, y);
    lcd.setPixel(27, y);
    lcd.setPixel(37, y);
    lcd.drawLine(43, y, 45, y, FILL_BLACK);
    lcd.setPixel(51, y);
    lcd.setPixel(58, y);
    lcd.drawLine(63, y, 68, y, FILL_BLACK);
    lcd.drawLine(80, y, 83, y, FILL_BLACK);
    
    y++;    // line 17
    lcd.setPixel(22, y);
    lcd.setPixel(26, y);
    lcd.setPixel(38, y);
    lcd.drawLine(46, y, 47, y, FILL_BLACK);
    lcd.setPixel(52, y);
    lcd.setPixel(59, y);
    lcd.setPixel(63, y);
    
    y++;    // line 18
    lcd.setPixel(22, y);
    lcd.setPixel(26, y);
    lcd.setPixel(32, y);
    lcd.drawLine(37, y, 38, y, FILL_BLACK);
    lcd.setPixel(48, y);
    lcd.setPixel(53, y);
    lcd.setPixel(59, y);
    lcd.setPixel(63, y);
    
    y++;    // line 19
    lcd.setPixel(26, y);
    lcd.setPixel(32, y);
    lcd.setPixel(36, y);
    lcd.setPixel(39, y);
    lcd.setPixel(49, y);
    lcd.setPixel(53, y);
    lcd.setPixel(59, y);
    
    y++;    // line 20
    lcd.drawLine(4, y, 16, y, FILL_BLACK);
    lcd.setPixel(25, y);
    lcd.setPixel(32, y);
    lcd.setPixel(36, y);
    lcd.drawLine(40, y, 44, y, FILL_BLACK);
    lcd.setPixel(49, y);
    lcd.setPixel(53, y);
    
    y++;    // line 21
    lcd.setPixel(45, y);
    
    y++;    // line 22
    /// NO INDIVIDUAL PIXELS/LINES TO DRAW ///
    
    y++;    // line 23
    /// NO INDIVIDUAL PIXELS/LINES TO DRAW ///
    
    y++;    // line 24
    lcd.drawLine(0, y, 4, y, FILL_BLACK);
    lcd.drawLine(21, y, 31, y, FILL_BLACK);
    lcd.setPixel(39, y);
    lcd.drawLine(64, y, 72, y, FILL_BLACK);
    
    y++;    // line 25
    lcd.setPixel(39, y);
    
    y++;    // line 26
    lcd.setPixel(40, y);
    lcd.setPixel(45, y);
    
    y++;    // line 27
    lcd.setPixel(32, y);
    lcd.setPixel(36, y);
    lcd.drawLine(41, y, 44, y, FILL_BLACK);
    lcd.setPixel(49, y);
    
    y++;    // line 28
    lcd.drawLine(4, y, 12, y, FILL_BLACK);
    lcd.drawLine(16, y, 21, y, FILL_BLACK);
    lcd.setPixel(26, y);
    lcd.setPixel(32, y);
    lcd.setPixel(36, y);
    lcd.setPixel(49, y);
    lcd.setPixel(59, y);
    lcd.drawLine(68, y, 83, y, FILL_BLACK);
    
    y++;    // line 29
    lcd.setPixel(22, y);
    lcd.setPixel(26, y);
    lcd.setPixel(32, y);
    lcd.setPixel(37, y);
    lcd.setPixel(48, y);
    lcd.setPixel(59, y);
    lcd.setPixel(63, y);
    
    y++;    // line 30
    lcd.setPixel(22, y);
    lcd.setPixel(26, y);
    lcd.setPixel(33, y);
    lcd.drawLine(38, y, 39, y, FILL_BLACK);
    lcd.drawLine(46, y, 47, y, FILL_BLACK);
    lcd.setPixel(59, y);
    lcd.setPixel(63, y);
    
    y++;    // line 31
    lcd.setPixel(22, y);
    lcd.setPixel(27, y);
    lcd.setPixel(34, y);
    lcd.drawLine(40, y, 45, y, FILL_BLACK);
    lcd.setPixel(51, y);
    lcd.setPixel(58, y);
    lcd.setPixel(63, y);
    
    y++;    // line 32
    lcd.drawLine(12, y, 17, y, FILL_BLACK);
    lcd.setPixel(23, y);
    lcd.setPixel(27, y);
    lcd.setPixel(35, y);
    lcd.setPixel(50, y);
    lcd.setPixel(58, y);
    lcd.drawLine(62, y, 72, y, FILL_BLACK);
    
    y++;    // line 33
    lcd.setPixel(23, y);
    lcd.setPixel(28, y);
    lcd.setPixel(36, y);
    lcd.setPixel(49, y);
    lcd.setPixel(57, y);
    lcd.setPixel(62, y);
    
    y++;    // line 34
    lcd.setPixel(28, y);
    lcd.drawLine(37, y, 38, y, FILL_BLACK);
    lcd.drawLine(46, y, 48, y, FILL_BLACK);
    lcd.setPixel(57, y);
    lcd.setPixel(61, y);
    
    y++;    // line 35
    lcd.setPixel(29, y);
    lcd.drawLine(42, y, 45, y, FILL_BLACK);
    lcd.setPixel(56, y);
    lcd.setPixel(61, y);
    
    y++;    // line 36
    lcd.drawLine(0, y, 8, y, FILL_BLACK);
    lcd.drawLine(12, y, 25, y, FILL_BLACK);
    lcd.setPixel(30, y);
    lcd.setPixel(55, y);
    lcd.setPixel(60, y);
    lcd.drawLine(64, y, 76, y, FILL_BLACK);
    
    y++;    // line 37
    lcd.setPixel(26, y);
    lcd.setPixel(31, y);
    lcd.setPixel(54, y);
    lcd.setPixel(59, y);
    
    y++;    // line 38
    lcd.setPixel(26, y);
    lcd.drawLine(32, y, 33, y, FILL_BLACK);
    lcd.drawLine(52, y, 53, y, FILL_BLACK);
    lcd.setPixel(59, y);
    
    y++;    // line 39
    lcd.setPixel(27, y);
    lcd.drawLine(34, y, 35, y, FILL_BLACK);
    lcd.drawLine(50, y, 51, y, FILL_BLACK);
    lcd.setPixel(58, y);
    
    y++;    // line 40
    lcd.drawLine(4, y, 12, y, FILL_BLACK);
    lcd.drawLine(16, y, 20, y, FILL_BLACK);
    lcd.drawLine(28, y, 29, y, FILL_BLACK);
    lcd.drawLine(36, y, 38, y, FILL_BLACK);
    lcd.drawLine(47, y, 49, y, FILL_BLACK);
    lcd.drawLine(56, y, 68, y, FILL_BLACK);
    lcd.drawLine(72, y, 80, y, FILL_BLACK);
    
    y++;    // line 41
    lcd.setPixel(30, y);
    lcd.drawLine(39, y, 46, y, FILL_BLACK);
    lcd.setPixel(55, y);
    
    y++;    // line 42
    lcd.setPixel(32, y);
    lcd.drawLine(31, y, 31, y, FILL_BLACK);
    lcd.drawLine(53, y, 54, y, FILL_BLACK);
    
    y++;    // line 43
    lcd.drawLine(12, y, 16, y, FILL_BLACK);
    lcd.drawLine(33, y, 34, y, FILL_BLACK);
    lcd.drawLine(51, y, 52, y, FILL_BLACK);
    
    y++;    // line 44
    lcd.drawLine(35, y, 36, y, FILL_BLACK);
    lcd.drawLine(48, y, 50, y, FILL_BLACK);
    lcd.drawLine(60, y, 72, y, FILL_BLACK);
    
    /// NO OTHER NON-VERTICAL LINES ON 45 - 47 (END) ///
    
    int x = 4;  // column 4
    lcd.drawLine(x, 0, x, 4, FILL_BLACK);
    lcd.drawLine(x, 28, x, 32, FILL_BLACK);
    lcd.drawLine(x, 40, x, 43, FILL_BLACK);
    
    x += 4; // column 8
    lcd.drawLine(x, 20, x, 24, FILL_BLACK);
    lcd.drawLine(x, 32, x, 36, FILL_BLACK);
    lcd.drawLine(x, 44, x, 47, FILL_BLACK);
    
    x += 4; // column 12
    lcd.drawLine(x, 4, x, 20, FILL_BLACK);
    lcd.drawLine(x, 24, x, 43, FILL_BLACK);
    
    x += 4; // column 16
    lcd.drawLine(x, 0, x, 4, FILL_BLACK);
    lcd.drawLine(x, 12, x, 28, FILL_BLACK);
    
    x += 4; // column 20
    lcd.drawLine(x, 40, x, 47, FILL_BLACK);
    
    x++;    // column 21
    lcd.drawLine(x, 19, x, 28, FILL_BLACK);
    
    x += 3; // column 24
    lcd.drawLine(x, 4, x, 13, FILL_BLACK);
    lcd.drawLine(x, 34, x, 43, FILL_BLACK);
    
    x++;    // column 25
    lcd.drawLine(x, 20, x, 24, FILL_BLACK);
    
    x += 3; // column 28
    lcd.drawLine(x, 0, x, 2, FILL_BLACK);
    lcd.drawLine(x, 44, x, 47, FILL_BLACK);
    
    x += 3; // column 31
    lcd.drawLine(x, 21, x, 26, FILL_BLACK);
    
    x += 4; // column 35
    lcd.drawLine(x, 21, x, 26, FILL_BLACK);
    
    x += 7; // column 42
    lcd.drawLine(x, 0, x, 6, FILL_BLACK);
    lcd.drawLine(x, 31, x, 47, FILL_BLACK);
    
    x += 4; // column 46
    lcd.drawLine(x, 22, x, 25, FILL_BLACK);
    
    x++;    // column 47
    lcd.drawLine(x, 3, x, 7, FILL_BLACK);
    
    x += 3; // column 50
    lcd.drawLine(x, 21, x, 26, FILL_BLACK);
    
    x += 4; // column 54
    lcd.drawLine(x, 21, x, 26, FILL_BLACK);
    
    x += 6; // column 60
    lcd.drawLine(x, 20, x, 27, FILL_BLACK);
    lcd.drawLine(x, 44, x, 47, FILL_BLACK);
    
    x += 4; // column 64
    lcd.drawLine(x, 19, x, 28, FILL_BLACK);
    
    x += 4;
    lcd.drawLine(x, 16, x, 20, FILL_BLACK);
    
    x += 4; // column 72
    lcd.drawLine(x, 4, x, 24, FILL_BLACK);
    lcd.drawLine(x, 40, x, 44, FILL_BLACK);
    
    x += 4; // column 76
    lcd.drawLine(x, 12, x, 36, FILL_BLACK);
    lcd.drawLine(x, 43, x, 47, FILL_BLACK);
    
    x += 4; // column 80
    lcd.drawLine(x, 16, x, 24, FILL_BLACK);
    lcd.drawLine(x, 32, x, 44, FILL_BLACK);
    
    /// END OF EXTREME MAZE ///
}