テトリスで古いキーが必要な理由

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
メリモ

テトリスで古いキーが必要な理由

#1

投稿記事 by メリモ » 12年前

http://homepage2.nifty.com/natupaji/DxL ... m.html#N10

このサイトの落ちものゲームってとこです。

Key & ~OldKey と
何故古いキーが必要なんでしょうか?
OldKeyは前回入力キーです。何の意味があるんですか?
眺めても全く分りません。

ソーン

Re: テトリスで古いキーが必要な理由

#2

投稿記事 by ソーン » 12年前

コードのコメントに書いてある通り連打防止です。
これがなければ何気なく0.5秒押したら約30回も操作を行ってしまいます。
前回押されていなかった場合のみ通るようになってますね。
( Key & ~OldKey ) & PAD_INPUT_A は
(Key & PAD_INPUT_A) && !(OldKey & PAD_INPUT_A) と同じ動作をします。(はず、です。)

メリモ

Re: テトリスで古いキーが必要な理由

#3

投稿記事 by メリモ » 12年前

どういうことでしょうか?

ソーン

Re: テトリスで古いキーが必要な理由

#4

投稿記事 by ソーン » 12年前

あ、コメントがあったのは別の所ですね。シューティング基本です。
試しに Key & ~OldKey を Key に置き換えてみれて実行すればわかると思います。
私はやっていませんが、おそらくとてもプレイ出来たものではなくなるはずです。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: テトリスで古いキーが必要な理由

#5

投稿記事 by みけCAT » 12年前

ソーン さんが書きました:( Key & ~OldKey ) & PAD_INPUT_A は
(Key & PAD_INPUT_A) && !(OldKey & PAD_INPUT_A) と同じ動作をします。(はず、です。)
C言語なら同じ動作はしないはずです。(例:Key=0x100,OldKey=0x010,PAD_INPUT_A=0x100で前者は256、後者は1)
if(( Key & ~OldKey ) & PAD_INPUT_A)とif((Key & PAD_INPUT_A) && !(OldKey & PAD_INPUT_A))なら
同じ動作をしそうです。(Key,OldKey,PAD_INPUT_Aが全て変数または定数と仮定した場合)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

メリモ

Re: テトリスで古いキーが必要な理由

#6

投稿記事 by メリモ » 12年前

連打防止のためなんですか。
やっとわかりました。ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る