home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 10: Diskmags / nf_archive_10.iso / MAGS / ST_USER / 1990 / USERJL90.MSA / LISTINGS.ARC / TIDDLEWK.BSC < prev   
Text File  |  1990-05-16  |  2KB  |  93 lines

  1. ESCAPE OFF:CLEAR 512:ls%=1000:DIM c%(160)
  2. RESERVE sad%,20:FOR j%=0 TO 19:READ a%:POKE sad%+j%,a%:NEXT
  3. DATA 11,0,12,10,0,140,1,0,8,16,7,62,13,0,130,24,7,63,130,0
  4. loop:
  5. PROCpreamble
  6. PROCinit
  7. n%=0:sc%=0
  8. REPEAT 
  9.     REPEAT
  10.         MOUSE x%,y%,b%,k%
  11.         p%=x%/40:q%=y%/40
  12.         z%=0:IF (p%=7 OR p%=8) AND (q%=4 OR q%=5) THEN z%=1
  13.     UNTIL k%=4 OR (b%=1 AND z%=0)
  14.         IF k%=4 THEN END
  15.         IF c%(p%+16*q%)=1 THEN 
  16.             PROCflip
  17.             REPEAT
  18.                 MOUSE x%,y%,b%,k%
  19.             UNTIL b%=0
  20.         ENDIF
  21. UNTIL n%=nc%
  22. PROCdone
  23. GOTO loop
  24. END
  25.  
  26. DEF PROCpreamble
  27.     TXTRECT 0,0,SCREENWIDTH,SCREENHEIGHT:TXTSIZE 13
  28.     GRAFRECT 0,0,SCREENWIDTH,SCREENHEIGHT:CLG 0
  29.     PRINT "TIDDLYWINKS.";
  30.     PRINT "Click on the counters to flip them.";
  31.     PRINT "Get them all in the central ring."
  32.     PRINT TAB(30,1);"(Press Control to Quit.)"
  33.     FILLSTYLE 2,2
  34. ENDPROC
  35.  
  36. DEF PROCinit
  37.     nc%=10:r%=19:n%=0:sc%=0
  38.     FOR p%=0 TO 15:FOR q%=0 TO 9
  39.         c%(p%+16*q%)=0
  40.     NEXT:NEXT
  41.     FOR n%=1 TO nc%
  42.         REPEAT:p%=RND(14):UNTIL (p%<6 OR p%>9)
  43.         REPEAT:q%=RND(8):UNTIL (q%<3 OR q%>6) AND c%(p%+16*q%)=0
  44.         c%(p%+16*q%)=1
  45.         x%=40*p%:y%=40*q%
  46.         CIRCLE x%+r%,y%+r%,r%    
  47.     NEXT
  48.     FILLSTYLE 2,4:FILLPERIM 1
  49.     CIRCLE 320,200,3*r%
  50. ENDPROC
  51.  
  52. DEF PROCflip
  53.     xc%=40*p%+r%:yc%=40*q%+r%
  54.     dp%=(xc%-x%)/5:dq%=(yc%-y%)/5
  55.     np%=p%+2*dp%:nq%=q%+2*dq%
  56.     IF np%<1 THEN np%=1
  57.     IF np%>14 THEN np%=14
  58.     IF nq%<1 THEN nq%=1
  59.     IF nq%>8 THEN nq%=8
  60.     IF np%=6 AND (nq%>2 AND nq%<6) THEN np%=5
  61.     IF np%=9 AND (nq%>3 AND nq%<7) THEN np%=10
  62.     IF nq%=3 AND (np%>6 AND np%<10) THEN nq%=2
  63.     IF nq%=6 AND (np%>5 AND np%<9) THEN nq%=7
  64.     IF c%(np%+16*nq%)=1 AND np%<6 OR np%>9 THEN 
  65.         REPEAT
  66.             np%=RND(14)
  67.         UNTIL c%(np%+16*nq%)=0 AND (np%<6 OR np%>9)
  68.     ENDIF
  69.     nx%=40*np%:ny%=40*nq%
  70.     IF (np%=7 OR np%=8) AND (nq%=4 OR nq%=5) THEN
  71.         nx%=RND(50)+280:ny%=RND(50)+160
  72.     ENDIF        
  73.     HIDEMOUSE
  74.     DOSOUND sad%
  75.     FILLSTYLE 0,0:FILLPERIM 0:CIRCLE xc%,yc%,r%+1
  76.     FILLSTYLE 2,2:FILLPERIM 1:CIRCLE nx%+r%,ny%+r%,r%
  77.     SHOWMOUSE
  78.     c%(p%+16*q%)=0:c%(np%+16*nq%)=1
  79.     IF (np%=7 OR np%=8) AND (nq%=4 OR nq%=5) THEN n%=n%+1
  80.     sc%=sc%+1
  81. ENDPROC
  82.  
  83. DEF PROCdone
  84.     IF sc%<ls% THEN ls%=sc%
  85.     GRAB 0,0,639,32:PUT 0,0,0
  86.     PRINT TAB(5,0);"Well done."
  87.     PRINT TAB(20,0);"You took ";sc%;" flips."
  88.     PRINT TAB(40,0);"Your lowest score is ";ls%
  89.     PRINT TAB(20,1);"Press any key to play again."
  90.     g=GET
  91. ENDPROC
  92.                               
  93.