|
OA業務ソフトや各種計算ソフトなど、キー入力を行うシーンは沢山出てきます。まず先に上げた「INPUT」文。
10 INPUT A
20 B = A + 100
30 PRINT B |
最初に「?」が表示されて入力を待っています。数値を入力すると、100を加算した内容が表示されます。入力項目が2つ欲しい時は、2行にするか、1行でまとめて「,」で区切って入力する事も出来ます。
しかし、?だけだと何のことだか分かりません。そういう場合は、
のように文字を入れて入力させる事が出来ます。また、「?」を表示させたくない場合には、
と「;」の代わりに「,」を使います。
勿論、[CTRL]キーと[XFER]キーを同時に押して漢字入力モードにすれば、漢字入力を行う事が出来ますが、[CTRL]+[XFER]を押さなくても自動的に漢字入力モードになって欲しいという場合があります。この場合には「KINPUT」文を使います。
但し、INPUT文のように文字を入れたり複数の変数を指定したりは出来ません。
変わった機能といえば、入力待ち時間を指定出来る「INPUT WAIT」文があります。
とすると、10秒だけ入力待ちをし、その間に入力しなければ次の文に移るというものです。待ち時間の単位は0.1秒です。10と指定すれば1秒、100と指定すれば10秒です。
INPUT文では、文字列に「,」という文字を含めて入力する事が出来ません。入力文字列の一部に「,」を含めたい場合には、「LINE INPUT」文を使います。区切る事が出来ないため、指定出来る変数は1つだけです。
INPUT文を使うと、カーソルキー(矢印キー)でカーソルをあちこちに動かせてしまい、画面が乱れてしまう事もありますし、[HOMECLR]キーを押すと画面上の文字が消えてしまう事もあります。強固なプログラムを作りたい時にこれでは困ります。
キー入力は行うが、画面内の他の文字に影響を与えないようにしたい、つまりは、キー入力機能そのものに表示機能を持たせていないもの、が欲しくなります。
1つ目は、キー入力待ちを行う「INPUT$」関数です。
10 A$=INPUT$(1)
20 IF A$="A" THEN 〜
30 IF A$="B" THEN 〜 |
「A$=INPUT$(1)」で、1文字入力するまで待ち、入力したらそれがA$に入り、次の行に移ります。3文字入れたい場合には「A$=INPUT$(3)」という風にします。改行キーを押すまで入力したい場合には、例えば、
10 B$=""
20 A$=INPUT$(1)
30 IF ASC(A$)=13 THEN 70
40 IF ASC(A$)<32 THEN 20
50 PRINT A$:B$=B$+A$
60 GOTO 20
70 〜 |
というプログラムにしておきます。
(ASC関数は、文字のASCIIコードを取得する関数です)
次に、キー入力待ちをしたくない場合もあります。その場合は「INKEY$」関数を利用します。この関数はINPUT$と違って1文字しか扱えません。この関数は、文字入力をして云々というよりも、どのキーを押したらどう処理をする、というような場合によく利用されます。
例えば、メニューを番号で入力する場合や、ゲームでキャラを移動したりする時などです。
10 A$=INKEY$
20 IF A$="2" THEN *DOWN
30 IF A$="8" THEN *UP
40 IF A$="4" THEN *LEFT
50 IF A$="6" THEN *RIGHT
60 GOTO 10
70 〜 |
|
|
バッチファイル
BASIC
1 2 3 4 5
6 7 8 9 A
B C D E F
G H I J
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
シェアウェア
Script!World
データベース
|