14.演算子の処理を作る2
下にここまでのプログラムを示します。青色の部分が今回追加した所です。
今回は特に説明を行いません。上の図と比べてみてください。
DIM BTNSUU( 15 ) ARRAY BTNSUU( 0 ) = ( 82 , 79 , 80 , 81 , 75 , 76 , 77 , 71 , 72 , 73 ) ARRAY BTNSUU( 10 ) = ( 78 , 74 , 55 , 181 , 156 ) CH=G@SETUP(320,240,16,1) //画面の準備 CH2=G@CHRLOAD("DENTAKU.BMP") //電卓の画像を読み込み G@COLOR(0,0,1) //文字を黒色にする SUU1 = 0 //画面に表示する数字 ENZAN1 = 10 LOOP G@CHRCOPY( CH2 , CH , 0 , 0 ) //電卓の画像を画面に貼る I@KEYGET2( ) //キーボートのチェック IF I@KEYBTN2( 1 ) == 1 THEN //ボタンは押された BT = I@KEYBTN2( 0 ) //ボタンの種類を変数BTに代入 FOR I = 0 TO 14 //配列をたどる IF BTNSUU( I ) == BT THEN //ボタンの種類を配列から調べる BREAK //ボタンが分かったのでFOR〜NEXTを抜ける ENDIF NEXT //最後まで見つからなければI=10で終わる IF I < 10 THEN //「I<10」ならば数字が押された IF ( 214748364 > SUU2 )OR(( 214748364 == SUU2 )AND( I<=7 )) THEN //オーバーフローしない? SUU2 = SUU2 * 10 + I //桁の処理 KEKKA = SUU2 //表示する値を設定 RENZOKU = 1 //演算子の連続投入でない ENDIF ENDIF IF ( 10 <= I ) AND ( I <= 14 ) THEN //演算子が押された IF RENZOKU == 0 THEN ENZAN1 = I ELSE IF ENZAN1 == 10 THEN SUU1 = SUU1 + SUU2 ENDIF IF ENZAN1 == 11 THEN SUU1 = SUU1 - SUU2 ENDIF IF ENZAN1 == 12 THEN SUU1 = SUU1 * SUU2 ENDIF IF ENZAN1 == 13 THEN SUU1 = SUU1 / SUU2 ENDIF IF I == 14 THEN KEKKA = SUU1 //表示する値を設定 SUU1 = 0 ENZAN1 = 10 ELSE KEKKA = SUU1 //表示する値を設定 ENZAN1 = I ENDIF SUU2 = 0 RENZOKU = 0 //演算子の連続投入になるかも ENDIF ENDIF ENDIF G@PRINT( CH , 32 , 8 , STR( KEKKA ) ) //数字を表示する G@FLIP( ) //画面を更新 ENDLOOP