/* 簡単なプログラムをウプしよう */at GAMEDEV /* 簡単なプログラムをウプしよう */ - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト94:名前は開発中のものです。 02/07/12 20:57 ta2l.s0c すいませんgetActived()ってなんですか? で,分岐してからcolor調べずに分岐する前に調べたらどうでしょう? 95:名前は開発中のものです。 02/07/12 21:08 フィールドと同じ配列を用意して、 状態を保存しておけば? 96:名前は開発中のものです。 02/07/12 21:25 そう。 > int cnt = checkEraseBlock( x, y, block[ x][ y].getColor()); > if( cnt > 4) EraseBlock( x, y, block[ x][ y].getColor()); つながってる個数を調べるのと消すのを同時にやってるのが悪い。 cntは、各ブロックに覚えさせておいて、全ブロックのcntを計算してから 4以上のブロックのぷよを消せば、2回目の再帰は要らない。 再帰を使わないやり方もあるけど、ぷよぷよの場合は、返って効率悪いかな。 97:名前は開発中のものです。 02/07/12 21:29 ちなみに、配列で状態を保存しておけば一度捜査したところの無駄な再帰は無くなる 98:3D太郎 02/07/12 22:33 0q0E/8gY >>94 各blockにstateflgを記録し、Actived(存在する)ならtrueを返します。 isActivedに変えました^^;colorを調べる順番変更させていただきました。 >>95>>97 blockの中に状態保持フラグがあり、そこで同動作を実現しております。 >>96 再帰の途中では、cnt<4の状態があり、この状態で2度と訪れない場合が 存在します。cnt>4条件で消していると、これらが消されないように思うのですが、 どうでしょうか? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch