Question: write *Psuedo code for this source code. ______________________________________________ #include #include void run(); void printMap(); void initMap(); void move(int dx, int dy); void update(); void changeDirection(char

write *Psuedo code for this source code.

______________________________________________

#include #include

void run(); void printMap(); void initMap(); void move(int dx, int dy); void update(); void changeDirection(char key); void clearScreen(); void generateFood();

char getMapValue(int value);

// Map dimensions const int mapwidth = 20; const int mapheight = 20;

const int size = mapwidth * mapheight;

// The tile values for the map int map[size];

// Snake head details int headxpos; int headypos; int direction;

// Amount of food the snake has (How long the body is) int food = 3;

// Determine if game is running bool running;

int main() { run(); return 0; }

// Main game function void run() { // Initialize the map initMap(); running = true; while (running) { // If a key is pressed if (kbhit()) { // Change to direction determined by key pressed changeDirection(getch()); } // Upate the map update();

// Clear the screen clearScreen();

// Print the map printMap();

// wait 0.5 seconds _sleep(500); }

// Print out game over text std::cout << "\t\t!!!Game over!" << std::endl << "\t\tYour score is: " << food;

// Stop console from closing instantly std::cin.ignore(); }

// Changes snake direction from input void changeDirection(char key) {

switch (key) { case 'UP': if (direction != 2) direction = 0; break; case 'RIGHT': if (direction != 3) direction = 1; break; case 'DOWN': if (direction != 4) direction = 2; break; case 'LEFT': if (direction != 5) direction = 3; break; } }

// Moves snake head to new location void move(int dx, int dy) { // determine new head position int newx = headxpos + dx; int newy = headypos + dy;

// Check if there is food at location if (map[newx + newy * mapwidth] == -2) { // Increase food value (body length) food++;

// Generate new food on map generateFood(); }

// Check location is free else if (map[newx + newy * mapwidth] != 0) { running = false; }

// Move head to new location headxpos = newx; headypos = newy; map[headxpos + headypos * mapwidth] = food + 1;

}

// Clears screen void clearScreen() { // Clear the screen system("cls"); }

// Generates new food on map void generateFood() { int x = 0; int y = 0; do { // Generate random x and y values within the map x = rand() % (mapwidth - 2) + 1; y = rand() % (mapheight - 2) + 1;

// If location is not free try again } while (map[x + y * mapwidth] != 0);

// Place new food map[x + y * mapwidth] = -2; }

// Updates the map void update() { // Move in direction indicated switch (direction) { case 0: move(-1, 0); break; case 1: move(0, 1); break; case 2: move(1, 0); break; case 3: move(0, -1); break; }

// Reduce snake values on map by 1 for (int i = 0; i < size; i++) { if (map[i] > 0) map[i]--; } }

// Initializes map void initMap() { // Places the initual head location in middle of map headxpos = mapwidth / 2; headypos = mapheight / 2; map[headxpos + headypos * mapwidth] = 1;

// Places top and bottom walls for (int x = 0; x < mapwidth; ++x) { map[x] = -1; map[x + (mapheight - 1) * mapwidth] = -1; }

// Places left and right walls for (int y = 0; y < mapheight; y++) { map[0 + y * mapwidth] = -1; map[(mapwidth - 1) + y * mapwidth] = -1; }

// Generates first food generateFood(); }

// Prints the map to console void printMap() { for (int x = 0; x < mapwidth; ++x) { for (int y = 0; y < mapheight; ++y) { // Prints the value at current x,y location std::cout << getMapValue(map[x + y * mapwidth]); } // Ends the line for next x value std::cout << std::endl; } }

// Returns graphical character for display from map value char getMapValue(int value) { // Returns a part of snake body if (value > 0) return 'o';

switch (value) { // Return wall case -1: return 'X'; // Return food case -2: return 'O'; } }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!