利用c语言实现的2048小游戏。
可以用来当做结课项目,毕业设计,代码注释写的很详细,保证各位可以看懂。
程序的主要使用的相关数据类型:2维数组,枚举,指针
程序运行界面如下图:
开始时随机生成
结束
程序部分代码实现:
void priMap(); //绘制图形
Dir getNextDirection(); //从键盘读入下一个用户操作
bool canMove(Dir direction); //判断是否可以进行指定方向的操作
void doAction(); //游戏事件
void move(Dir direction); //移动数字
void New(); //放入一个新的数字
int main() //主函数
void New(){
//为了方便操作,临时存储一下所有空闲格子的指针,这样可以用一个线性的内存随机访问实现对所有空位中任一空位的随机访问.
int* boxes[16]={NULL};
//用来临时保存目标格子的地址
int* target;
//统计一共有多少个有效空格
int count=0;
int i,j;
// color(2);
//统计空位,发现空位即保存地址并累加计数器
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(!MAP[i][j]){
boxes[count]=&MAP[i][j];
count++;
}
if(count){
//如果有空位,那么对这一位进行随机赋值操作,对于每一位可能性是相同的
target=boxes[rand()%count];
//50%可能出现2 50% 可能出现4
*target=rand()%2?2:4;
}
}