FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

BぷよAI作成メモ3

前回、AIに6列目に積ませることが出来ましたが、このままではAIはずっと6列目に積もうとするので、
6列目に積めない時は

「6列目に積めないよー!」(ボイスは各々好みで)

と困ってしまい、自由落下をしてしまいます。
AIが自由落下している時は

・積めない場所に積もうとした時。
・そもそも積む命令がない時

が考えられます。今回は前者ですね。こういうときは
便利なBぷよAI関数の
ai_GetScore( 数字(列) , 数字(回転) )
を使いましょう。()の中の書き方はai_SetTumiと一緒ですね。

この関数は一度
sd = ai_GetScore( 5 , 0 )
のように一度書いて
sdにもしai_SetTumi( 5 , 0 )をしたらどうなるかをシミュレートしたいろいろなデータを格納します。
そしてこのsdから必要なデータを引き出します。

今回必要なのは、置けるか置けないかです。
置けなかったときはscoreに-1が入っています。なのでこのように書けばよいでしょう。

set8.png

こうすることでAIは5列目にも積んでくれるはずです。
もちろん、もうちょっと分岐文を増やせば4列目まで満タンに積んでくれます。

set9.png

ここで、「似たようなことを何度も書かなきゃいけないのめんどい」と思ったあなたはきっとプログラムを組むセンスがあります。

バーサーカーは
「最右端に積んでいって、置けないようならひとつ左の列に積む」
という組み方ですよね。
つまり、AIに「置けないときはひとつ左の列において」と命令させてやればいいのです。

set10.png

このように関数を自分で作ってみてもいいでしょう。
例えば上記のように書くと、もし、置こうとしてる場所が置けないときはひとつ左に置いてくれます。



set11.png
そして、使う時はこのように書けば、4列目まで満タンに積んでくれます。


今回のことを応用すれば、積んでいる最中に消してしまいそうになったときに別の場所においてくれる関数も作ることが出来ます。

が、今は積むまで。積めたら、次に発火してやらないといけませんよね。

次回も関数を使います。

※補足
・そもそも積む命令がない時
の解決方法は
ai_IsTumiReserved関数を使いましょう。
こいつの戻り値が0の時は、命令がなかったということなので、
if文を使ってやるといいでしょう。


スポンサーサイト

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

まとめ【BぷよAI作成メモ3】

前回、AIに6列目に積ませることが出来ましたが、このままではAIはずっと6列目に積もうとするので、6列目に

コメントの投稿

管理者にだけ表示を許可する

プロフィール

都倉 欅(とくら けやき)

Author:都倉 欅(とくら けやき)
いとも容易くというハンドルネームで活動している人の日記。
たわごととか満載。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。