プレイ日記
いもいも imoimo_k0122
Windowsなどでお馴染みのマインスイーパを作ってみました。それにしてもグダグダなソースになってしまいました・・・ 公開キー:P32835A6
7そうだね
プレイ済み
返信[1]
親投稿
TERA(LL) tera0413
マインスイーパー ゲームとしては地味ですが、こういうのを、プログラムできるってすごいと思います。 (プチコン以外でプログラムを経験されていたのでしょうか) 0で連続オープンするところのアルゴリズムを初心者にも解るように説明いただけますと幸いです。 (3DSから見てるので「URL提示だけ」ってのは、無しの方向で)
0そうだね
プレイ済み
返信[2]
親投稿
いもいも imoimo_k0122
実はコア部分は以前C言語で作ったアルゴリズムを移植しただけだったりします。連続で開くアルゴリズムは一般的に「再帰呼び出し」と言われるもので、自分で自分自身を呼び出すことで、連鎖的に処理を継続できる仕組みです。将棋などの思考アルゴリズム(木構造探索)などでもよく使われます。再帰呼び出し自体の概念を説明するとなるとものすごく長くなるため割愛しますが、(興味がありましたらググるか書籍を読むのが近道かと思います)コツとしては連鎖を止める条件を確立させることです。(放っておくといつまでも止まらず、スタックオーバーフローになるので・・・)個人的には感覚的な部分も多いので、何度も触って手になじませるイメージで覚えました・・・(´・ω・`)
0そうだね
プレイ済み
返信[3]
親投稿
いもいも imoimo_k0122
ザックリ過ぎる説明をすると、 処理の順番としては、 指定した座標で呼び出す→隣り合う座標を渡して自分自身を呼び出す →端にぶつかるか、0のブロックがなくなったら処理を止める ということを延々と繰り返しています。 そうすることで、指定座標を中心に探索が進んでいきます。 図解すれば分かりやすいのでしょうが、文字で説明するとこんな感じですw
0そうだね
プレイ済み
返信[4]
親投稿
ツララ LongIceSword
マインスイーパーって色んなアレンジありますけど 時間制限付けて、画面端から端までを地雷踏まない様に突破するレースっぽくしたら面白いかも。 地雷で壁になってて抜け道無しと想定した場合は、一か八かで一マス越えのジャンプ出来る様にしたり。
1そうだね
プレイ済み
返信[5]
親投稿
TERA(LL) tera0413
>いもいも様 コメントありがとうございます。 再帰については、なんとなく理解してるつもりですが、真ん中含め9枚のパネルをオープンするところまでは、良いのですが、そのあと、開いた0が複数有った場合の順番の処理と再帰をどう組み合わせるかが、まだいまいちわかってないのです・・・。 (もう少し自分で考えてみます。)
1そうだね
プレイ済み