第16章 スイッチON! |
どんなゲームをつくるにしても、やっぱりマウスやキーボードを使いますよね(*^^) そこでこの章では、少しシューティングゲームっぽいプログラムを紹介します。 |
xx=310 repeat stick key ;押されているキーを取得 if key=1:xx-=3 ;←が押されたら左に移動 if key=4:xx+=3 ;→が押されたら→に移動 redraw 2 color 255,255,255:boxf ;背景を白で塗りつぶす color 0,0,0 ;文字の色 pos xx,0:mes "T" redraw 1 wait 1 loop |
どうです?カーソルキーの左を押したら左に、右を押したら右にちゃんと動くでしょう? stickというのは、マウスでクリックしたときや、キーボードのキーを押したときに、 それぞれに割り当てられているキー番号を、指定された変数(今回のプログラムではkey)にいれるものです。 この場合、keyという変数にキー番号が入りますね(変数の名前はなんでも良いです) 1 カーソルキー左(←) 2 カーソルキー上(↑) 4 カーソルキー右(→) 8 カーソルキー下(↓) 16 スペースキー 32 Enterキー 64 Ctrlキー 128 ESCキー 256 マウスの左ボタン 512 マウスの右ボタン 1024 TABキー↑こんな感じになっています。 今回は、カーソルキーの左、または右を押されたときに"T"の文字を動かしたかったので、 if文で、keyに入っている数字が1か4であるときに"T"のX座標を表す変数xxを増減させました。 ちなみに、もし二つ以上のキーが押されたらどうなると思います? 実はその2つのキー番号を足した値が入ります。 もしマウスの左と右を同時にクリックしたら、256+512=768ですね。 ちなみに上のプログラムでは、キーを押しっぱなしにしても、一度しか"T"は動きません。 押してる間ずっと動かしたいなら、stick key,1の様に、押しっぱなしでも反応させたいキー番号を書きます。 stick key,1の場合、カーソルキー左を押しっぱなしにしている間、"T"は左に動き続けますが、 カーソルキー右を押しっぱなしにしても、"T"は右に一度しか動きません。 こういうときには、その2つのキーのキー番号を足した数字を書けば良いです。 このプログラムの場合、1+4=5ですから、stick key,5に変えて実行してみましょう。 stick命令では、上記の限られたキーしか取得できません。 これだけでは、タイピングゲームなどは作れませんよね(^^;) そこで出てくるのが次の命令です。 |
repeat getkey key,1 redraw 2 color 255,255,255:boxf if key=1{ color 0,0,0 pos 0,0:mes "左クリックしてますね" } redraw 1 wait 1 loop |
このgetkey命令は、stick命令とは少し違います。 getkeyの右に変数名を書いて、その右にキー番号を書いておきます。 そして、そのキー番号のキーが押されている間ずっと、指定した変数に「 1 」が入り続けます。 押されてないときは、ずっと「 0 」が入ります。 今回のプログラムは、マウスの左ボタンが押されている間だけkeyという変数に1が入るわけですね。 ちなみに指定されたキー番号以外のキーを押してもkeyに1は入りません。 そして、keyが1の時だけ、"左クリックしてますね"と表示するのです。 キー番号の一覧です↓ 1 マウスの左ボタン 2 マウスの右ボタン 3 キャンセル([CTRL]+[BREAK]) 4 3ボタンマウスのまん中のボタン 8 [BACKSPACE](PC98の[BS]) 9 [TAB] 13 [ENTER] 16 [SHIFT] 17 [CTRL] 18 [ALT](PC98の[GRPH]) 20 [CAPSLOCK] 27 [ESC] 32 スペースキー 33 [PAGEUP](PC98の[ROLLDOWN]) 34 [PAGEDOWN](PC98の[ROLLUP]) 35 [END](PC98の[HELP]) 36 [HOME](PC98の[HOMECLR]) 37 カーソルキー[←] 38 カーソルキー[↑] 39 カーソルキー[→] 40 カーソルキー[↓] 48〜57 [0]〜[9](メインキーボード) 65〜90 [A]〜[Z] 96〜105 [0]〜[9](テンキー) 112〜121 ファンクションキー [F1]〜[F10]これでほとんどのキーを取得できます。 ただ、これを使ってタイピングゲームなどを作るにはちょっとしたコツがいりますので、 今まで習った知識だけではまだ無理です。 この章から、既に習った簡単な部分の説明は省いていきます。 あまり説明が長くなるのも嫌ですから(^^;) ですから、分からないところがありましたら質問どうぞ。 Let's go to 第17章 ! |