第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章 !

戻る