php – 在多维数组中运动
我有这个数组,我用表格显示如何使用用户输入进行移动
当前为每个数组分配0但我计划为数组分配其他值: 我的问题是 – 如何使用用户输入在阵列中向上,向下,向右,向左和向下移动 Array ( [0] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 ) [1] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 ) [2] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 ) [3] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 ) [4] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 ) [5] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 ) [6] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 ) [7] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 ) ); array(0,0),array(0, 这对于跳棋游戏没有mysql. 我已经可以将数组序列化为文本文件,但文本文件需要包含起始位置,当每个玩家进行移动时,将文件移动到文本文件中,然后回调显示 我已经将数组显示在一个html表中 我也试图限制移动到非法广场,但这是我需要自己工作的逻辑问题 这个循环将使用下面的代码 $row = 0; print "<form>"; print "<table border = 1>"; while ($row < 8){ // Counts to 8. (from 0...7 = 8 times. 0 ... 8 = 9 times) print "<tr>"; $row++; $col = 0; // reset column to 0 each time printing one row. while ($col < 8){ print "<td>"; if($board[$row][$col] == 0) { print "<input type="checkbox" name="box[]" value="$value">"; // Add before " otherwise it will treat as the end of the quote. } print "</td>"; $col++; } print "</tr>"; } print "</table>"; print "</form>"; 我已经创建了一个用于保持分数的数据库,但在此之后将完成 解决方法
您需要为游戏定义可用的移动,在这种情况下,从玩家的角度来看,您可以说玩家可以移动游戏:
>左上角 请注意,列表中的最后两个元素是一个吃另一个元素的元素.一旦你知道你可以获取该片的当前位置并将其移动到新片.我将假设对于普通棋子你会使用“N”而对于皇后“Q”虽然我不会在我的例子中使用皇后. //Piece at $board[$x][$y] moves diagonally to the left. $board[$x-1][$y+1] = $board[$x][$y]; // This space is occupied $board[$x][$y] = 0; //Now the space is empty 现在吃的部分.让我们想象一下,$board [$x] [$y]上的那块东西想吃掉对角线左边的那块. //Eating action from $board[$x][$y] $board[$x-1][$y+1] = 0; //It's been eaten! $board[$x-2][$y+2] = $board[$x][$y]; // This space is occupied 所以你可以从用户那里得到一个输入,包括他想要移动的部分,以及他想要做什么样的动作(我假设,你只会允许正确的移动,所以我不会进入那个).如果您从表单提交中读取它,例如,您可以将移动,位置和播放器(用于方向)作为$_POST变量. 然后根据这些值修改$board数组.为此,您可以使用条件或开关,这取决于您. $way = ($_POST['player'] === 'up')? 1:-1; 最后一行将允许您为移动重复使用相同的代码,将您必须添加的值乘以$way变量,以将其添加到当前位置.例如,沿对角线向左走是: //if player is 'up' then the value of $way is 1 so $board[$x+(-1*$way)][$y+(1*$way)] = $board[$x][$y]; // position 2,2 becomes 1,3 //if player is not 'up' then the value of $way is -1 so $board[$x+(-1*$way)][$y+(1*$way)] = $board[$x][$y]; // position 2,2 becomes 3,1 这应该给你一个起点,所有代码都没有经过测试,所以我猜可能会有一些错别字. UPDATE 如果你想要的只是从X,Y移动到X1Y1那么: $board[$var3][$var4] = $board[$var1][$var2]; $board[$var1][$var2] = 0; 是你所需要的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |