本篇用一份独立的虚构游戏记录练习方格坐标的旋转与镜像。先按规则预测最后状态,再逐行对照运算,可以找出差异究竟来自输入、边界条件,还是结算先后。下面所有数值都只服务于这一道练习。
先读清楚本例规则
8乘8方格,左上角为(0,0),右下角为(7,7)。顺时针90度用(x,y)→(7−y,x),左右镜像只改变x,上下镜像只改变y。
初始坐标:(0, 2) 操作顺序:左右镜像→顺时针转90度→左右镜像→顺时针转90度→左右镜像→顺时针转90度
为何这样记录
旋转和镜像都会改变位置,但变化方法不同,而且连续操作通常不能任意交换。用坐标逐步记录,比只凭画面印象猜最后落点更容易复核。
本题坐标从左上角的零开始,横坐标向右增加,纵坐标向下增加。切换成数学课常见的向上纵轴后,原公式不能直接照搬。
逐步演算
第1步左右镜像:原坐标(0,2)变为(7,2)。这里变化的是棋盘中的同一个标记,不能每一步都从初始点重算。
第2步顺时针转90度:原坐标(7,2)变为(5,7)。这里变化的是棋盘中的同一个标记,不能每一步都从初始点重算。
第3步左右镜像:原坐标(5,7)变为(2,7)。这里变化的是棋盘中的同一个标记,不能每一步都从初始点重算。
第4步顺时针转90度:原坐标(2,7)变为(0,2)。这里变化的是棋盘中的同一个标记,不能每一步都从初始点重算。
第5步左右镜像:原坐标(0,2)变为(7,2)。这里变化的是棋盘中的同一个标记,不能每一步都从初始点重算。
第6步顺时针转90度:原坐标(7,2)变为(5,7)。这里变化的是棋盘中的同一个标记,不能每一步都从初始点重算。
结果与交叉核对
最终标记在(5,7),也就是从左数第6列、从上数第8行。
坐标使用0起算,而“第几行第几列”使用1起算,所以最终行列要各加1。每一步结果都在0至7范围内,这是一项快速排错检查。
自己怎样练习
自己复核时,可以把纸分成“操作前状态、这一条输入、操作后状态”三栏。先遮住解答完成一遍,再只查找第一次出现分歧的位置;后面的错误往往只是前一步状态传递的结果。确认规则没有改变后,再重新继续,避免只改最终答案却保留中间错误。
第二轮练习只改一条输入,提前写下你预计哪些后续步骤会变化,再重新演算验证。不要同时更改多个条件,否则很难分清是哪条规则造成差别。若实际游戏还涉及随机结果、其他角色、装备或额外判定,应先把这些条件补入记录,本例不会替它们作假设。
