hubojing / C-Language-Games

C语言经典小游戏。
553 stars 216 forks source link

Snake game #10

Closed Goyalaayush22 closed 1 year ago

Goyalaayush22 commented 2 years ago

// C program to build the complete // snake game

include

include

include

include

int i, j, height = 20, width = 20; int gameover, score; int x, y, fruitx, fruity, flag; // Function to generate the fruit // within the boundary void setup() { gameover = 0; // Stores height and width 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; } // Function to draw the boundaries 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 printf(" "); } } printf("\n"); } // Print the score after the // game ends printf("score = %d", score); printf("\n"); printf("press X to quit the game"); } // Function to take the 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); switch (flag) { case 1: y--; break; case 2: x++; break; case 3: y++; break; case 4: x--; break; default: break; } // If the game is over if (x < 0 || x > height || y < 0 || y > width) gameover = 1; // If snake reaches the fruit // then update the score if (x == fruitx && y == fruity) { label3: fruitx = rand() % 20; if (fruitx == 0) goto label3; // After eating the above fruit // generate new fruit label4: fruity = rand() % 20; if (fruity == 0) goto label4; score += 10; } } // Driver Code void main() { int m, n; // Generate boundary setup(); // Until the game is over while (!gameover) { // Function Call draw(); input(); logic(); } }