c语言写一个别踩白块小游戏的代码
时间: 2023-08-01 14:06:13 浏览: 41
好的!以下是一个简单的别踩白块小游戏的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 4
#define COLS 4
void init_board(int board[][COLS], int rows, int cols); // 初始化游戏面板
void print_board(int board[][COLS], int rows, int cols); // 打印游戏面板
void play_game(int board[][COLS], int rows, int cols); // 游戏主体
void move_board(int board[][COLS], int rows, int cols); // 移动游戏面板
int main(void)
{
int board[ROWS][COLS];
init_board(board, ROWS, COLS);
print_board(board, ROWS, COLS);
play_game(board, ROWS, COLS);
return 0;
}
void init_board(int board[][COLS], int rows, int cols)
{
int i, j;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
board[i][j] = 0;
}
}
srand((unsigned int)time(NULL));
int i_rand = rand() % 4;
board[0][i_rand] = 1;
}
void print_board(int board[][COLS], int rows, int cols)
{
int i, j;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
printf("%d ", board[i][j]);
}
printf("\n");
}
}
void play_game(int board[][COLS], int rows, int cols)
{
int i, j;
for (i = 1; i < rows; i++)
{
move_board(board, rows, cols);
print_board(board, rows, cols);
int flag = 0;
for (j = 0; j < cols; j++)
{
if (board[i][j] == 1 && board[i - 1][j] == 0)
{
printf("Game Over!\n");
flag = 1;
break;
}
}
if (flag)
{
break;
}
board[i][rand() % 4] = 1;
}
printf("Congratulations! You won!\n");
}
void move_board(int board[][COLS], int rows, int cols)
{
int i, j;
for (i = rows - 1; i > 0; i--)
{
for (j = 0; j < cols; j++)
{
board[i][j] = board[i - 1][j];
}
}
int i_rand = rand() % 4;
board[0][i_rand] = 1;
}
```
这个代码中,我们定义了一个 4 行 4 列的整数数组 `board` 来表示游戏面板,其中 0 表示黑块,1 表示白块。`init_board` 函数用于初始化游戏面板,首先将所有元素赋值为 0,然后随机在第一行的某个位置上生成一个白块。`print_board` 函数用于打印游戏面板。`play_game` 函数是游戏主体,其中的 `move_board` 函数用于移动游戏面板,将所有的元素都向下移动一行,然后在第一行的某个位置上生成一个白块。在每一行结束后,我们都会检查游戏是否结束,如果某一列中同时出现了黑块和白块,那么游戏结束。最后,如果玩家成功通过了所有行,那么游戏胜利。
以上是一个简单的别踩白块小游戏的代码,你可以根据需要进行修改和扩展。