C语言编写消消乐小游戏的代码
时间: 2023-09-03 15:11:08 浏览: 284
以下是一个简单的C语言消消乐小游戏的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 8 // 定义行数
#define COL 8 // 定义列数
// 颜色定义
#define COLOR_RED "\033[1;31m"
#define COLOR_GREEN "\033[1;32m"
#define COLOR_YELLOW "\033[1;33m"
#define COLOR_BLUE "\033[1;34m"
#define COLOR_PURPLE "\033[1;35m"
#define COLOR_CYAN "\033[1;36m"
#define COLOR_RESET "\033[0m"
// 游戏地图
int map[ROW][COL];
// 随机生成地图
void generateMap() {
int i, j;
srand(time(NULL));
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
map[i][j] = rand() % 5 + 1;
}
}
}
// 打印地图
void printMap() {
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
switch (map[i][j]) {
case 1:
printf(COLOR_RED "● " COLOR_RESET);
break;
case 2:
printf(COLOR_GREEN "● " COLOR_RESET);
break;
case 3:
printf(COLOR_YELLOW "● " COLOR_RESET);
break;
case 4:
printf(COLOR_BLUE "● " COLOR_RESET);
break;
case 5:
printf(COLOR_PURPLE "● " COLOR_RESET);
break;
default:
printf(" ");
break;
}
}
printf("\n");
}
}
// 消除相同颜色的方块
int eliminate(int x, int y, int color) {
if (x < 0 || x >= ROW || y < 0 || y >= COL || map[x][y] != color) {
return 0;
}
map[x][y] = 0;
return 1 + eliminate(x - 1, y, color) + eliminate(x + 1, y, color) + eliminate(x, y - 1, color) + eliminate(x, y + 1, color);
}
// 下落方块
void drop() {
int i, j, k;
for (j = 0; j < COL; j++) {
k = ROW - 1;
for (i = ROW - 1; i >= 0; i--) {
if (map[i][j] != 0) {
map[k--][j] = map[i][j];
}
}
for (; k >= 0; k--) {
map[k][j] = 0;
}
}
}
// 判断是否游戏结束
int isGameOver() {
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
if (map[i][j] != 0 && eliminate(i, j, map[i][j]) >= 3) {
return 0;
}
}
}
return 1;
}
int main() {
int x, y;
generateMap();
while (1) {
system("clear"); // 清屏
printMap(); // 打印地图
if (isGameOver()) {
printf("Game Over!\n");
break;
}
printf("Please enter the location you want to eliminate (row, col): ");
scanf("%d %d", &x, &y);
if (eliminate(x, y, map[x][y]) < 3) { // 如果无法消除
printf("Cannot eliminate the block!\n");
} else { // 如果可以消除
drop(); // 下落方块
}
}
return 0;
}
```
这个代码示例中,使用了递归函数来消除相同颜色的方块,通过下落方块来填补空缺。在主函数中,使用了循环来不断接收玩家输入,直到游戏结束。同时,也使用了 ANSI 转义序列来实现彩色输出。
希望这个代码示例能够帮助您理解消消乐小游戏的实现方式。
阅读全文