Profile

書いてる人:

たけ-ちーず
紹介文:
SkypeID:take-cheeze

Link

RSS Feed

Search

Calender

Latest Article

Category

Access Counter

Online Counter

Show All Article

どうでもいい独り言。 と、少しの開発日記。
  • 11 «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • » 01
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 |
たまには、ぎじゅーつ的な話。
あまり、まともな記事を上げていないので、まともな話が出来る技術について書きます。
続けることは大事ですが変えることも同じくらい大事です。

で、具体的な内容ですが、ツクールのマップチップ同士での通行・ブロックに関してです。
微妙に勘違いしていて、つい最近やっと理解できたので、まとめも兼ねております。

因みに、初級編くらいの難易度です。
イベントが絡むと、とっても複雑になります。


手っ取り早く、判定に必要なデータです。

イベントの向き
番号:向き
・2: 南(下)
・4: 西(左)
・6: 東(右)
・8: 北(上)
※ これとキャラチップの向きを勘違いしていました。両者は全く別物でした。
※ この間違いに気づけたのは、このページのおかげです。詳しくは、リンク先をご参照下さい。全く同じ記述があると思います。
※ 因みに、8まであるのは8方法を扱いたかったのではないかと邪推しています。

マップチップの通行・ブロック情報
ビット:方向
・0: ↓下
・1: ←左
・2: →右
・3: ↑上
※ ビットが立っている場合は通行可、立っていない場合は通行不可。


この2つのデータを元に、現在のマップチップ進行先のマップチップ、それぞれを判定をします。

それで、判定方法を考えるのですが、具体的には、
・switch文
・判定式を考える
という、二通りくらいは考えられると思います。
これ以上が、思いつく方は、わたしよりも素晴らしいです。

前者は、今回の場合はわたしの結論とは違うし、簡単だと思うので割愛します。
後者は、上に挙げた二つのデータにある規則性を見つけるコトから始めます。

肝心の規則性ですが、各向きの大きさビット位置が対応していることです。
10分くらい二つとニラメッコすれば、誰でも分かると思います。

そして、式を考えるのですが、現在のマップチップは、

( (通行・ブロック情報) & ( 0x01 << ( (向き)/2 - 1 ) ) ) != 0


です。
続きまして、進行先のマップチップは、

( (通行・ブロック情報) & ( 0x08 >> ( (向き)/2 - 1 ) ) ) != 0


です。

日本語部分は上の二つを適切に当てはめて、他はプログラムを書く時に使う記号とかになります。
説明は上手く出来ないですが、要約すると、

向きからシフト量を出して、

(シフト量) = (向き)/2 - 1


現在と進行先に対応する値をシフト量だけ対応する方向にシフトさせ、マスクを算出し

(マスク) = (0x01 or 0x08) (<< or >>) (シフト量)


そのマスクとアンド演算子を使ってビットが立っているのかを、判定しています。

( (通行・ブロック情報) & (マスク) ) != 0



※ マスク : 判定したいビット位置だけビット位置だけビットが立っている値です。
※ アンド演算子 : 特定のビットだけ立っているか判定されるのによく使われます。
※ 進行方向の判定式は、よくよく考えると腑に落ちると思うので、割愛です。


と、素人説明でした。
理解してくれる人がいたら、きっと幸いです。


それでは、お休みなさい。
【2010/02/17 23:56】 | RPG2k_Emu | トラックバック(0) | コメント(0) |
<<昨日の記事というか、一昨日の記事というか。 | HOME | わたしがしているコトは、リバースエンジニアリングにあたるかもしれない。>>
コメント
コメントの投稿












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

トラックバック
トラックバックURL
http://takecheeze.blog47.fc2.com/tb.php/282-62e94fca
この記事にトラックバックする(FC2ブログユーザー)
ホーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。