プログラミング超初心者のための講座
 第13回 BASIC編「爆弾ゲームに挑戦 その3」(色)


さて第13回が始まりましたよ。 忘れ物はないですか?

今回は色を付けてみます。
いままで白黒ばかりでしたが、ちゃんと色が出せるんです。

まずはおまじないが必要です。
意味が分からなくてもかまいませんのでこの1行を最初につけてください。

CONSOLE 0,25,0,1

これは簡単に説明すると画面の表示モードをどう変えるかという内容です。
ファンクション表示をするのか(画面1番下にlistとかgo toとか書いてある四角)
1画面何行にするのか、色を使うのかどうかなどです。

まー意味が分からなくてもいいので上記のように書いておいてください。

これで色が出せるようになりました。
では試しにこんなリストを実行してみましょう

10 CLS
20 CONSOLE 0,25,0,1
30 COLOR 2
40 PRINT "RED"
50 COLOR 7
60 END

RUNすると画面に赤い字でREDと表示されました。

見ての通り色を出す命令はCOLORです。
解説
10 画面をクリア
20 色を出すおまじない
30 色を赤にしろ
40 REDと表示
50 色を白にしろ
60 おわり

わかりますか?
ただCOLOR 2を実行すると今後表示されるすべても表示が赤になってしまうので
50行で白に戻しているわけですね。これが今回のポイントです。

ちなみにN88BASICで出せる色は8色です。コードは以下の通り
 
カラーコード 0 1 2 3 4 5 6 7
水色 黄色

ではゲームに色を付けてみましょう。

10 REM ========== 初期化 ============================
20 CLS:C=0
25 CONSOLE 0,25,0,1
26 COLOR 7
30 A=VAL(RIGHT$(TIME$,1))+1
31 PRINT" の家に爆弾が仕掛けられた!!!"
32 PRINT"それを知ったのはついさっきだ、やっとの思いで爆弾を発見したが"
33 PRINT"これを自分で処理しなくればいけない!!!!"
34 PRINT"おそるおそる爆弾の解体をはじめると、額に汗が流れてきた。"
35 PRINT"「これならうまくいけそうだ」そう思った瞬間、息をのんだ。"
36 PRINT"後は起爆装置へつながる線を切るだけなのだが、なんとダミーの線で囲まれている。"
37 PRINT"数は10本!!このうち1本が当たりだ。これを見つけだし切断に成功すれば"
38 PRINT"この危機を脱出することができる。しかし、爆弾には防衛策がとってあった"
39 PRINT"どうやら5本以上間違えて切ると即座に起爆装置が作動して、"
40 PRINT"我が家とともにこっぱみじんというわけだ。"
41 PRINT"しかしぐずぐずしているヒマはない!!!運を天に任せ切ることに決めた、、、、、、、"
42 PRINT" が切るのは、、、、、、この線だ!!!!!!!!!!!!!!!!!!!"
43 REM ========== 入力 ==============================
50 INPUT "何番の線を切りますか?(1-10)";B
60 C=C+1
70 REM ========== 判断 ==============================
70 IF B=A THEN GOTO 100
80 IF B<>A THEN GOSUB 130
90 GOTO 50
100 REM ========= 当たり処理 ========================
105 FOR T=0 TO 300:FOR I=0 TO 300:BEEP 1:BEEP 0:NEXT I:NEXT T
110 COLOR 5:PRINT "よかった助かった!!":COLOR 7
120 GOTO 190
130 REM ========= はずれ処理 =======================
135 BEEP
140 COLOR 2:PRINT "間違いだ!!":COLOR 7
150 IF C>=5 THEN GOTO 170
160 RETURN
170 REM ========= ゲームオーバー =====================
173 COLOR 6
174 PRINT "ドッカーン!!!"
175 FOR T=0 TO 500:FOR I=0 TO 100:BEEP 1:BEEP 0:NEXT I:NEXT T
176 PRINT "あなたは死にました"
180 PRINT "GAME OVER"
190 REM ========== もう1回 ==========================
195 COLOR 7
200 INPUT "CONTINUE?(Y/N)";R$
210 IF R$ = "Y" THEN GOTO 10
220 IF R$ = "N" THEN END
230 GOTO 190

RUNして試してください。別にここの例と同じ色じゃなくてもいいですよ

アレンジ
あとゲームオーバーのところをちょっと変えるとこうなります

170 REM ========= ゲームオーバー =====================
173 COLOR 6
174 PRINT "ドッカーン!!!"
175 FOR T=0 TO 500:FOR I=0 TO 100:BEEP 1:BEEP 0:NEXT I:NEXT T
176 PRINT "あなたは死にました"
179 FOR C=1 TO 7
180 COLOR C:PRINT "GAME OVER"
185 NEXT C

こうするとゲームオーバーの時に
カラフルなゲームオーバーが表示されます。

実行例
ドッカーン
あなたは死にました
GAME OVER
GAME OVER
GAME OVER
GAME OVER
GAME OVER
GAME OVER
GAME OVER
CONTINUE?(Y/N)?

COLORの使い方と同時に
FOR 〜 NEXTの使い方もマスターしておきましょう。

179 FOR C=1 TO 7         <---- 変数Cを1を入れて繰り返せ7になるまで
180 COLOR C:PRINT "GAME OVER"  <---- Cに入っている色に変えろ・GAMEOVERと表示しろ
185 NEXT C             <---- ここまで繰り返せ

わかったかな?

これでかなりゲームらしくなってきましたね。
あとはビジュアル的にもっと盛り上げていきたいですね。

たとえば1本切ったら画面に表示されている線がチョキン!!と切れていく

そんなことを次回はやってみましょう。

では次回の講義をお楽しみに
さいなら

もどる



このページはNetscapeNavigator or Netscape Communicator 4.7で
きれいに見えるように作られています。そちらをお使いください。