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