用c语言编写2048小游戏
时间: 2023-10-25 12:06:42 浏览: 44
好的,以下是一个简单的C语言实现2048小游戏的代码,供您参考。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 4 // 定义棋盘大小为4x4
int board[SIZE][SIZE]; // 定义棋盘数组
// 初始化棋盘
void init_board() {
int i, j;
for(i = 0; i < SIZE; i++) {
for(j = 0; j < SIZE; j++) {
board[i][j] = 0;
}
}
srand(time(NULL));
int x1 = rand() % SIZE;
int y1 = rand() % SIZE;
int x2, y2;
do {
x2 = rand() % SIZE;
y2 = rand() % SIZE;
} while(x1 == x2 && y1 == y2);
board[x1][y1] = 2;
board[x2][y2] = 2;
}
// 打印棋盘
void print_board() {
int i, j;
printf("\n");
for(i = 0; i < SIZE; i++) {
for(j = 0; j < SIZE; j++) {
printf("%d\t", board[i][j]);
}
printf("\n");
}
}
// 在棋盘上随机生成一个新数字
void generate_number() {
int i, j;
do {
i = rand() % SIZE;
j = rand() % SIZE;
} while(board[i][j] != 0);
board[i][j] = 2;
}
// 判断游戏是否结束
int game_over() {
int i, j;
for(i = 0; i < SIZE; i++) {
for(j = 0; j < SIZE; j++) {
if(board[i][j] == 0) {
return 0;
}
if(j < SIZE - 1 && board[i][j] == board[i][j+1]) {
return 0;
}
if(i < SIZE - 1 && board[i][j] == board[i+1][j]) {
return 0;
}
}
}
return 1;
}
// 向左移动棋盘
void move_left() {
int i, j, k;
for(i = 0; i < SIZE; i++) {
k = 0;
for(j = 0; j < SIZE; j++) {
if(board[i][j] != 0) {
if(k != j) {
board[i][k] = board[i][j];
board[i][j] = 0;
}
k++;
}
}
for(j = 0; j < SIZE - 1; j++) {
if(board[i][j] == board[i][j+1]) {
board[i][j] *= 2;
board[i][j+1] = 0;
}
}
k = 0;
for(j = 0; j < SIZE; j++) {
if(board[i][j] != 0) {
if(k != j) {
board[i][k] = board[i][j];
board[i][j] = 0;
}
k++;
}
}
}
}
// 主函数
int main() {
int move;
init_board();
print_board();
while(!game_over()) {
printf("\n请输入移动方向(0左,1上,2右,3下): ");
scanf("%d", &move);
switch(move) {
case 0: move_left(); break;
case 1: printf("向上移动\n"); break;
case 2: printf("向右移动\n"); break;
case 3: printf("向下移动\n"); break;
default: printf("无效的移动方向\n");
}
generate_number();
print_board();
}
printf("\n游戏结束\n");
return 0;
}
```
以上代码实现了2048小游戏的基本功能,包括棋盘的初始化、随机生成数字、移动数字、判断游戏是否结束等。您可以根据自己的需求进行调整和优化。