Final Submission. I have read and agreed with Statement of Academic Integrity.

Dependencies:   mbed

main.cpp

Committer:
louisberard
Date:
2020-06-05
Revision:
10:4f204c2ac16c
Parent:
9:b160a3de0d00

File content as of revision 10:4f204c2ac16c:

/**
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
2019/20
 
Name: Louis Berard
Username: LL17L2B
Student ID Number: 201209172
Date: 05/06/20
*/
#include "mbed.h"
#include "Gamepad.h"
#include "N5110.h"
///Objects
Gamepad pad;
N5110 lcd;
///initialise global variables to be used throughout the game
///initial player position in all levels.
char player_char = 'x';
int player_xpos = 9;
int player_ypos = 45;
int aim_xpos;
int aim_ypos;
int portal_1_xpos;
int portal_1_ypos;
int portal_2_xpos;
int portal_2_ypos;
///initialise x direction movement
int move = 0;
///initialise terminators for menu and game loops.
bool choice = false;
bool endgame = false;
///initialise Game array
char array[84][48];
/**the characters in the level array's represent the following:
*'0' = air
*'1' = right facing wall
*'2' = floor
*'3' = cieling
*'4' = left facing wall
*'B' = Button
*'S' = Spikes
*'P' = portal 1
*'Q' = portal 2
*'x' = player
*/
/// level 1
char _level_1[84][48] = {
    {'3','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','2'},
    {'3','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1','1','1','1','1','1','1','1','1','1','1','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','4','4','4','4','4','4','4','4','4','4','4','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1','D','D','D','D','D','D','D','D','D','D','D','D','D','D','D','D','D','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
 }; 
 /// level 3
char _level_3[84][48] = {
    {'3','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','2'},
    {'3','0','0','0','2','2','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','2','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','2','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','2','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','2','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','2','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','2','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','2','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','2','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','1','1','1','1','1','1','2'},
    {'3','0','0','0','0','0','0','0','0','0','2','0','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','4','4','4','4','4','4','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','2','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','2','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','2','0','0','0','0','0','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','0','0','0','0','0','0','0','0','0','0','2','2','2','0','0','0','0','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','0','0','0','0','0','0','0','0','0','0','2','2','2','0','0','0','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','0','0','0','0','0','0','0','0','0','0','2','2','2','0','0','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','0','0','0','0','0','0','0','0','0','0','2','2','2','0','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','0','0','0','0','0','0','0','0','0','0','2','2','2','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','2','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','2','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','2','3','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','S','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','S','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','2','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','2','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','2'},
    {'3','0','0','0','0','0','0','2','3','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','2'},
    {'3','0','0','0','0','0','0','2','3','4','4','4','4','4','4','4','4','4','4','4','4','2','3','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','4','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','B','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','1','1','1','1','1','1','1','1','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','4','4','4','4','4','4','4','4','2','3','D','D','D','D','D','D','D','D','D','D','D','D','D','D','D','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','2','1','1','1','1','1','1','1','1','2','3','0','0','0','0','0','0','0','D','0','0','0','0','0','0','0','2'},
    {'3','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
 };
 /// level 2
char _level_2[84][48] = {
    {'3','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','2'},
    {'3','0','0','0','2','2','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','0','0','0','0','0','2'},
    {'3','0','0','0','0','2','0','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','2','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','2','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','4','4','4','4','4','4','2'},
    {'3','0','0','0','0','0','0','0','2','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','2','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','2','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','2','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','2','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','2','0','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','2','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','2','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1','1','1','1','1','1','1','1','1','1','1','2'},
    {'3','0','0','0','0','0','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','B','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','4','4','4','4','4','4','4','4','4','4','4','2'},
    {'3','0','0','0','0','B','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','B','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','B','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','B','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','B','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','B','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','B','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','B','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','B','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','2','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1','D','D','D','D','D','D','D','D','D','D','D','D','D','D','D','D','D','2'},
    {'3','0','0','0','0','0','0','2','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
    {'3','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2'},
 };
///Prototypes
void pad_init();
void update_display();
void apply_move();
void add_player_array();
void get_move(int, Gamepad &pad);
void print_screen();
void collision_detection(int);
void erase_old_sprites(char,char);
void jump();
void get_portal_angle();
void place_portal_1();
void place_portal_2();
///Main function
int main(){
///initialise the pad   
    pad_init();
    ///loop until player has selected an option from the menu
    while(choice == false){
        ///print welcome screen
        lcd.clear();
        lcd.printString("Welcome to",0,0);
        lcd.printString("2D Portal!",0,1);
        lcd.printString("A = controls",0,2);
        lcd.printString("B = Level 1",0,3);
        lcd.printString("X = Level 2",0,4);
        lcd.printString("Y = Level 3",0,5);
        update_display();
        ///cycle LED's whilst on home screen
        pad.led(1,1);
        wait(0.05);
        pad.leds_off();
        pad.led(4,1);
        wait(0.05);
        pad.leds_off();
        pad.led(2,1);
        wait(0.05);
        pad.leds_off();
        pad.led(5,1);
        wait(0.05);
        pad.leds_off();
        pad.led(3,1);
        wait(0.05);
        pad.leds_off();
        pad.led(6,1);
        wait(0.05);
        pad.leds_off();
        /// print the controls for 5 seconds, then return to the menu screen.
        if(pad.A_pressed() == 1){
            lcd.clear();
            lcd.printString("Joystick =Move",0,0);
            lcd.printString("B = Portal 1",0,1);
            lcd.printString("Y = portal 2",0,2);
            lcd.printString("Pot2 = aim ",0,4);
            lcd.printString("A = jump",0,3);
            lcd.printString("Reset=Restart",0,5);
            lcd.refresh();
            wait_ms(5000);
            choice = false;
            //printf("instructions selected\n");
        }
            ///loads level 1.
        else if(pad.B_pressed() == 1){
            for(int i = 0; i < 84; i ++){
                for(int j = 0; j < 48; j ++){
                    array[i][j] = _level_1[i][j];
                    choice = true;
                }
            }
        }
            ///loads level 2
        else if(pad.X_pressed() == 1){
            for(int i = 0; i < 84; i ++){
                for(int j = 0; j < 48; j ++){
                    array[i][j] = _level_2[i][j];
                    choice = true;
                }
            }
        }
            ///loads level 3
        else if(pad.Y_pressed() == 1){
            for(int i = 0; i < 84; i ++){
                for(int j = 0; j < 48; j ++){
                    array[i][j] = _level_3[i][j];
                    choice = true;
                }
            }
        }
        ///refresh lcd to display chosen level when menu loop breaks.
        lcd.refresh();
    }
    ///Loop runs until the player has solved the puzzle and exited the right hand side of the screen.
    while(endgame == false){
        /// converts joystick input into left or right movement.
        get_move(move, pad);
        /// checks to see if the move is valid and handles teleportation logic.
        collision_detection(move);
        /// checks to see if the player has jumped, if they have then the players y pos will descrease by 1
        if(pad.A_pressed() == 1){
            jump();
        }
        ///checks to see if the player has placed portal 1, if they have then the portal will be placed in the array
        else if(pad.B_pressed() == 1){
            int portal_1_counter = 0;
            place_portal_1();
            ///turns on left red led (LED1) to show portal 1 has been placed.
            pad.led(1,1);
            for(int i = 0; i < 84; i ++){
                for(int j = 0; j < 48; j ++){
                    if (array[i][j] == 'P'){
                    portal_1_counter+= 1;
                    }      
                }
            }
            if (portal_1_counter == 1){
                //printf("exactly 1 portal 1 has been placed\n");
            }
        }
        ///checks to see if the player has placed portal 2, if they have then the portal will be placed in the array
        else if(pad.Y_pressed() == 1){
            int portal_2_counter = 0;
            place_portal_2();
            ///turns on right red led (LED4) to show portal 2 has been placed.
            pad.led(4,1);
            for(int i = 0; i < 84; i ++){
                for(int j = 0; j < 48; j ++){
                    if (array[i][j] == 'Q'){
                    portal_2_counter+= 1;   
                    }   
                }
            }
            if (portal_2_counter == 1){
            //printf("exactly 1 portal 2 has been placed\n");
            }
        }
        else
        ///handles setting the new position of the player in the array and erasing the previous player position from the array.
        apply_move();
        ///prints to the lcd
        int player_counter = 0;
        for(int i = 0; i < 84; i ++){
            for(int j = 0; j < 48; j ++){
                if (array[i][j] == 'x'){
                player_counter+=1;
                }
            }
        }
                if (player_counter == 1){
                //printf("exactly 1 player has been placed\n");
                }
        print_screen();
        ///refreshes the lcd to display the new screen after movement.
        update_display();
        /// the objective of the game is to open the door and walk through it. as the door is on the right hand side of the screen, when the player
        /// xpos exceeds 82, the puzzle is assumed to be solved as the door has to be opened to progress.
        if(player_xpos > 82){
            endgame = true;
        }
    }
    ///clear the level and print the win screen
    lcd.clear();
    lcd.printString("Puzzle solved!",0,0);
    lcd.printString("Press reset",0,1);
    lcd.printString("To play again",0,2);
    lcd.refresh();
}
///initialise the game array with 0's
void array_init(){
    for(int j = 0; j < 48; j++){
        for(int i = 0; i < 84; i++){
         array[i][j] = '0';
        }
    }
}    
void apply_move(){
    /// removes old player char in the array and increments the value of the player_xpos by the value in move
    int old_player_xpos = player_xpos;
    player_xpos += move;
    array[old_player_xpos][player_ypos] = '0';
    //printf("player has moved!");
    ///checks if the player is in the air, if they are then increase y by 1 until the player is on the floor and remove the old player char from the array
    int old_player_ypos = player_ypos;
    if(array[player_xpos][player_ypos+1] == '0'){
        player_ypos += 1;
        array[player_xpos][old_player_ypos] = '0';
        //printf("player has moved down!");
    }
    ///checks if the player has landed on spikes and displays the end game screen with instructions for how to restart the game if they have.
    else if(array[player_xpos][player_ypos+1] == 'S'){
        lcd.clear();
        lcd.printString("Spike hit!",0,0);
        lcd.printString("Restart to",0,1);
        lcd.printString("Try again!",0,2);
        lcd.refresh();
        wait_ms(1000000000);
    ///places the player char in the array
    add_player_array();
    }
}
/// converts the chars in the array to on or off pixels, dependant on the type of object in the array. i.e walls are a dark pixel and portals are a light pixel
/// this helps to distinguis where the portals are.
void print_screen(){
    for(int j = 0; j < 48; j++){
        for(int i = 0; i < 84; i++){
     
            if (array[i][j] == '0'){
                lcd.setPixel(i,j,false);
            }
            else if(array[i][j] == '1'){
                lcd.setPixel(i,j, true);
            }
            else if(array[i][j] == '2'){
                lcd.setPixel(i,j, true);
            }
            else if(array[i][j] == '3'){
                lcd.setPixel(i,j, true);
            }
            else if(array[i][j] == '4'){
                lcd.setPixel(i,j, true);
            }    
            else if(array[i][j] == 'x'){
                lcd.setPixel(i,j, true);
            }
             
            else if(array[i][j] == 'P' || array[i][j] == 'Q'){
                lcd.setPixel(i,j, false);
            }
            else if(array[i][j] == 'B' || array[i][j] == 'D'|| array[i][j] == 'S'){
                lcd.setPixel(i,j, true);
            }
        }
    }
         /// finds the position pot(2) is aiming at and prints the aim assist line   
         get_portal_angle();
         /// prints the player sprite
         lcd.setPixel(player_xpos,player_ypos-1, true);
         lcd.setPixel(player_xpos-1,player_ypos-2, true);
         lcd.setPixel(player_xpos-1,player_ypos-3, true);
         lcd.setPixel(player_xpos-2,player_ypos-3, true);
         lcd.setPixel(player_xpos,player_ypos-3, true);
         lcd.setPixel(player_xpos-1,player_ypos-4, true);
         lcd.setPixel(player_xpos-2,player_ypos-1, true);
         lcd.setPixel(player_xpos-2,player_ypos, true);
} 
///initilise the pad and LCD
void pad_init(){   
    lcd.init();
    lcd.setContrast(0.45);
    lcd.clear();
    pad.init();
}
///places the player char in the array
void add_player_array(){
     array[player_xpos][player_ypos] = player_char;
}
/// takes the input from the joystick and converts it into left/rigth movments
void get_move(int, Gamepad &pad){
    char d = pad.get_direction();
    if(d == E){
        move = 1;
    }
    else if(d == W){
        move = -1;   
    }
    else move = 0;
}
/// refreshes the display with the updated game screen    
void update_display(){
    lcd.refresh(); ///Refreshes the lcd so the pixels appear
    wait_ms(150);  ///Frame rate of game
}
void collision_detection(int){
    ///check if the player is moving into any object other than air. if they are then x direction movement = 0
    char dir = pad.get_direction();
    if(array[player_xpos+1][player_ypos] != '0' && dir == E){
        move = 0;
    }
    else if(array[player_xpos-1][player_ypos] != '0' && dir == W){
        move = 0;
    }
    /// checks if the player is directly next to a portal and runs the logic to check where the player should be teleported to. This is dependant on the surfaces the second portal is placed on.
    if(array[player_xpos+1][player_ypos] == 'P' || array[player_xpos-1][player_ypos] == 'P' || array[player_xpos][player_ypos-1] == 'P'  || array[player_xpos][player_ypos+1] == 'P' ){
        move = 0;
    /// removes the old player char from the array
        array[player_xpos][player_ypos] = '0';
    ///logic for entering portal 1
        /// if the position horizontally next to portal 2 is a '3' then portal 2 has been placed on a ceiling and the player must be placed below portal 2.
        if (array[portal_2_xpos-1][portal_2_ypos] == '3'){
            player_xpos = portal_2_xpos;
            player_ypos = portal_2_ypos+2;
        }
        /// if the position horizontally next to portal 2 is a '2' then portal 2 has been placed on a floor and the player must be placed above and to the side of portal 2 so they dont fall back in.
        else if(array[portal_2_xpos-1][portal_2_ypos] == '2'){
                player_xpos = portal_2_xpos + 1;
                player_ypos = portal_2_ypos-1;
        }
        /// if the position vertically next to portal 2 is a '1' then portal 2 has been placed on a right facing wall and the player must be placed on the left of portal 2.
        else if(array[portal_2_xpos][portal_2_ypos - 1] == '1'){
                player_xpos = portal_2_xpos - 2;
                player_ypos = portal_2_ypos;
        }
        /// if the position vertically next to portal 2 is a '4' then portal 2 has been placed on a left facing wall and the player must be placed on the right of portal 2.
        else if(array[portal_2_xpos][portal_2_ypos - 1] == '4'){
                player_xpos = portal_2_xpos + 2;
                player_ypos = portal_2_ypos;
        }
    }
    /// logic for entering portal 2
    else if(array[player_xpos+1][player_ypos] == 'Q' || array[player_xpos-1][player_ypos] == 'Q' || array[player_xpos][player_ypos-1] == 'Q'  || array[player_xpos][player_ypos+1] == 'Q' ){
        move = 0;
        array[player_xpos][player_ypos] = '0';
        /// if the position horizontally next to portal 1 is a '3' then portal 1 has been placed on a ceiling and the player must be placed below portal 1.
        if (array[portal_1_xpos-1][portal_1_ypos] == '3'){
            player_xpos = portal_1_xpos;
            player_ypos = portal_1_ypos+2;
        }
        /// if the position horizontally next to portal 1 is a '2' then portal 1 has been placed on a floor and the player must be placed above and to the side of portal 1 so they dont fall back in.
        else if(array[portal_1_xpos-1][portal_1_ypos] == '2'){
                player_xpos = portal_1_xpos + 1;
                player_ypos = portal_1_ypos-1;
        }
        /// if the position vertically next to portal 1 is a '1' then portal 1 has been placed on a right facing wall and the player must be placed on the left of portal 1.
        else if(array[portal_1_xpos][portal_1_ypos - 1] == '1'){
                player_xpos = portal_1_xpos - 2;
                player_ypos = portal_1_ypos;
        }
        /// if the position vertically next to portal 1 is a '4' then portal 1 has been placed on a left facing wall and the player must be placed on the right of portal 1.
        else if(array[portal_1_xpos][portal_1_ypos - 1] == '4'){
                player_xpos = portal_1_xpos + 2;
                player_ypos = portal_1_ypos;
        }
    }   
    ///removes the old player char from the array and replaces it with zero  
    erase_old_sprites(player_xpos, player_ypos);
    ///checks if the player has stepped on the button, if they have then the button and door are replaced by air and the route to the exit is open.  
    if(array[player_xpos][player_ypos+1] == 'B'){
        for(int i = 0; i < 84; i++){
            for(int j = 0; j < 48; j++){
                if(array[i][j] == 'D' || array[i][j] == 'B'){
                    array[i][j] = '0';
                }
            }
        }
        //printf("Doors and buttons removed!");
    }
}
/// removes the old player character from the array.
void erase_old_sprites(char,char){
    int old_player_xpos = player_xpos;
    array[old_player_xpos][player_ypos] = '0';
    
    int old_player_ypos = player_ypos;
    array[player_xpos][old_player_ypos] = '0';
}
void jump(){       ///if the space beneath the player = floor, then increase ypos by 1. Apply move causes the player to fall again shortly after on the next loop.
        if(array[player_xpos][player_ypos+1] == '2'){
        int old_player_ypos = player_ypos;
        player_ypos += -1;
        //printf("player has jumped!");
        ///removes old player char from the array
        array[player_xpos][old_player_ypos] = '0';
        }
}        
/// next steps are to turn pot into degrees and make a function which chechks which pixel the pot is pointing at. 
/// this function takes the pot(2) input range and converts it into 45 degree segments, after which the aim detector is sent out until it hits another object
void get_portal_angle(){
    ///take pot(2) val as a double to allow for more precise segments.
    double angle_input = pad.read_pot2();
    ///position the player is aiming at
    aim_xpos = player_xpos;
    aim_ypos = player_ypos;
    /// if pot(2) is between 0 and 45 degrees, aim detection is projected at the floor, 
    if(angle_input > 0 && angle_input < 0.125){
        /// The aim_ypos will increment until it is next to a surface that isnt the air.
        while(array[aim_xpos][aim_ypos + 1] == '0'){
        aim_ypos = player_ypos + 1;
        }
        /// increment once more to place portal in the surface
        aim_ypos = player_ypos + 1;
    }  
    /// if pot(2) is between 45 and 90 degrees, aim detection is diagonally down left
    else if(angle_input > 0.125 && angle_input < 0.25){
        while(array[aim_xpos -1 ][aim_ypos + 1] == '0'){
        /// performs relevant increments and decrements for downward diagonal left movement. 
        aim_xpos += - 1;
        aim_ypos += 1;
        }
        /// performs increments and decrements once more to place portal in the surface
        aim_xpos += - 1;
        aim_ypos += 1;
    }
    /// if pot(2) is between 90 and 135 degrees, aim detection is projected towards the left
    else if(angle_input > 0.25 && angle_input < 0.375){
        while(array[aim_xpos -1 ][aim_ypos] == '0'){
        /// The aim_xpos will decrement until it is next to a surface that isnt the air.
        aim_xpos += - 1;
        }
        /// decrement once more to place portal in the surface
        aim_xpos += - 1;
    }
    /// if pot(2) is between 135 and 180 degrees, aim detection is diagonally up left
    else if(angle_input > 0.375 && angle_input < 0.5){
        while(array[aim_xpos -1 ][aim_ypos-1] == '0'){
        /// performs relevant decrements for upward diagonal left movement. 
        aim_xpos += - 1;
        aim_ypos += - 1;
        }
        /// performs decrements once more to place portal in the surface
        aim_xpos += - 1;
        aim_ypos += -1;
    }
    /// if pot(2) is between 180 and 225 degrees, aim detection is upwards
    else if(angle_input > 0.5 && angle_input < 0.625){
        while(array[aim_xpos][aim_ypos-1] == '0'){
        /// The aim_ypos will decrement until it is next to a surface that isnt the air.
        aim_ypos += - 1;
        }
        /// decrement once more to place portal in the surface
        aim_ypos += -1;
    }
    /// if pot(2) is between 225 and 270 degrees, aim detection is diagonally up right
    else if(angle_input > 0.625 && angle_input < 0.75){
        while(array[aim_xpos+1][aim_ypos-1] == '0'){
        /// performs relevant increments and decrements for downward diagonal left movement.
        aim_ypos += - 1;
        aim_xpos += 1;
        }
        /// performs increments and decrements once more to place portal in the surface.
        aim_ypos += -1;
        aim_xpos +=  1;
    }
    /// if pot(2) is between 270 and 315 degrees, aim detection is to the right
    else if(angle_input > 0.75 && angle_input < 0.875){
        while(array[aim_xpos+1][aim_ypos] == '0'){
        /// The aim_xpos will increment until it is next to a surface that isnt the air.
        aim_xpos += 1;
        }
        /// The aim_xpos will increment once more to place the portal in the surface.
        aim_xpos +=  1;
    }
    /// if pot(2) is between 315 and 360 degrees, aim detection is diagonally down right
    else if(angle_input > 0.875 && angle_input < 1){
        while(array[aim_xpos+1][aim_ypos + 1] == '0'){
        /// performs relevant increments for downward diagonal left movement.
        aim_xpos += 1;
        aim_ypos += 1;
        }
        /// performs increments once more to place portal in the surface
        aim_xpos +=  1;
        aim_ypos += 1;
    }
    /// draw the aim assist dashed line to give a visual representation of where the player is aiming the portal gun
    /// this code allows for dynamic drawing of the aim assist relevant to the players position and the aim direction given by the potentiometer
    lcd.drawLine((player_xpos),(player_ypos), aim_xpos,aim_ypos,2);
    lcd.refresh();
}  
///removed the old portal 1 and places the new one where the aim assist is pointed.    
void place_portal_1(){
        int old_p1_xpos = portal_1_xpos;
        int old_p1_ypos = portal_1_ypos;
        array[old_p1_xpos][old_p1_ypos] = '1';
        portal_1_xpos = aim_xpos;
        portal_1_ypos = aim_ypos;
        array[portal_1_xpos][portal_1_ypos] = 'P';
}                
///removed the old portal 2 and places the new one where the aim assist is pointed.  
void place_portal_2(){
        int old_p2_xpos = portal_2_xpos;
        int old_p2_ypos = portal_2_ypos;
        array[old_p2_xpos][old_p2_ypos] = '1';
        portal_2_xpos = aim_xpos;
        portal_2_ypos = aim_ypos;
        array[portal_2_xpos][portal_2_ypos] = 'Q';
}