paiza Aランクレベルアップセット 陣取りゲーム STEP: 18 1 マスの陣取り

hとwを$iと$jに対応させるとき、時々「あれ、どっちだったかな」とちょっと考えてしまいます。
1回それで間違えて途中でとまりました。やれやれです。
ご参考になれば。

<?php
    // 自分の得意な言語で
    // Let's チャレンジ!!
    
    //・ 1 行目では、盤面の行数 H , 列数 W が与えられます。
    //・ 続く H 行のうち i 行目 (0 ≦ i < H) には、盤面の i 行目の文字をまとめた文字列 S_i が与えられ、 S
    //_i の j 文字目は、盤面の i 行目の j 列目に書かれている文字を表します。(0 ≦ j < W)

    $s = explode(" ",trim(fgets(STDIN)));
    
    $h = $s[0];
    $w = $s[1];
    
    for ($i = 0; $i < $h; $i++) {
        $hoge = trim(fgets(STDIN));
        
        for ($j = 0; $j < $w; $j++) {
            $map[$i][$j] = mb_substr($hoge,$j,1);
            if($map[$i][$j] == "*"){
                $y = $i;//*の座標
                $x = $j;
            }
        }
    }
    
    //print_r($map);
    //echo($x.",".$y."\n");
    
    //処理
    if($y>0){
        $map[$y-1][$x]="*";
    }
    if($y<$h){
        $map[$y+1][$x]="*";
    }
    if($x>0){
        $map[$y][$x-1]="*";
    }
    if($y<$w){
        $map[$y][$x+1]="*";
    }
    
    //出力
    for ($i = 0; $i < $h; $i++) {
        for ($j = 0; $j < $w; $j++) {
            echo($map[$i][$j]);
        }
        echo("\n");
    }
    
    
    
?>
kue

食べたデータが*だったらその座標を記録しておき、その上下左右を*に変える(範囲内なら)という構造です。

0