2010-10-24 8 views
3

J'essaie de construire un plateau de jeu 8x8 pour un petit jeu de cuirassé avec des pièces de jeu en place (comme des dames) afin que je puisse déplacer les pièces avec MySQL les joueurs peuvent se déplacer librement le conseil d'aller contre les autres cuirassés.PHP en utilisant array_replace avec un tableau multidimensionnel

les pièces seront dans des espaces prédéterminés tout autre espace sera vide et être gérer par 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') 
    ); 

J'ai déjà une boucle pour afficher le tableau que je demande est de savoir comment puis-je placer la ($ piece -> $ board) Je sais que vous pouvez utiliser array_replace pour placer les éléments de et array dans un autre tableau, mais je ne sais pas comment avec les tableaux multidimensionnels.

Je tente aussi d'utiliser MySQL pour le mouvement à l'intérieur de la carte

+0

'array_replace' ne vous aidera pas ici, il fonctionne différemment que vous le pensez. Best serait 'array_map' mais si vous utilisez PHP <5.3, il est difficile de passer le tableau' $ pieces' au callback. –

Répondre

6

Si vous utilisez PHP> = 5.3, vous pouvez utiliser 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); 
} 

Si vous utilisez PHP < 5.3, vous pouvez utiliser array_walk_recursive:

function map(&$value, $key, $map) { 
    if(array_key_exists($value, $map)) { 
     $value = $map[$value]; 
    } 
} 

array_walk_recursive($board, 'map', $pieces); 

La version non PHP 5.3 serait être plus courte dans les deux cas;)

Mise à jour:

DEMO HERE :)

+0

@Felix Kling tout ce que j'ai à faire est de mettre cela dans le php et c'est – hgbso

+0

@ hgbso: Je ne sais pas si je comprends votre question, mais '$ board' et' $ pieces' seraient les deux tableaux de votre exemple. Vous devez les passer à 'array_walk_recursive'. –

+0

@hgbso: Vous pouvez trouver une démo ici: http://codepad.org/ekmS46nz (assurez-vous que vous utilisez le bon lien d'image pour 'b2';)) –

Questions connexes