我正在用php做一个游戏(不要问lol),玩家有一个整数位置。有一个旅游网页,这基本上显示了一个5x5平铺地图。每个牌都是玩家世界的不同部分。点击它,他就可以去那里旅行。
只是想让你了解一下地图后面的整数:
11,12,13,14,15
21,22,23,24,25
31,32,33,34,35
41,42,43,44,45
51,52,53,54,55
比如说,球员从33岁(中间)开始,我想根据他所走的路程收取不同的费用。例如,任意方向的1个平铺是100个学分,2个平铺是200个学分,依此类推。
所以我想到的是这个。$ol
代表玩家当前的位置,而$nl
则是他们要前往的地方…
if($ol-11==$nl || $ol-10==$nl || $ol-9==$nl || $ol+1==$nl || $ol+11==$nl || $ol+10==$nl || $ol+9==$nl || $ol-1==$nl || $ol-11==$nl ){
echo "cost 100 credits!";
}
else if($ol-22==$nl || $ol-21==$nl || $ol-20==$nl || $ol-19==$nl || $ol-18==$nl || $ol-8==$nl || $ol+2==$nl || $ol+12==$nl || $ol+22==$nl
|| $ol+21==$nl || $ol+20==$nl || $ol+19==$nl || $ol+18==$nl || $ol+8==$nl || $ol-2==$nl || $ol-12==$nl ){
echo "cost 200 credits!";
}
这是1和2瓦片旅行的代码。如你所见,这是一个冗长的声明。
我基本上为我设置的网格设计了一个模式。例如,向上移动1个平铺将始终是当前平铺的-10。
在我输入任何长得可笑的if语句之前,有没有一种更整洁或更有效的方法来做到这一点?
最佳答案
我将使用另一种方法:由于第一个数字定义行,第二个数字定义列,我将在这两个数字中拆分数字,并使用这些数字来确定移动了多少行和多少列。
所以对于任何职位:
$row = floor($tile_value / 10);
$column = $tile_value % 10;
用这个很容易计算距离。
编辑:测量绝对距离的一个小示例:
$row_org = floor($tile_org_value / 10);
$column_org = $tile_org_value % 10;
$row_new = floor($tile_new_value / 10);
$column_new = $tile_new_value % 10;
$row_diff = $row_new - $row_org;
$col_diff = $col_new - $col_org;
$distance = sqrt(pow($row_diff, 2) + pow($col_diff, 2));
关于php - 比if语句更有效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15283457/