The getch isn't working the way I want it to.
namespace sense {
using namespace sense;
void change_direction() {
if ((c == 'd') && (direction != "left")) {direction = "right";}
if ((c == 'a') && (direction != "right")) {direction = "left";}
if ((c == 'w') && (direction != "down")) {direction = "up";}
if ((c == 's') && (direction != "up")) {direction = "down";}
}
void sense_keypress() {
if ((c == 'a') || ((c == 'd') || ((c == 's') || ((c == 'w')) {d = c;}
initscr();
timeout(100);
c = getch();
endwin();
if ((c != 'd') && (c != 'a') && (c != 'w') && (c != 's')) {c = d;}
cout << c;
if ((c == 'd') && (direction != "left")) {direction = "right";}
if ((c == 'a') && (direction != "right")) {direction = "left";}
if ((c == 'w') && (direction != "down")) {direction = "up";}
if ((c == 's') && (direction != "up")) {direction = "down";}
cout << direction;
}
}
int doit = (100000 - (level_num^10));
int dist_2 = 0;
namespace run {
using namespace run;
using namespace setup;
using namespace this_thread; // sleep_for, sleep_until
using namespace chrono; //nanoseconds, system_clock, seconds
using namespace sense;
using namespace setup;
void move_right() {
if ((head_pos[1] < 28) && (touching_self == false) && (dist_moved == dist_2)) {
if (length == 1) {base[head_pos[0]][head_pos[1]] = 0;}
dist_2++;
head_pos[1]++;
base[head_pos[0]][head_pos[1]] = 2;
}
}
void move_left() {
if ((head_pos[1] > 1) && (touching_self == false) && (dist_moved == dist_2)) {
if (length == 1) {base[head_pos[0]][head_pos[1]] = 0;}
dist_2++;
head_pos[1]--;
base[head_pos[0]][head_pos[1]] = 2;
}
}
void move_up() {
if ((head_pos[0] > 1) && (touching_self == false) && (dist_moved == dist_2)) {
if (length == 1) {base[head_pos[0]][head_pos[1]] = 0;}
dist_2++;
head_pos[0]--;
base[head_pos[0]][head_pos[1]] = 2;
}
}
void move_down() {
if ((head_pos[0] < 18) && (touching_self == false) && (dist_moved == dist_2)) {
if (length == 1) {base[head_pos[0]][head_pos[1]] = 0;}
dist_2++;
head_pos[0]++;
base[head_pos[0]][head_pos[1]] = 2;
}
}
void move() {
usleep(doit);
sense_keypress();
if (direction == "right") {
move_right();
usleep(10000);
dist_moved++;
}
if (direction == "left") {
move_left();
usleep(10000);
dist_moved++;
}
if (direction == "up") {
move_up();
usleep(10000);
dist_moved++;
}
if (direction == "down") {
move_down();
usleep(10000);
dist_moved++;
}
for (int z = 25; z > 0; z--) {
cout << "\033[F ";
}
cout << "\r";
for (int r = 0; r < 20; r++) {
for (int c = 0; c < 30; c++) {
if (base[ r ][ c ] == 5) {cout << " |";}
if (base[ r ][ c ] == 4) {cout << "| ";}
if (base[ r ][ c ] == 3) {cout << "--";}
if (base[ r ][ c ] == 2) {cout << "[]";}
if (base[ r ][ c ] == 1) {cout << "{}";}
if (base[ r ][ c ] == 0) {cout << " ";}
}
cout << endl;
}
}
}