Skip to content

Instantly share code, notes, and snippets.

@fu-sen
Last active February 12, 2021 12:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fu-sen/7274471 to your computer and use it in GitHub Desktop.
Save fu-sen/7274471 to your computer and use it in GitHub Desktop.
' BOOM! | MSX-BASIC
' Copyright (c) 2003 Keiichi Shiga (BALLOON | FU-SEN)
' The MIT License (MIT) - https://mit.balloon.net.eu.org/#2003
100 T=RND(-TIME)*1
110 DEFINT A-Z:DIM B(32,23)
120 SCREEN 1:KEY OFF:WIDTH 32
130 COLOR ,4:CLS:INPUT"BOOM";B
140 COLOR ,12:CLS
150 FOR I=1 TO B
160 LOCATE 0,0,0:PRINT"WAIT";I;
170 X=RND(1)*32:Y=RND(1)*23
180 B(X,Y)=255
190 IF X=0 GOTO 220
200 IF B(X-1,Y)=255 GOTO 220
210 B(X-1,Y)=B(X-1,Y)+1
220 IF X=31 GOTO 250
230 IF B(X+1,Y)=255 GOTO 250
240 B(X+1,Y)=B(X+1,Y)+1
250 IF Y=0 GOTO 280
260 IF B(X,Y-1)=255 GOTO 280
270 B(X,Y-1)=B(X,Y-1)+1
280 IF Y=22 GOTO 310
290 IF B(X,Y+1)=255 GOTO 310
300 B(X,Y+1)=B(X,Y+1)+1
310 NEXT I:LOCATE 0,0
320 FOR I=1 TO 736:PRINT".";:NEXT I
330 X=RND(1)*32:Y=RND(1)*23
340 IF B(X,Y)=255 GOTO 330
350 GOSUB 590
360 S=STICK(0)+STICK(1):XX=X:YY=X
370 X=X-(S=7)*(X>0)+(S=3)*(X<31)
380 Y=Y-(S=1)*(Y>0)+(S=5)*(Y<22)
390 IF XX=X AND YY=Y GOTO 410
400 LOCATE X,Y,1
410 IF STRIG(0)+STRIG(1)<>-1 GOTO 360
420 LOCATE ,,0
430 IF B(X,Y)=255 GOTO 510
440 IF VPEEK(&H1800+Y*32+X)<>46 GOTO 470
450 T=T+1:LOCATE 0,23,0
460 PRINT"SCORE ";T;
470 IF B(X,Y)>0 GOTO 490
480 GOSUB 590:GOTO 360
490 LOCATE X,Y:PRINT CHR$(&H30+B(X,Y));
500 GOTO 360
510 COLOR ,8:FOR X=0 TO 31
520 FOR Y=0 TO 23
530 IF B(X,Y)<>255 GOTO 550
540 LOCATE X,Y,0:PRINT"*";
550 NEXT Y:NEXT X
560 IF STRIG(0)+STRIG(1)<>-1 GOTO 560
570 IF STRIG(0)+STRIG(1)=-1 GOTO 130
580 GOTO 570
590 IF B(X,Y)=0 GOTO 620
600 LOCATE X,Y:PRINT CHR$(&H30+B(X,Y));
610 RETURN
620 LOCATE X,Y:PRINT " ";
630 RETURN
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment