入力装置
現在最も身近なコンピューターは、スマートフォンやタブレットでしょう。スマートフォンやタブレットは、電話ができるだけでなく、インターネットに接続されていますので、ネットサーフィンをすることや、様々なアプリをインストールして楽しむことができます。
スマートフォンやタブレットを利用するときは、指を使います。指で液晶画面に触れると、触れられた位置を検知して、アプリに送られます。アプリはその位置に応じて何らかの処理を行います。もぐらたたきゲームであれば、指で触れられた位置にもぐらが出ていれば、「もぐらが叩かれた」と判断して、得点を増やします。お絵描きアプリであれば、指で画面をなぞった結果の位置の変化に追随して、線を描きます。
また、パソコンであれば、キーボードを使って文字を入力したり、マウスを使って画面上に表示されたボタンを押したりします。
このように、コンピューターに対して人間が操作を行うための装置を「入力装置」と呼びます。コンピューターは、入力装置が操作されたことを検知して、そのことをプログラムに送ります。プログラムは、操作内容から次に実行すべき処理を決定します。
Jasmine Tea では、以下の操作をプログラムから扱うことができます。
- キーボードで何らかのキーが押された(PC のとき)
- オンスクリーンキーボードで何らかのキーが押されたとき(iPad のとき)
- 実行画面上をマウスでクリックされた(PC のとき)
- 実行画面上を指でタップされた(iPad のとき)
プログラムの実行中にキーボード(iPad のオンスクリーンキーボードを含む)で何らかのキーが押されたかどうかを知るために、inkey$ 関数を使うことができます。
do
key$=inkey$()
if key$<>"" then
print key$
end if
loop
上記のプログラムは、inkey$ 関数を使って、押されたキーが何かを画面に表示する例です。inkey$ 関数は、押されたキーに応じて以下のような文字列が得られます。
押されたキー | inkey$() の結果 |
---|---|
以下のいずれか:!"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんぁぃぅぇぉゃゅょっ、。゛゜ | 押されたキーの文字。 |
enter(エンター)キー | "Enter" |
bs(バックスペース)キー | "Backspace" |
カーソルキーの「←」 | "ArrowLeft" |
カーソルキーの「→」 | "ArrowRight" |
カーソルキーの「↑」 | "ArrowUp" |
カーソルキーの「↓」 | "ArrowDown" |
Jasmine Tea がプログラムの実行を開始したときに、押されたキーを記憶しておくためのバッファが確保されます。バッファは、32 回分のキー押下が記憶されます。inkey$ 関数は、バッファから押されたキーを 1 つ取り出します。もしバッファ内に 32 回分の押されたキーの情報が記憶されていたときは、inkey$ 関数を 32 回実行した時点で、バッファが空になります。
もしバッファに 1 つも記憶されていない状況で inkey$ 関数が実行されたときは、""(空文字)が inkey$ 関数の結果の値となります。プログラムが終了したときは、バッファ内に記憶されていた情報は破棄されます。
プログラムの実行中に、実行画面をマウスでクリック(PC)または指でタップ(iPad)されたかどうかを知るために、tap 命令を使うことができます。
do
tap x,y
if x<>-1 then
print "x=";x;" y=";y
end if
loop
上記のプログラムでは、tap 命令を使って、実行画面上をクリックまたはタップしたかどうかを確認しています。
Jasmine Tea では、プログラムの実行が開始されたときに、実行画面をクリックまたはタップしたことを記憶しておくためのバッファが確保されます。バッファは、32 回分のクリックまたはタップを記憶することができます。tap 命令は、バッファからクリックまたはタップされた情報を 1 つ取り出します。もしバッファ内に 32 回分のクリックまたはタップされた情報が記憶されていたときは、tap 命令を 32 回実行した時点で、バッファが空になります。
もしバッファに 1 つも記憶されていない状況で tap 命令が実行されたときは、パラメーターとして指定した変数には、どちらも -1 が記憶されます。プログラムが終了したときには、バッファ内に記憶されていた情報は破棄されます。