// 二维数组
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int test(int (*a)[4]){
int i,j,b;
int t=0;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(a[i][j]==0){
t=1;
}
if(a[i][j]==2048){
b=1;
}
}
}
if(b==1){
printf("you are winer");
}
if(t==0){
printf("game over");
}
}
// 声明一个 局部变量 如果没有初始化 局部变量的值不确定
// 所以数组a里面的元素 也是不确定的值
// 数组的初始化
int main(void){
int a[4][4] = {0};
int i = 0, j = 0;
int c=0;
int score=0;
//在此位置补充代码 使得数组某个随机的位置 赋值为2
int s = time(0);
srand(s); // 将 s 作为 rand 函数的种子值
int x;
int y;
x= rand() % 4 ;
y = rand() % 4 ;;
a[x][y]=2;
while(1){
do{
x = rand() % 4 ;
y = rand() % 4 ;
}while(a[x][y]!=0);
a[x][y] = 2;
// 第二次产生随机位置 有可能该位置里面有之
//如果有则重新输入一个心得位置,直到该位置的是空白
// 将二维数组中的元素打印出来
printf("+----+----+----+----+\n");
printf("| 2048游戏 |\n");
for (i = 0; i < 4; i++) {
printf("+----+----+----+----+");
printf("\n");
for (j = 0; j < 4; j++) {
if (a[i][j] == 0) {
printf("| ");
}
else {
printf( "|%4d", a[i][j]);
}
}
printf("| ");
printf("\n");
}
printf("+----+----+----+----+\n");
printf("| w %4d |\n",score);
printf("|a< + >d |\n");
printf("| s |\n");
printf("+----+----+----+----+\n");
char cmd=0;
// 清输入缓存区,请回车键
scanf("%*[^\n]"); //清\n 之前的所有内容
scanf("%*c"); //清\n 字符
printf("请输入移动的方向:");
scanf("%c",&cmd);
switch(cmd){
case 'w':
for(j=3;j>0;j--){
for(i=0;i<4;i++){
if(a[j-1][i]==0){
a[j-1][i]=a[j][i]; //移动
a[j][i]=0;
}
else{
if(a[j-1][i]==a[j][i]){ //合并
a[j-1][i]+=a[j][i];
a[j][i]=0;
//计分
score+=a[j-1][i];
}
}
}
}
printf("up\n");
break;
case 'a':
for(i=3;i>0;i--){
for(j=0;j<4;j++){
if(a[j][i-1]==0){
a[j][i-1]=a[j][i]; //移动
a[j][i]=0;
}
else{
if(a[j][i-1]==a[j][i]){ //合并
a[j][i-1]+=a[j][i];
a[j][i]=0;
score+=a[j][i-1];
}
}
}
}
printf("left\n");
break;
case 'd':
for(i=3;i>0;i--){
for(j=0;j<4;j++){
if(a[j][i+1]==0){
a[j][i+1]=a[j][i]; //移动
a[j][i]=0;
}
else{
if(a[j][i+1]==a[j][i]){ //合并
a[j][i+1]+=a[j][i];
a[j][i]=0;
score+=a[j][i+1];
}
}
}
}
printf("ringt\n");
break;
case 's':
for(j=3;j>0;j--){
for(i=0;i<4;i++){
if(a[j+1][i]==0){
a[j+1][i]=a[j][i]; //移动
a[j][i]=0;
}
else{
if(a[j+1][i]==a[j][i]){ //合并
a[j+1][i]+=a[j][i];
a[j][i]=0;
score+=a[j+1][i];
}
}
}
}
printf("down\n");
break;
default:
printf("命令字符输入错误\n");
}
test(a);
}
return 0;
}
C语言-2048游戏
最新推荐文章于 2022-02-11 09:09:04 发布