1 Game Rules
1. 4x4网格,每个位置为空或者填有带有一个2的正整数次幂数字的贴图;
2. 第一次移动前,随机选择一个空位填入带有数字2或4的贴图,其中填充2的概率为75%,填充4的概率为25%;
3.用户可以通过方向键选择一个方向(上下左右)来倾斜(tilt)该网格,所有的贴图都在这个方向上滑动,直到在运动方向上没有任何空间(可能一开始就没有)。一个贴图可以与另一个贴图合并(merge),从而获得玩家点数。合并的具体规则如下:
△ 两个相同的贴图合并成一个,数值变为原值的2倍;
△ 本次tilt时合并得到的结果不会再发生合并,例如[x,2,2,4]向左时变为[4,4,x,x],而不是继续继续变为[8,x,x,x];
△ 当运动方向上三个相邻的贴图有相同的值时,在运动方向上前面的两个贴图合并。eg: [x,2,2,2]向左变为[4,2,x,x]而非[2,4,x,x]; 当有四个相邻相同贴图时同理,前两个合并,后两个合并。
△ 使用Score记录分数,每次移动后更新分数,每次合并记一分。
△ 当当前玩家没有可用的移动(没有倾斜可以改变棋盘),或者移动形成包含2048的贴图时,游戏结束。代码将负责检测游戏何时结束。
△ “最大分数”是用户在该游戏回合中所获得的最大分数。直到游戏结束它才会更新,所以这就是为什么在整个动画GIF示例中它保持为0的原因。
2. 实验操作
1.实验中遇到了game2048中文件均为橙色J图标,无法识别的问题
解决方案参考了 https://blog.csdn.net/qq_40492436/article/details/104871704
2. TestMaxTileExists刚开始测试5/8没有通过,后来发现是因为tile为null时无法取value(),修改后测试全部通过
标签:贴图,分数,CS61B,合并,笔记,变为,方向,移动,Project0 From: https://www.cnblogs.com/QZMshining/p/17185735.html