
REM $OPTION k50

 DEFINT A-Y
 RANDOMIZE TIMER

 N=400
 DIM Box%(40),GP%(14000),P1%(7),P2%(7)
 DIM X%(N),Y%(N),XX%(N),YY%(N),zXS(N),zYS(N),C(N)
 ON BREAK GOSUB SeeYa
 BREAK ON

 '** Make patterns for AREAFILLs
 FOR I=0 TO 6 STEP 2
  P1%(I)=&HFFFF: P1%(I+1)=&HFFFF
  P2%(I)=&HAAAA: P2%(I+1)=&H5555
 NEXT
 
 '** For Around Subroutine
  zPi=3.14159
  zPS=zPi/360
  AW=1

 '** Set up Custom Screen and Window
 SCREEN 1,640,400,3,1
 WINDOW 1,"",(0,2)-(100,40),16,1
 PALETTE 0,0,.7,.7: PALETTE 1,0,.7,.7: PALETTE 2,0,0,0
 PALETTE 3,.8,.7,0: PALETTE 7,.9,.9,.5
 WINDOW 2,,(0,2)-(320,365),0,1
 WIDTH(38)
 
 '** Make and get the blocks that form puzzle word
 W=4: H=8
 LINE(0,0)-STEP(w,h-1),7,b
 LINE(1,1)-STEP(w-1,h-1),2,b
 LINE(1,1)-STEP(w-2,h-2),3,bf
 PSET(0,h),3
 GET (0,0)-(w,h),Box%
 CLS

' ** Default messages if no textfile is found
   J1$="JUMPDISK"
   Top$="      GUESS THE WORD AND WIN A PRIZE"
   Bot$="     Send $50 to JUMPDISK to cover shipping         and handling of prize."

' ** Looks for 3 line file on disk
   F$="SplodeTitle" 
   IF FEXISTS (F$) THEN
     OPEN F$ FOR INPUT AS 1
     LINE INPUT #1,Top$
     LINE INPUT #1,J1$
     IF NOT EOF(1) THEN LINE INPUT #1,Bot$
     CLOSE 1
   END IF
    
 '** Figure amount of padding to center the big text
  L=LEN(J1$)
  IF L>8 THEN J1$=LEFT$(J1$,8) 
  JLong=LEN(J1$) 
  IF L<8 THEN JL=64-(4*JLong)

 '** Print the top line and stretch it vertically 
  COLOR 4,0,0: PRINT PTAB(24,15);Top$
  COLOR 6,0,0: PRINT PTAB(22,13);Top$
  COLOR 3,0,0: PRINT PTAB(23,14);Top$
  FOR I=6 TO 24 STEP 2
    GET(0,I)-(320,I+40),GP%
    PUT(0,I+1),GP%,PSET
  NEXT
  FOR I=6 TO 42 STEP 2
    GET(0,I)-(320,I+40),GP%
    PUT(0,I+1),GP%,PSET
  NEXT
  FOR I=42 TO 6 STEP -2
    GET(0,I)-(320,I+40),GP%
    PUT(0,I-1),GP%,PSET
  NEXT

  COLOR 2: LOCATE 5,1
  ? , "         Press ESC or"
  ? , "     Click top left button"
  ? , "           to quit"

  '** STOP button
  FOR I=1 TO 6
   CIRCLE(6,6),I,(I AND 1)+2,,,1
  NEXT
 
 '** Make and GET the array that'll blank out previous pattern
  COLOR 2,1: PATTERN,P2%
  GOSUB Triangle
  COLOR 6,0,0: PRINT PTAB(249,364);"JeC'90";
  COLOR 4,0,0: PRINT PTAB(251,366);"JeC'90";
  COLOR 1,0,0: PRINT PTAB(250,365);"JeC'90";
  GET(0,200)-(300,400),GP%

 'Print the word to be scanned
  LOCATE 26,1: COLOR 1,0: PRINT J1$

 'OPTIONAL - separate letters with background colored lines
  FOR I=0 TO 64 STEP 8
 '   LINE(I,25*8)-(I,28*8),0
  NEXT

 'Scan the word and store:
 '  1. the X and Y co-ordinates
 '  2. Exploded X and Y co-ordinates
 '  3. Size of steps between the normal and exploded positions.
    
 ScatrX=15: ScatrY=40
 NS=40:     zS=1/NS
 II=-1
 FOR X=0 TO 64
   FOR Y=0 TO 7
     IF POINT(X,Y+200)>0 THEN
       INCR II

       '** 1. the X and Y co-ordinates
       X%(II)=X*4+20+JL:   Y%(II)=Y*8+240

       '** 2. Exploded X and Y co-ordinates 
       XX%(II)=X%(II)+RND*ScatrX-RND*Scatr
       YY%(II)=Y%(II)+RND*ScatrY-RND*ScatrY

       '** 3. Size of steps between the normal and exploded positions.
       zXS(II)=(X%(II)-XX%(II))*zS         
       zYS(II)=(Y%(II)-YY%(II))*zS

     END IF
   NEXT
 NEXT

 COLOR 2:  LOCATE 20,10
  ?"CLICK TO START"
  XY=MOUSE(0)
  WHILE MOUSE(0)=0:WEND
  LOCATE 1,1

 WHILE Milli=Vanilli
   Start=1: Finish=NS: Way=1
   GOSUB Sploder
   GOSUB Around
   Start=NS: Finish=1: Way=-1
   GOSUB Sploder
 WEND

' *************************************
' ** The part that does all the work **
' *************************************
Sploder:
  FOR Far=Start TO Finish STEP Way
    PUT(0,200),GP%,PSET
    FOR I=0 TO II
      PUT(XX%(I)+(zXS(I)*Far),YY%(I)+(zYS(I)*Far)),Box%,PSET
    NEXT
    SCROLL (0,30)-(300,400),0,-170
    XY=MOUSE(0): K$=INKEY$: GOSUB Chek4Input
  NEXT
 RETURN
' ********************************************
' ** End of the part that does all the work **
' ********************************************

Chek4Input:
  IF K$>"" THEN
    IF ASC(K$)=27 THEN SeeYa
  END IF
  IF XY<>0 AND MOUSE(1)<11 AND MOUSE(2)<11 THEN SeeYa
 RETURN

Around:
  AW=-AW
  FOR I=0 TO 2880 STEP 40
    zX=SIN(zPS*I)
    zY=COS(zPS*I)
    SCROLL(0,30)-(340,220),zX*W,zY*W
  NEXT
 RETURN
 
Triangle:
  PATTERN,P1%
  COLOR 4,0
  AREA (174,238)
  AREA (280,344)
  AREA (68,344)
  AREAFILL
  
  PATTERN,P2%
  COLOR 5,0
  AREA (160,230)
  AREA (266,336)
  AREA (54,336)
  AREAFILL
  
 RETURN

SeeYa:
  CLS
  COLOR 2
  ?:?:? Bot$
  LOCATE 20,10:?"Click to end"
  XY=MOUSE(0)
  WHILE MOUSE(0)=0:WEND
  WINDOW CLOSE 1
  SCREEN CLOSE 1
  SYSTEM
   

