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
Wrap
Text File
|
1990-05-16
|
2KB
|
93 lines
ESCAPE OFF:CLEAR 512:ls%=1000:DIM c%(160)
RESERVE sad%,20:FOR j%=0 TO 19:READ a%:POKE sad%+j%,a%:NEXT
DATA 11,0,12,10,0,140,1,0,8,16,7,62,13,0,130,24,7,63,130,0
loop:
PROCpreamble
PROCinit
n%=0:sc%=0
REPEAT
REPEAT
MOUSE x%,y%,b%,k%
p%=x%/40:q%=y%/40
z%=0:IF (p%=7 OR p%=8) AND (q%=4 OR q%=5) THEN z%=1
UNTIL k%=4 OR (b%=1 AND z%=0)
IF k%=4 THEN END
IF c%(p%+16*q%)=1 THEN
PROCflip
REPEAT
MOUSE x%,y%,b%,k%
UNTIL b%=0
ENDIF
UNTIL n%=nc%
PROCdone
GOTO loop
END
DEF PROCpreamble
TXTRECT 0,0,SCREENWIDTH,SCREENHEIGHT:TXTSIZE 13
GRAFRECT 0,0,SCREENWIDTH,SCREENHEIGHT:CLG 0
PRINT "TIDDLYWINKS.";
PRINT "Click on the counters to flip them.";
PRINT "Get them all in the central ring."
PRINT TAB(30,1);"(Press Control to Quit.)"
FILLSTYLE 2,2
ENDPROC
DEF PROCinit
nc%=10:r%=19:n%=0:sc%=0
FOR p%=0 TO 15:FOR q%=0 TO 9
c%(p%+16*q%)=0
NEXT:NEXT
FOR n%=1 TO nc%
REPEAT:p%=RND(14):UNTIL (p%<6 OR p%>9)
REPEAT:q%=RND(8):UNTIL (q%<3 OR q%>6) AND c%(p%+16*q%)=0
c%(p%+16*q%)=1
x%=40*p%:y%=40*q%
CIRCLE x%+r%,y%+r%,r%
NEXT
FILLSTYLE 2,4:FILLPERIM 1
CIRCLE 320,200,3*r%
ENDPROC
DEF PROCflip
xc%=40*p%+r%:yc%=40*q%+r%
dp%=(xc%-x%)/5:dq%=(yc%-y%)/5
np%=p%+2*dp%:nq%=q%+2*dq%
IF np%<1 THEN np%=1
IF np%>14 THEN np%=14
IF nq%<1 THEN nq%=1
IF nq%>8 THEN nq%=8
IF np%=6 AND (nq%>2 AND nq%<6) THEN np%=5
IF np%=9 AND (nq%>3 AND nq%<7) THEN np%=10
IF nq%=3 AND (np%>6 AND np%<10) THEN nq%=2
IF nq%=6 AND (np%>5 AND np%<9) THEN nq%=7
IF c%(np%+16*nq%)=1 AND np%<6 OR np%>9 THEN
REPEAT
np%=RND(14)
UNTIL c%(np%+16*nq%)=0 AND (np%<6 OR np%>9)
ENDIF
nx%=40*np%:ny%=40*nq%
IF (np%=7 OR np%=8) AND (nq%=4 OR nq%=5) THEN
nx%=RND(50)+280:ny%=RND(50)+160
ENDIF
HIDEMOUSE
DOSOUND sad%
FILLSTYLE 0,0:FILLPERIM 0:CIRCLE xc%,yc%,r%+1
FILLSTYLE 2,2:FILLPERIM 1:CIRCLE nx%+r%,ny%+r%,r%
SHOWMOUSE
c%(p%+16*q%)=0:c%(np%+16*nq%)=1
IF (np%=7 OR np%=8) AND (nq%=4 OR nq%=5) THEN n%=n%+1
sc%=sc%+1
ENDPROC
DEF PROCdone
IF sc%<ls% THEN ls%=sc%
GRAB 0,0,639,32:PUT 0,0,0
PRINT TAB(5,0);"Well done."
PRINT TAB(20,0);"You took ";sc%;" flips."
PRINT TAB(40,0);"Your lowest score is ";ls%
PRINT TAB(20,1);"Press any key to play again."
g=GET
ENDPROC