Bz#include #include #include int i, j, height = 20, width = 20; int gameover, score; int x, y, fruitX, fruitY, flag; // Function to generate the fruit int length; int tailX[100], tailY[100]; void setup() { gameover = 0; // Initial position of the snake x = height / 2; y = width / 2; label1: fruitX = rand() % 20; if (fruitX == 0) goto label1; label2: fruitY = rand() % 20; if (fruitY == 0) goto label2; score = 0; length = 0; } // Function to draw the playing board void draw() { system("cls"); for (i = 0; i < height; i++) { for (j = 0; j < width; j++) { if (i == 0 || i == width - 1 || j == 0 || j == height - 1) { printf("#"); } else { if (i == x && j == y) printf("0"); else if (i == fruitX && j == fruitY) printf("*"); else { int isprint = 0; for (int k = 0; k < length; k++) { if (i == tailX[k] && j == tailY[k]) { printf("o"); isprint = 1; } } if (isprint == 0) printf(" "); } } } printf("\n"); } printf("score = %d", score); printf("\n"); printf("press X to quit the game"); } // Function to take input void input() { if (_kbhit()) { switch (_getch()) { case 'a': flag = 1; break; case 's': flag = 2; break; case 'd': flag = 3; break; case 'w': flag = 4; break; case 'x': gameover = 1; break; } } } // Function for the logic behind each movement void logic() { Sleep(0.01); int prevX = tailX[0]; int prevY = tailY[0]; int prev2X, prev2Y; tailX[0] = x; tailY[0] = y; for (i = 1; i < length; i++) { prev2X = tailX[i]; prev2Y = tailY[i]; tailX[i] = prevX; tailY[i] = prevY; prevX = prev2X; prevY = prev2Y; } switch (flag) { case 1: y--; break; case 2: x++; break; case 3: y++; break; case 4: x--; break; default: break; } // Gameover conditions if (x < 0 || x > height || y < 0 || y > width) gameover = 1; for (int i = 0; i < length; i++) { if (tailX[i] == x && tailY[i] == y) gameover = 1; } // If snake eats fruit if (x == fruitX && y == fruitY) { label3: fruitX = rand() % 20; if (fruitX == 0) goto label3; label4: fruitY = rand() % 20; if (fruitY == 0) goto label4; score += 10; length++; } } int main() { int m, n; // Generate boundary setup(); // Until the game is over while (!gameover) { // Function Call draw(); input(); logic(); } return 0; }