1.设计思路
1.1 基本需求
由题中所给已知需求可知,我们需自行创建一个名为jumper的actor,要求这个jumper可以在grid中一次跳跃两个单元格,并且在跳跃过程中如果遇到面前是石头或者花朵时候可以越过。
1.2 自由扩展部分
1.2.1 单步move
功能陈述:
- 假设有A、B、C、D一条直线上由近及远的四个点,若此时jumper位于A点,并且有向C跳跃的趋势;
- 假设C点上有一个石头,这个石头阻碍jumper完成跳跃
- 此时jumper自身可以通过调用move功能,往前只运行一步,随后完成跳跃,跳跃到D点。
1.2.2 设置标记
- 为了更加直观的显示出1.2.1的功能,在jumper每次完成一次move时候,会在move之前那个方格上留下一朵花;
- 花的颜色会随jumper的运动而逐渐加深颜色,并且会被jumper覆盖。
1.3 设计细节部分
a. 如果一个jumper前面的位置是空的,但是前面隔一格的单元格包含一朵花或一块石头,他会怎么做?
- 如果前面是一块石头,jumper将向前面的空位移动一步,然后在继续移动时跳过石头;而如果前面是一朵花,jumper将继续执行跳跃操作,覆盖掉花。
b. 如果jumper前面的隔一格的单元格在grid外,它将会怎么做?
- jumper只向前移动一步,然后向右转90度以避免自己脱离栅格。
c. jumper面对格子的边缘会做什么?
- jumper将向右转90度以避免自己在面对网格边缘时脱离网格。
d. 如果jumper前面隔一格的单元格还有另一个jumper2,那么该jumper将会做什么?
- jumper2会执行Jump操作,而jumper会执行move操作
e. 如果一个jumper的路径里出现了另一个jumper2,jumper会怎么做?
- 如果两个jumper相隔一个单元格,jumper会移动一个单元格,就像jumper2被认为是石头。而jumper2会执行Jump操作。如果两个jumper相邻,它们都可以执行Jump操作,使其有规律地相互跳跃。
f. jumper类还需要做其他测试吗?
- 如果一个jumper前面的两格都是花或者石头,jumper将会怎么做?
- 如果前面两格都是花,它依旧会做Jump操作;
- 如果前面两格都是石头,他就会右转45°然后进行Jump操作。