FC2ブログ

情報の見える化:ビット積を使う

さて前回は矢印キーを押すと主人公が歩かずして動けるシステムを作ったわけですが、
プレーヤーさんに「どっちに移動できるか」が伝わらなければ意味がありません。
今回はそれを表示する矢印画像を表示してみましょう。

《まずは変数の設定》
「マップのどこにいるときに」「どの方向に動けるか」がわかればいいので、
これをそれぞれ変数で表すことにします。
まずは小さいマップで試してみましょう。

城下町のマップ
図は横40マス縦15マスのマップを20マス×15マス(画面の大きさ)ごとに区切った図です。
この単位を「ルーム」と名づけることにします。
ひとつのマップの中にいくつかのルームがあるわけですね。

ウディタの座標は一番左上を起点としているので、
一番左上のルームをルーム0とするのが多分あとあとで計算するとき都合がよさそうです。
この図では左半分がルーム0で右半分がルーム1になります。

次は「どの方向に動けるか」を変数で表してみましょう。
ナナメ移動も入れたいので、性格には「プレーヤーさんがどのキーを押せば動けるか」ですね。
矢印キーは上下左右の四つですが、上にも下にも動ける場合などがあるので、
「上なら1を代入」「上にも下にも動けるなら2を代入」……としていたらめんどくさくて仕方ありません。

そこで、こういうときはビット積を利用してみましょう。

《ビット積とは何か》実は私も詳しいことはわかりません。
二進法で表記したときに「1が重なる」ことだと思ってます。
たとえば…
普通の表記 二進法表記
    1     1
    2    10
    3    11
    6   110
    7   111
7は二進法で表したとき、1とは1桁目の1が重なってますから「1のビット積を満たす」
2とは2桁目の1が重なってますから「2のビット積を満たす」
3とはどっちも重なってますから「3のビット積を満たす」って感じです。
ところが6は1桁目に1がありませんから、「2のビット積を満たす」ですが1や3のビット積は満たしません。

ウディタでは、ビット積はイベントの出現条件や「もし変数○○が~なら」という条件に利用できます。

実際にここで使う場合を考えてみましょう。
二進法は2の○○乗で区切られてていて、各桁で表している数は、
1桁目が1
2桁目が2
3桁目が4
4桁目が8
になってます。
これと方向を対応させればいいので…
1桁目が1(右)
2桁目が2(下)
3桁目が4(左)
4桁目が8(上)
にしておきましょう。(ある程度テンキーに対応させてます)
上に動けるときは8、上下に動けるときには8+2で10を代入して、
実際に判別するときには「ビット積が8を満たしているか」を見れば上に動けるかどうかが、
「ビット積が2を満たしているか」を見れば下に動けるかどうかがわかります。

予備変数の好きなところにルーム番号と移動可能な方向を入れる変数を作ります。
予備変数2の0を「ルーム番号」、2の1を「矢印用変数」にしましょう。

《コモン部分(出力)》
矢印コモン
「パターン」を使って同じ画像を使いまわしているのは、PNG画像はバラバラよりも横に長いほうがファイルサイズが小さくて済むからです。

《マップイベント部分(入力)》
城下町のマップ
さきほどのマップです。


ルーム番号が0のときは右にしか動かせませんから1を、
ルーム番号が1のときは左にしか動かせませんから4を先ほどのコモンに代入すればオッケーです。
代入するのは移動時でいいでしょう。


101121_2109.png
101121_2110.png

上がルーム0、下がルーム1の画像です。
右下の画像が移動可能方向を表しています。
ちょっとしょぼいですが、これでどっちにいけばいいのかわかるようになりました。



実はお店の処理も作ってるのですが、今回の記事が長くなったので
また機会があればその処理のことも書きたいと思います。
関連記事
スポンサーサイト

Comment

Comment Form
公開設定

Trackback


→ この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。