我正在尝试为一个小型战舰游戏构建一个游戏板8x8,其中有游戏部件(有点像跳棋)所以我可以用MySQL移动棋子,玩家可以在棋盘上自由移动以对抗彼此的战列舰.
这些部分将被放置在预定的空间中,而其他空间将是空的并由mysql处理
$pieces = array(
//battleship 1 player 1
"b1" => '<img src="images/b1.jpg" width="100" height="100" alt="b1">',
//battleship 2 player2
"b2" => '<img src="images/b1.jpg" width="100" height="100" alt="b1">',
);
// 'es' represents empty squares
$board = array(
array('b1','es','b1','es','b1','es','b1','es'),
array('es','b1','es','b1','es','b1','es','b1'),
array('b1','es','b1','es','b1','es','b1','es'),
array('es','es','es','es','es','es','es','es'),
array('es','es','es','es','es','es','es','es'),
array('es','es','es','es','es','es','es','es'),
array('b2','es','b2','es','b2','es','b2','es'),
array('es','b2','es','b2','es','b2','es','b2'),
array('b2','es','b2','es','b2','es','b2','es')
);
Run Code Online (Sandbox Code Playgroud)
我已经有一个循环显示板我要问的是如何放置($ piece - > $ board)我知道你可以使用array_replace将元素和数组放入另一个数组中,但我不知道知道如何使用多维数组.
我也试图使用mysql在棋盘内移动
如果使用PHP> = 5.3,则可以使用array_map:
$callback = function($value) use ($pieces) {
if(array_key_exists($value, $pieces)) {
return $pieces[$value];
}
return $value;
}
foreach($board as &$row) {
$row = array_map($row, $callback);
}
Run Code Online (Sandbox Code Playgroud)
如果使用PHP <5.3,则可以使用array_walk_recursive:
function map(&$value, $key, $map) {
if(array_key_exists($value, $map)) {
$value = $map[$value];
}
}
array_walk_recursive($board, 'map', $pieces);
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,非PHP 5.3版本会更短;)
更新: