さあ!応用編です!頑張りましょう!
前回はこんな感じでしたね。
10 CLS :CLS:LINE (5,0)-(5,47):LINE (21*6-1,0)-(21*6-1,47)
:A=0:B=3:D=1:E=0:PRINT "ヨーイ・・・":FOR I=1 TO 1000:NEXT:PRINT "ドン!"
20 LOCATE A,B:PRINT "$":C$=INKEY$:E=E+0,1
30 IF (C$="1") AND (D=1)THEN LOCATE A,B:PRINT " ":A=A+1:D=2
40 IF (C$="2") AND (D=2)THEN LOCATE A,B:PRINT " ":A=A+1:D=1
50 IF A=22THEN PRINT "FINISH!":E=E+3:PRINT E:END
60 GOTO 20
今回はわかりにくくはなるかと思います。
しかし結構使える知識なので覚えていきましょう!
まず、つぎのプログラムを作ってみてください。
100 CLS :CLEAR
110 INPUT A
120 B=(A=2)
130 PRINT B:END
ではまず、1をインプットしてみましょう。
すると画面には「0」と表示されたはずです。
次に、2をインプットしてみましょう。
今度は「-1」と表示されたはずです。
つまり、Aが2のときは(A=2)というものは「-1」になり、
Aが2以外のものならば(A=2)は「0」になるのです。
つまり(A=2)が真のとき「-1」をかえし、偽のとき「0」をかえすのです。
これを使うと始めのプログラムの30,40に使えます。
C$=1でD=1のときA=A+1,D=2
C$=2でD=2のときA=A+1,D=1
を同時にできるようになるのです。
一度自分で考えてみましょう。
ひとつ教えるとVALを使います。
VALとは文字を数字に変える命令です。
VAL "32"とすると32が返されます。
どうですか?つまりこういうことです。
30 A=A-(VAL C$=D):D=D-(VAL C$=D)*((D=2)-(D=1))
40 IF VAL C$=D THEN LOCATE A,B:PRINT " "
としたらいいでしょう!説明しましょう。
A=A-(VAL C$=D)は(VAL C$=D)が成り立つ時「-1」になり、
マイナスが付いているので+1に変化するということです。
Dのほうも同じです。D=1のとき、D=2のときどのようなことが起こっているか
一つ一つ確認していくとわかると思います。
こんな風に簡単にすることができます。
次へ