SNAKE GAME
高木 真 一郎
ttAU TO" コマンドが 定鵪 されて を 押す と ゲーム ガスター 卜する。 日 キーで 右に 動かす ことかで さるが、 に 衝突す ると、 へピは 死んで しま "5
いて、 行 番号 (フ ログ ラムの 左側の ちし1 & 途中で ゲームが Jt85 つてし この場合の 左右は ペピの 進行 方向に の だ 〇 3 匹のへ ピガ 死ぬ と ゲーム オ 数字) を 10 きざみに 自動的に 出力す まつだ 5、 エラーメッセージに 注目。 むかつて のちので ある ことに 注憊 すーゾ る。 フ □グラムを 丨 J ス卜通 <0 に 入力 L I ST 行 番号 U ターンで、 エラー る こと。 こんな ふ ラ にへ ビ在 左右に ★プログラムの 改良 ★
する。 1 行 入れ 終わる ごとに 必 す、 の あつだ 行を 出力 〇 Syntax error 動かして エサを 食べる。 ジョ イス テイ ツクを 使う ときは、 140
ターン" キーを 押す のを 麻れ す な 5 スペル S ス、 lllegul function エサは 初めは 1 つ だけ あらわれる 行の wST = 0" を VST = 1 " に
に。 最後まで 入れたら" CTRL" call な &、 数字が 間違えて いるは す が一 定時 間 内に 食べない と 3 個埔 変える。 また、 へ ビを增 やすとき は 14 キーを 押しな が £>,s TOP" キー だ 0 IJ ス卜 とに 6 めつ こして 窗 して える (時 閩は画 固 下に 格で 表示され 0 行の WSN = 3〃、 エサの 数を 変える を 押す 。これで、 A U T 0 状 慂か& < れ 。エラ一が 全部 なくなつ だ 5、 る) 。エサ 在 1 個 食べる ごとに 胴体は ときは 1160 行の L F =1〇i し V" の もとの 状態に 復帰、 入力 完了 だ。 も ラー 度 csave し 直す ことを 忘れす 畏< なつて <る0 定数を それぞれ 変える ことが 必要。
フロ ク ■ラム? t WRUN" する 前に、 に。 エサを 全部 食べる と 圃面上 中央に 面の 数を 増やしたい 場合は、 1150 行
テープに、、 CSAVE" して おこう。 ★遊び 方 ★ 出口が でき、 そこを ぬける と 次の 面 • 1380 行を 変更し、 (面 数は SO) プ
力 セッ 卜 テープを 錄音 状態に して、 * す RUN® で スタート すると、 に 進む ことができ るので ある。 バタ ロク •ラム 末尾に « を 描く サフ ル一 チ csave 、、snake" と 入力し だ 後 リタ . H 面に へピと エサが あ 5 われる。 ーン は、 6 面 3; であり、 パターンが 進 ンを 作れば 0K〇 ーン キーを 押す。、、 OK" の 文字; tf 出 へビ在 動かす には カーソル 移動 キー むに つれ 当然 難し < なつて ぐるので C5C S A V E 完了。' ' F 5" の キー 日日を 使 今。 へ ピは日 キーで 左に、 ご 注 憲 / 外側の 力べ や 自分の 劂体
1 〇 ’兴 关关长 兴长兴 兴兴兴 兴兴兴 长兴兴 关兴菁
30 •* SNAKE GAME *
40 •* *
50 ** FOR MSX BASIC *
60 ** *
70 BY S . T *
80 * *******************
90 •
100 SCREEN 2,0,0:COLOR ,0,0:DEFINT A-Z: A=RND( -TIME)
110 DIM X(500),Y(500)
120 GOSUB 1390: • キャラクタ テ'" 一夕 130 OPEN "GRP:" AS# 1 140 SC=1:SN=3:PO=0:LV=1:ST=0 150 GOSUB 1050: * シ 3 キカ'" メン 160 *
170 •«= シ ヨキ セツ テイ =:=::= =
180 '
190 HD=0:LS=0:X(HD)=16:YCHD)=22:DL=5:DR=0:SF=1 :KS=0:TI=255 :SD=0 200 PSET (128,176),0:COLOR 8:DRAW HD$
210 FX=INT(RND(1 )*28)+l :FY=INT(RND(1 )*20)+2 220 IF P0INT(FX*8+3,FY*8+3) THEN 210 230 PSET(FX*8,FY*8),0:COLOR14:DRAW FD$
240 *
250 *=== メイン ルーチン ===
260 *
270 IF LF=0 THEN 400
280 TI=TI-4:LINE(TI,187)-(TI+4,191 ),13,BF 290 IF TI>0 THEN 400
300 SF=SF+3:LF=LF+3:TI=255:LINE(0, 186)-(255, 191 ) ,2,BF
310 FOR N=1 TO 3
320 FX=INT(RND(1)*30+1)
330 FY=INT(RNDC1 )*20+2)
340 IF POINT(FX*8+4,FY*8+3)<>0 THEN 320
350 PSET(FX»8,FY»8),〇rCOLOR 14: DRAW FD$
360 NEXT 370 *
380 LINE(224,0)-(239,7),0,BF:COLOR 15:PSET(224,0),0:PRINT 林 1,USINGM##";LF 390 *
400 KD=STICK(ST)
410 IF KD=KS THEN 430
420 DR=DR- ( KD=3 ) - ( KD=7 ) *3 : DR=DRM0D4 : KS=KD 430 SD=1-SD
440 IF SD THEN PLAYM06L32E" ELSE PLAY"06L32C"
450 HX=X(HD) :HY=Y(HD)
460 NX=HX-(DR=1 )+(DR=3)
470 NY=HY-(DR=2)+(DR=0)
480 PSET ( HX*8 , HY*8 ) , 0 : COLORO : DRAW HD$
490 PSET(HX*8,HY*8),0:COLOR5:DRAW BD$
500 PN=P0 1 NT ( NX*8+ 4 , NY*8+ 3 )
510 IF PN THEN 620
520 PSET(NX#8,NY*8),0:COLOR8:DRAWHD$
530 HD=HD+1
540 IF HD=501 THEN HD=0
550 XCHD)=NX:Y(HD)=NY
560 IF D し THEN DL=DL—1 〖GOTO 600
570 PSET(X(LS)#8,Y(LS) 兴 8),0:CO し OR 0:DRAW BD$
580 し S=LS+1
590 IF LS=501 THEN LS=0
600 IF NX=16 AND NY=1 THEN 980 ELSE 250
これは 画面 上を はいまわる ペピを 動かして 次々 丨こ あ 5 われる エサを 食 ベる ゲームで ある。 比較的 短め だが
を 生かし だものに して ある。 ★プログラム 入力の 仕方 ★
ます 電源を入れ、 B AS I C が 起 動す るのを 確 明。 キーボード 左上の WF 2" の キーを 押す。 これには、
610 •
620 •=== 八ン テイ ===
630 •
640 IF PN< >14 THEN 840
650 PLAY"06L64C#" , "06L64D" , "06L64G#"
660 LINE(0, 186)-(255,191 ),2,BF:TI=255 670 PO=PO+SC*10
680 PSET ( NX*8 , NY*8 ) , 0 : COLORO : DRAW FD$
690 DL=DL+8:PSET( NX*8,NY*8),0: COLOR 0: DRAW HD$
700 LF=LF-1
710 IF LF=0 THEN LINE( 120,8)-( 143, 15) ,8,BF:LINE( 128 720 LINE(224,0)-(239,7),0,BF
730 COLOR 15:PSET(224,0) ,0:PRINT #1 ,USING"## "•,し F
740 SF=SF-1
750 IF SF THEN 520
760 IF LF=0 THEN 810
770 SF=1
780 FX=INT(RND(1 )*30)+l :FY=INT(RND(1 )*20)+2 790 IF POINT(FX*8+4,FY*8+3)<>0 THEN 780 800 PSET (FX*8,FY*8),0: COLOR 14: DRAW FD$
810 LINE(64,0)-(103,7),0,BF:PSET(64,0),0:PRINT #1,U! 820 GOTO 520 830 •
840 • === GAME OVER ===
850 •
860 PLAY" 071250 L3CR64CR64L6CL6R64L2CR64L3D#R64L8DR6-
870 LINE( NX*8 + 3 , NY*8 + 3 ) - ( I NT ( RND ( 1 ) *256 ) , I NT ( RND (
880 IF PLAY(O) THEN 870
890 SN=SN-1
900 IF SN THEN 150
910 LINE(72,52)-(151,75),1,BF
920 PSET(80,60),1:PRINT#1, "GAME OVER"
930 LINE(48,8)-(153,15),0,BF
940 PSET(50,8),0:CO し OR 5:PRINT#1,"<- TO RE-PLAY H 950 IF STICK(ST)<>7 THEN 950 960 GOTO140 970 '
980 •=== 1 メン クリア ===
990 *
1000 PLAY"07L32C2DEFGABL408C07 "
1010 SC=SC+1 :GOTO 150 1020 '
1030 •=== メンノ セツ テイ ===
1040 •
1050 CLS 1060 COLOR 2
1070 LINE(6,14)-(250,186),,B
1080 PAINT(0,0), 2,2
1090 LINE(16,0>-(103,7),0,BF
1100 COLOR15:PSETC16,0),1:PRINT #1 , US I NGM Score :##### 1110 LINE(120,0)-(175,7),0,BF
1120 CO し OR15:PSET(l 20,0 ),1:PRINT #l,USING"Snake:#";SN 1130 LINE(184,0)-(239,7),0,BF 1140 •
1150 ON SC-1 GOSUB 11 80,120 0,1230 ,1280, 1320,1380 1160 し F= 10 兴し V:CO し OR 1 5 : PSET ( 1 84 , 0 ) , 0 : PRI NT #1 , "Food : 1170 RETURN
1180 LINE(56,96)-(175, 103) ,2,BF
1190 RETURN
1200 LINE(56,96)-(175, 103) ,2,BF
1210 LINE(120,58)-(127,143),2,BF
1220 RETURN
1230 LINE(80,64)-(159,71 ),2,BF
1240 LINE(80,96)-(159,103) ,2,BF
1250 LINE(80,128)-(159,135),2,BF
1260 LINE(80,64)-(87, 135) ,2,BF
1270 RETURN
1280 LINE(56,56)-( 199, 143) ,2,BF
1290 LINE(64,64)-(191 ,136),0,BF
1300 LINE(1 20,56 )-( 135, 63), 0,BF 1310 RETURN
1320 LINE(56,56)-(199,143),2,BF
1330 LI NE ( 1 20 , 56 ) - ( 1 35 , 1 43 ) , 0 , BF 1340 LINE(64,64)-(112,136),0,BF
1350 LINE(144,64)-(191 ,136),0,BF
1360 LINE( 70,96 )-(l 50, 111 ),0,BF 1370 RETURN
1380 SC=1:LV=LV+1: RETURN
1390 • ==;= キャラクタ テ イキ ~ ===
1400 HD$="BR2R4F1D4G1L4H1U4E1"
1410 BD$="BD1BR4D3U1L1R2"
1 420 FD$= "BR3R2F1 L4G1 R5D1 L5F1R3G1 "
1430 RETURN