# Simulation of the game of Snake in 2D array assignment help

This assignment requires us to write a program that creates a 2D array, that represents a game area where a snake moves until it collides with itself. The program created by our array assignment helpers reads in the number of moves, and the direction and distance for each move. If the snake hits an obstacle or itself then you end the simulation.
```#include using namespace std; char** createField(int r, int c){ char **arr; // initializing array arr = new char*[r]; for (size_t i = 0; i < r; i++){ arr[i] = new char[c]; } // Marking boundaries for (int i = 0; i < c; i++){ arr[0][i] = 'W'; arr[r - 1][i] = 'W'; } for (int i = 1; i < r - 1; i++){ arr[i][0] = 'W'; arr[i][c - 1] = 'W'; for (int j = 1; j < c - 1; j++){ arr[i][j] = '.'; } } // Marking obstacles int n, x, y; char d; cout << "Enter the number of obstacles: "; cin >> n; cout << "Enter the location of obstacles: " << endl; while (n--){ cin >> x >> d >> y; arr[x][y] = 'O'; } return arr; } void printArr(int r, int c, char**arr){ for (size_t i = 0; i < r; i++) { for (size_t j = 0; j < c; j++) { cout << arr[i][j]; } cout << endl; } } int boardEdit(char ***board, int gx, int gy, int newgx, int newy){ } void playGame(char **board, int r, int c){ int gx, gy; char d; cout << "Enter the location of the gate: "; cin >> gx >> d >> gy; board[gx][gy] = 'G'; int t, num; char *darr; int * numarr; bool end = false; cout << "Enter the number of turns: "; cin >> t; darr = new char[t]; numarr = new int[t]; cout << "Enter the turns:" << endl; for (size_t i = 0; i < t; i++) { cin >> darr[i] >> numarr[i]; } int index = 0; while (t-- && !end){ d = darr[index]; num = numarr[index++]; if (d == 'U'){ // iterating up to the new x and edit the cell value for (size_t i = gx - 1; !end && (i >= gx - num); i--) { if (board[i][gy] == 'S'){ // if going over itself => end game end = true; } else if (board[i][gy] != 'O'){ // if not an obstacle => edit cell safely board[i][gy] = 'S'; } } gx -= num; } else if (d == 'D'){ // iterating down to the new x and edit the cell value for (size_t i = gx + 1; !end && (i <= gx + num); i++) { if (board[i][gy] == 'S'){ end = true; } else if (board[i][gy] != 'O'){ board[i][gy] = 'S'; } } gx += num; } else if (d == 'L'){ // iterating left to the new x and edit the cell value for (size_t i = gy - 1; !end && (i >= gy - num); i--) { if (board[gx][i] == 'S'){ end = true; } else if (board[gx][i] != 'O'){ board[gx][i] = 'S'; } } gy -= num; } else if (d == 'R'){ // iterating right to the new x and edit the cell value for (size_t i = gy + 1; !end && (i <= gx + num); i++) { if (board[gx][i] == 'S'){ end = true; } else if (board[gx][i] != 'O'){ board[gx][i] = 'S'; } } gy += num; } } printArr(r, c, board); } int main(){ char ** board; int rows, cols; cout << "Enter the number of rows: "; cin >> rows; cout << "Enter the number of columns: "; cin >> cols; board = createField(rows, cols); playGame(board, rows, cols); // Clearing the memory for (int i = 0; i < rows; i++){ delete board[i]; } delete[]board; return 0; } ```