想象一下,TicTacToe网格中的方块以1到9的线性方式编号。玩家通过调用类方法将X放在网格上:
$game->putX(1, 1);
(该方法只接受0到2之间的整数)。
如何计算放置X的字段的线性值(此处线性值为5)?
非常感谢您的帮助。
答案 0 :(得分:2)
实际上只是x*3 + y+1
。假设游戏状态保存在一个数组中(索引为1-9,根据您的问题),您的代码可能如下所示:
// the board: examples:
// x 0 1 2 0 0 -> 1
// y 1 1 -> 5
// 0 1 2 3 2 2 -> 9
// 1 4 5 6
// 2 7 8 9
putX ($x, $y) {
$this->state[$x*3+$y+1] = 'X';
}