游戏规则简述
在动手写代码之前,先明确一下 2048 的核心机制。游戏在一个 4x4 的网格中进行,初始时随机生成两个数字(通常是 2 或 4)。玩家通过键盘方向键控制所有方块向指定方向移动,相同数字碰撞时会合并为两倍数值。目标是合成出 2048 方块,当棋盘填满且无法再移动时游戏结束。
基于这个逻辑,我们可以将开发流程拆解为几个关键模块:初始化界面、随机生成数字、处理用户输入、更新棋盘状态以及判断胜负条件。
初始化游戏界面
最基础的数据结构是一个二维数组。我们用 int gameBoard[4][4] 来存储每个格子的数值,0 代表空格。为了代码的可读性,建议定义一个宏常量来表示棋盘大小。
#include <iostream>
#include <cstdlib>
#include <ctime>
#define SIZE 4
int gameBoard[SIZE][SIZE] = {0};
注意这里使用了 #define SIZE 4,这样后续修改棋盘大小时只需改一处。初始化时直接赋值为 0,表示空位。
随机生成数字
游戏开始和每次有效移动后,都需要在空白处补充新数字。这里用到 C 标准库的 rand() 函数。为了避免每次运行结果一致,记得用 srand(time(0)) 初始化随机种子。生成数字的逻辑是取模运算,确保结果是 2 或 4。
void generateRandomNumbers() {
srand(time(0)); // 初始化随机种子
int count = 0;
while (count < 2) {
int x = rand() % SIZE;
int y = rand() % SIZE;
if (gameBoard[x][y] == 0) {
gameBoard[x][y] = (rand() % 2 + 1) * 2; // 生成 2 或 4
count++;
}
}
}
这里加了一个 while 循环确保真正填充了两个不同的位置,避免重复覆盖同一个格子。


