请用C语言帮我写一个开心消消乐小游戏的代码
下面是一个简单的开心消消乐小游戏的C语言代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 6
#define COLS 6
// 初始化游戏棋盘
void initBoard(char board[ROWS][COLS]) {
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
board[i][j] = 'A' + rand() % 6; // 随机生成A-F的字符作为棋盘格子的内容
}
}
}
// 打印游戏棋盘
void printBoard(char board[ROWS][COLS]) {
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%c ", board[i][j]);
}
printf("\n");
}
}
// 判断某个位置是否在棋盘内
int isValidPosition(int row, int col) {
return row >= 0 && row < ROWS && col >= 0 && col < COLS;
}
// 消除相同的格子(从指定位置开始)
void eliminate(char board[ROWS][COLS], int row, int col) {
char target = board[row][col]; // 目标格子的内容
board[row][col] = ' '; // 将目标格子置为空
// 分别判断目标格子的上、下、左、右四个方向的相邻格子是否与目标格子内容相同,如果相同则递归调用eliminate函数继续消除
if (isValidPosition(row - 1, col) && board[row - 1][col] == target) {
eliminate(board, row - 1, col);
}
if (isValidPosition(row + 1, col) && board[row + 1][col] == target) {
eliminate(board, row + 1, col);
}
if (isValidPosition(row, col - 1) && board[row][col - 1] == target) {
eliminate(board, row, col - 1);
}
if (isValidPosition(row, col + 1) && board[row][col + 1] == target) {
eliminate(board, row, col + 1);
}
}
// 判断游戏是否结束(即棋盘是否还存在可以消除的格子)
int isGameOver(char board[ROWS][COLS]) {
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
if (board[i][j] != ' ') {
return 0; // 如果存在非空格子,游戏没有结束
}
}
}
return 1; // 所有格子都为空,游戏结束
}
int main() {
char board[ROWS][COLS];
srand(time(NULL)); // 根据当前时间设置随机数种子
initBoard(board);
printBoard(board);
while (!isGameOver(board)) {
int row, col;
printf("请输入要消除的格子的行号和列号(以空格分隔):");
scanf("%d %d", &row, &col);
if (isValidPosition(row, col)) {
eliminate(board, row, col);
printf("消除后的棋盘:\n");
printBoard(board);
} else {
printf("无效的位置!\n");
}
}
printf("游戏结束!\n");
return 0;
}
这个代码实现了一个简单的开心消消乐游戏。玩家输入要消除的格子的行号和列号,程序会根据这个位置开始递归地消除相同的格子。游戏结束的条件是棋盘上不存在可以消除的格子
原文地址: https://www.cveoy.top/t/topic/hGdD 著作权归作者所有。请勿转载和采集!