« [奮闘記]数式ってのはこういうものなのだ | トップページ | [奮闘記]計算式と条件式(その1) »

[奮闘記]ちゃんと自機がカーソルに従って動いた理由の解析

確認の意味で、謎だった部分を書き出してみましょ。「暗記しましょう」はいいんだけど、訳がわからないと悔しいもんね^^;


*JIKI
STICK PAT,15
XV=(PAT>>2&1)-(PAT&1)
YV=(PAT>>3&1)-(PAT>>1&1)

MX=XV*MOVE+MX : MY=YV*MOVE+MY
IF MX<0   : MX=O
IF MX>566 : MX=566
IF MY<0   : MY=0
IF MY>364 : MY=364
POS MX,MY : GMODE 2 : GCOPY 2,0,0,32,32
RETURN

※ MX , MY ・・・ 自機の座標
※ MOVE ・・・ 自機の移動速度

んで、STICK命令で返される値が次の通りね。

1 2 4 8

ここで注意なのは、同時に押された場合。←→が同時に押されてる場合、返される値は「 5 」になる。↑→なら「 6 」だね。論理演算は2進法で考えざるを得ないんで、全部の組み合わせを2進法になおして表記してみましょう。

- %0000 0
%0001 1
%0010 2
←↑ %0011 3
%0100 4
←→ %0101 5
↑→ %0110 6
←↑→ %0111 7
%1000 8
←↓ %1001 9
↑↓ %1010 10
←↑↓ %1011 11
→↓ %1100 12
←→↓ %1101 13
↑→↓ %1110 14
←↑→↓ %1111 15

見事に全部違う値が返されました。これはあくまで想像だけど、STICKの命令で返される値は、全部の組み合わせが違う数値になるんじゃないかな?こんなこと考える人って天才か変態かどっちかだと思う。あっしのような凡人にはとても真似できない^^;

閑話休題

さて、←↑が押された場合ってのを考えてみましょう。この場合「PAT=3」なので、この2行はこんな感じになる。


XV = (%0011)>>2 & %0001 - %0011 & %0001
YV = (%0011)>>3 & %0001 - (%0011)>>1 & %0001

XV = %0000 & %0001 - %0011 & %0001
YV = %0000 & %0001 - %0001 & %0001

XV = %0000 - %0001
YV = %0000 - %0001

はい、見事にXVもYVも-1になりました。はっきり言って、お見事!の 一言です。さすがに全部の組み合わせを試してみる気にはなれないけど、完璧に動いてるってことは、全ての組み合わせがちゃんとこういう感じになるってこと ですね。ちなみに←→っていうような、相反する組み合わせで押された場合でも、ちゃーんとx軸の運動量は0になります。つまり動かないっつーこと。こう やって論理演算で処理させてるから、キビキビとカーソルに反応するプログラムにできるんですね。CPUに優しく、操作する人にも優しく、プログラムを組む 人には厳しく・・・(爆)

« [奮闘記]数式ってのはこういうものなのだ | トップページ | [奮闘記]計算式と条件式(その1) »

1.奮闘記」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67538/57445600

この記事へのトラックバック一覧です: [奮闘記]ちゃんと自機がカーソルに従って動いた理由の解析:

« [奮闘記]数式ってのはこういうものなのだ | トップページ | [奮闘記]計算式と条件式(その1) »