したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

なんでもスレッド〜

93( ´ω`)y-~ </b><font color=#005500>(G5PVvZZ2)</font><b>:2004/12/03(金) 22:40
ある板より引用

以前N88で2DのテトのCPを作ったことがありますが、 試行錯誤の結果、思考ルーチンは密着度のポイント制(データベースって言うのかな、コレ?)が それなりに安定していました。 たとえばT字型ブロックのときは、 '◇          ◇ AI(40) = "******" '◇    例1    ◇(1): 2+8+8+6 = 24点 AI(41) = "2***2*" '◇例2  ■■■□□ ◇(2): 2+2+8+6 = 18点 AI(42) = "*8*8**" '◇■■■□□■□□□□◇ AI(43) = "**6***" '◇ ■□□□□□□□□◇ AI(44) = "******" '◇◇◇◇◇◇◇◇◇◇◇◇ '◇       例3■◇(3): 2+2+8+4+9 = 25点 AI(45) = "***2**" '◇   例4■  ■■◇(4): 8+4+9 = 21点 AI(46) = "2**2**" '◇    ■■ □□■◇ AI(47) = "*8*4**" '◇   □□■□□□□◇ AI(48) = "**9***" '◇  □□□□□□□□◇ AI(49) = "******" '◇◇◇◇◇◇◇◇◇◇◇◇ '◇          ◇ AI(50) = "******" '◇   例5■    ◇(5): 1+7+7 = 15点 AI(51) = "******" '◇    ■■■□□ ◇ AI(52) = "1***1*" '◇   □□ □□□□◇ AI(53) = "*777**" '◇  □□□□□□□□◇ AI(54) = "******" '◇◇◇◇◇◇◇◇◇◇◇◇ '◇          ◇ AI(55) = "*2****" '◇     ■例6  ◇(6): 2+4+8+9 = 23点 AI(56) = "*2**2*" '◇ ■例7 ■■□□ ◇(7): 2+8+9 = 19点 AI(57) = "*4*8**" '◇ ■■□□■□□□□◇ AI(58) = "**9***" '◇ ■□□□□□□□□◇ AI(59) = "******" '◇◇◇◇◇◇◇◇◇◇◇◇ てな感じです。ブロックの高さやカベ寄りの状況などで若干(5%くらい)補正します (じゃないと落下スピード速くなったとき対応ができない……)。
実際に最適位置を検索を開始する場合、
まずは最適位置用のX,Y座標と向き、その点数(つまり最高得点)を記憶しておく変数を用意し、初期化します。
あとは、「ブロックの向き」「X座標」「Y座標」の3重ループをかけて、それぞれ点数を計算します。

以下はループ中の処理です。
まず、ブロックが地形と重なる位置、もしくはそれより下にある(Y座標が大きい)場合は無視し、
それ以外の場合は上の図の計算方法で点数計算をして最高得点と比較します。
計算結果が最高得点を超える場合は、最高得点および座標と向きを上書きします。

これでループ終了時に最適位置の値が残っていることになるワケです。

もちろんこの方法を用いる場合はプログラム中または外部読み込みで
図のようなデータのかたまりを用意しなければなりません。
ちなみにJavaScriptの例では、
「幅(6マス)」×「高さ(5マス)」×「向き(4パターン)」×「種類(7タイプ)」 = 840
つまり840個のデータを配列に入れています。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板