プログラム講座

 さあ!応用編です!頑張りましょう!

 前回はこんな感じでしたね。

  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のときどのようなことが起こっているか

 一つ一つ確認していくとわかると思います。

 

 こんな風に簡単にすることができます。

 

 

次へ

戻る