Title: 迷路ゲーム (Maze Game)
System: Family Basic
Author: 
Publication: 任天堂 ファミリーコンピュータ ファミリーベーシック PERFECT BOOK (Nintendo Family Computer and Family Basic Perfect Book)	
Page Scans: 
Preserved By: ozidual
Recommended Emulator: VirtualNES

Article Translation

The program is a game. A car has now appeared in the area marked START in the upper left corner of the screen. Use Controller I to control the car and move it to GOAL in the lower left corner of the Screen
Mario moving at the bottom of the screen represents the passage of time. At first, he is at the far right, but if he moves all the way to the far left, the game will be over, so you must reach the goal before that happens.
When you get your care into the goal, the remaining time will be added to your score, so the person who gets into the goal first will get a higher score.
If you get the car into the goal within the time limit, the car will reappear at the starting point. You must move the car to the goal again, but this time Mario will be moving a little faster. In other words, the time has become shorter. Again, you must get the car into the goal before Mario reaches the left edge of the screen. The method of adding up points is the same as the first time, so if you got into the goal in succession, you will get a higher score.


Code

10 CLS:CGSET 1,1:SPRITE ON:VIEW:TI=20:SC=0:LE=0
20 DEF SPRITE 0,(0,1,0,1,0)=CHR$(125)+CHR$(124)+CHR$(127)+CHR$(126)
30 DEF SPRITE 1,(0,1,0,0,0)=CHR$(124)+CHR$(125)+CHR$(126)+CHR$(127)
40 DEF SPRITE 2,(0,1,0,0,1)=CHR$(142)+CHR$(143)+CHR$(140)+CHR$(141)
50 DEF SPRITE 3,(0,1,0,0,0)=CHR$(140)+CHR$(141)+CHR$(142)+CHR$(143)
55 DEF MOVE(0)=SPRITE(0,7,TI,112,1,0)
56 LOCATE 8,0:PRINT"SCORE";SC;:LOCATE 18,0:PRINT"LEVEL";LE:LOCATE 11,21:PRINT"TIME":LOCATE 0,22:PRINT"* * * * * * * * * * * * * *"
60 CX=24:CY=38:S=0:TX=240:SP=2
62 PLAY"O3C5R5C5R5C5R5O5C6"
65 FOR I=0 TO 24:SPRITE S,I,CY:NEXT
66 POSITION 0,TX,192:MOVE 0
70 SX=(CX-12)/8+DX:SY=(CY-20)/8-1+DY
80 C$=SCR$(SX,SY)
190 SPRITE S,CX,CY
195 IF STICK(0)=1 THEN DX=2:DY=1:GOTO 200
196 GOTO 205
200 IF C$=CHR$(32) THEN SPRITE 1:SPRITE 2:SPRITE 3:S=0:CX=CX+SP:IF CX>216 THEN CX=216
205 IF STICK(0)=2 THEN DX=-1:DY=2:GOTO 210
206 GOTO 215
210 IF C$=CHR$(32) THEN SPRITE 0:SPRITE 2:SPRITE 3:S=1:CX=CX-SP:IF CX<24 THEN CX=24:IF CY>160 THEN 700
215 IF STICK(0)=4 THEN DX=1:DY=3:GOTO 220
216 GOTO 225
220 IF C$=CHR$(32) THEN SPRITE 0:SPRITE 1:SPRITE 3:S=2:CY=CY+SP:IF CY>168 THEN CY=168
225 IF STICK(0)=8 THEN DX=0:DY=0:GOTO 230
226 GOTO 500
230 IF C$=CHR$(32) THEN SPRITE 0:SPRITE 1:SPRITE 2:S=3:CY=CY-SP:IF CY<38 THEN CY=38
500 IF MOVE(0)=0 THEN 800
510 GOTO 70
700 FOR I=0 TO 24:SPRITE S,CX-I,CY:NEXT:CUT 0
710 LOCATE 7,9:PRINT"GOAL IN !!"
720 LOCATE 3,11:PRINT"CHALLENGE NEXT LEVEL !!"
730 TI=TI-2:IF TI<1 THEN TI=1
740 SC=SC+XPOS(0):LOCATE 8,0:PRINT"SCORE";SC
750 LE=LE+1
760 PAUSE 200:SPRITE S:ERA 0:VIEW:GOTO 55
800 FOR I=0 TO 10:LOCATE 9,9:PRINT"GAME OVER":PAUSE 20:LOCATE 9,9:PRINT"         ":PAUSE 20:NEXT
810 LOCATE 7,9:INPUT"TRY AGAIN ";T$:IF T$<>"N" THEN RUN
820 CLS:CGSET 1,0:SPRITE OFF
830 END


Corrections

Page 110:

(Too many *'s in line 56)

56 LOCATE 8,0:PRINT"SCORE";SC;:LOCATE 18,0:PRINT"LEVEL";LE:LOCATE 11,21:PRINT"TIME":LOCATE 0,22:PRINT"* * * * * * * * * * * * * *"


Page 111:

(There's a / that should not be there and TR$ doesn't work as a variable)
810 LOCATE 7,9:INPUT"TRY AGAIN ";T$:IF T$<>"N" THEN RUN
