2048游戏

自己写的,有老师的帮助,放上部分代码

 1 //向上
 2 void DirUP()
 3 {
 4     for (int i = 0; i < 4; i++)
 5     {
 6         for (int j = 0; j < 4; j++)
 7         {
 8             //有数字,向下查找,合并数字
 9             if (map[j][i] !=0)
10             {
11                 for (int m = j + 1; m < 4; m++)
12                 {
13                     // 下一项和当前一样,相加
14                     if (map[m][i] == map[j][i]){
15                         map[j][i] *= 2;
16                         map[m][i] = 0;
17                         break;
18                     }
19                     else if (map[m][i]!=0)
20                     {
21                         break;
22                     }
23                 }
24             }
25             //没有数字,向下查找,将数据往上提
26             else{
27                 for (int m = j ; m < 4; m++)
28                 {
29                     if (map[m][i] != 0)
30                     {
31                         map[j][i] = map[m][i];
32                         map[m][i] = 0;
33                         j--;
34                         break;
35                     }
36                 }
37             }
38         }
39     }
40     num();//随机出现数字
41 }

同学写的,看着更加简单,可能更难理解

 1 //向上移动
 2 void move_up()
 3 {
 4     for (int i = 0; i < 4; i++)  //遍历每一列  0 1 2 3                
 5     {
 6         for (int j = 1, k = 0; j < 4; j++)  //遍历这一列的每一个格    
 7         {                                                        
 8             if (map[j][i] > 0)  //先找到一个有数的
 9             {
10                 if (map[j][i] == map[k][i]) //将同列每行与同列零行 进行比较
11                 {
12                     map[k][i] *= 2;
13                     map[j][i] = 0;
14                     ++k;                    
15                 }
16                 else if (map[k][i] == 0)
17                 {
18                     map[k][i] = map[j][i];
19                     map[j][i] = 0;
20                 }
21                 else
22                 {
23                     map[++k][i] = map[j][i];
24                     if (j != k)
25                     {
26                         map[j][i] = 0;
27                     }
28                     
29                 }
30             }
31         }
32     }
33     num();//随机出现数字
34 }

猜你喜欢

转载自www.cnblogs.com/mtbook/p/10628574.html