ユーザーが押したキーコードを調べる手続きや関数を使います。
以下のプログラムはキーボードのテンキーを使って選択されている図形を移動します。
1 | PROCEDURE TEST; | |
2 | VAR | |
3 | key:INTEGER; | |
4 | BEGIN | |
5 | Message('5を押すと終了します'); | 手続き「Message」を使ってメッセージウインドウを表示させます。 |
6 | REPEAT | ループの始まりです。5が押されるまでループします。 |
7 | GetKeyDown(key); | 手続き「GetKeyDown」を使ってユーザーからのキー入力を受け取ります。 ユーザーがキーを押すまでこの行で待機します。 キーが押されたらキーのASCIIコードを変換Keyに格納し次の行に進みます。 |
8 | IF key=52 THEN | もし押されたキーが4(ASCIIコード=52)ならば、 |
9 | MoveObjs(-10,0,FALSE,FALSE); | 手続き「MoveObjs」を使って選択されている図形を10mm左(-)へ移動します。 |
10 | IF key=54 THEN | もし押されたキーが6(ASCIIコード=54)ならば、 |
11 | MoveObjs(10,0,FALSE,FALSE); | 手続き「MoveObjs」を使って選択されている図形を10mm右(+)へ移動します。 |
12 | IF key=50 THEN | もし押されたキーが2(ASCIIコード=50)ならば、 |
13 | MoveObjs(0,-10,FALSE,FALSE); | 手続き「MoveObjs」を使って選択されている図形を10mm下(-)へ移動します。 |
14 | IF key=56 THEN | もし押されたキーが8(ASCIIコード=56)ならば、 |
15 | MoveObjs(0,10,FALSE,FALSE); | 手続き「MoveObjs」を使って選択されている図形を10mm上(+)へ移動します。 |
16 | ReDraw; | 手続き「ReDraw」を使って移動した図形を再描画します。 プログラム実行中は明示的に図形を再描画しない限り変更した図形は画面に反映されませんので、 図形を移動したり、変形したあとは「ReDraw」を使って再描画させる必要があります。 |
17 | UNTIL key=53; | ループを抜ける条件は5(ASCIIコード=53)が押されたときです。 |
18 | ClrMessage; | 表示していたメッセージウインドウを消去します。 |
19 | END; | |
20 | Run (TEST); | |
[例題プログラム]
PROCEDURE TEST;
VAR
key:INTEGER;
BEGIN
Message('5を押すと終了します');
REPEAT
GetKeyDown(key);
IF key=52 THEN
MoveObjs(-10,0,FALSE,FALSE);
IF key=54 THEN
MoveObjs(10,0,FALSE,FALSE);
IF key=50 THEN
MoveObjs(0,-10,FALSE,FALSE);
IF key=56 THEN
MoveObjs(0,10,FALSE,FALSE);
ReDraw;
UNTIL key=53;
ClrMessage;
END;
Run (TEST);