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