私はFlood-Itスタイルのゲームを作ろうとしており、メインアルゴリズムに問題があります。Flood-Itゲームの再帰関数アルゴリズム
アルゴリズムは、すでに制御しているすべての四角形をチェックし、制御しない選択された色を持つ隣接する四角形を探します。
変数:
1 - $ボード:ボードの状態を保持して2次元配列
- あなたは配列にコントロールする四角形は「あなたがドン= 0
- 正方形で制御範囲は1から6であり、異なる色を表す。
2 - $色:ユーザーによって選択された色
3 - $サイズ:でプレイボードの正方形サイズ
4 - $ RKEY/$のCKEY:行と2次元配列の列
主な問題は、最初のいくつかの四角形が開始角にあり、おそらく2または3であり、新しい四角形の制御を停止することです。ここで
は私が作るしようとしているゲームの例です:http://floodit.appspot.com/
function checkRecursive($rkey, $ckey)
{
global $board, $size, $color;
if ($board[$rkey][$ckey] == 0)
{
if ($rkey < $size-1 && $board[$rkey + 1][$ckey] == $color)
{
$board[$rkey + 1][$ckey] = 0;
checkRecursive($rkey + 1, $ckey);
}
if ($ckey < $size-1 && $board[$rkey][$ckey + 1] == $color)
{
$board[$rkey][$ckey + 1] = 0;
checkRecursive($rkey, $ckey + 1);
}
if ($rkey > 0 && $board[$rkey - 1][$ckey] == $color)
{
$board[$rkey - 1][$ckey] = 0;
checkRecursive($rkey - 1, $ckey);
}
if ($ckey > 0 && $board[$rkey][$ckey - 1] == $color)
{
$board[$rkey][$ckey - 1] = 0;
checkRecursive($rkey, $ckey - 1);
}
}
}
オンラインアップデートでうまくいった;)素敵。このコードは仕事をしなければならないように見えます。戻ってupvoteに来る21時間で私に思い出させてください。 :) – sarnold
ありがとう、それは今働いています。私が「制御している」四角形を取り除かなければならなかったので、私はしばらくしていました。 – TheAutumnAurora