REM CANDY BY CCLX33 V1.1 DIM GLOBAL A(7,7),B(7,7) TOUCHSCREEN RANDOMIZE TIMER RESTART: DEAD=0 FOR Y=0 TO 7 FOR X=0 TO 7 R=INT(RND*6)+1 CALL DRAW(X,Y,R) NEXT X NEXT Y GOSUB CHECK3 FALL=0 CALL MARK(9,0) SCORE=0 TEXT 16,3,STR$(SCORE)+" " DO IF TOUCH THEN GOSUB GETXY IF X<8 THEN IF A1=0 THEN GOSUB HOLD ELSE IF A1>0 THEN GOSUB SWAP2 END IF ELSE IF Y=0 THEN DEAD=1 END IF ELSE A1=0 END IF IF DEAD=1 THEN GOTO RESTART LOOP GETXY: X=TOUCH.X\16 Y=TOUCH.Y\16 RETURN HOLD: X1=X Y1=Y A1=A(X,Y) RETURN SWAP2: IF X=X1 AND Y=Y1 THEN RETURN IF ABS(X-X1)+ABS(Y-Y1)>1 THEN A1=-1 RETURN END IF X2=X Y2=Y A2=A(X2,Y2) CALL DRAW(X1,Y1,A2) CALL DRAW(X2,Y2,A1) WAIT 20 FALL=0 GOSUB CHECK3 IF FALL=0 THEN WAIT 20 CALL DRAW(X1,Y1,A1) CALL DRAW(X2,Y2,A2) A1=-1 END IF REPEAT UNTIL NOT TOUCH RETURN CHECK3: ERR=1 FOR Y=0 TO 7 FOR X=0 TO 5 IF A(X,Y)=A(X+1,Y) AND A(X,Y)=A(X+2,Y) THEN B(X,Y)=1 B(X+1,Y)=1 B(X+2,Y)=1 ERR=0 END IF NEXT X NEXT Y FOR X=0 TO 7 FOR Y=0 TO 5 IF A(X,Y)=A(X,Y+1) AND A(X,Y)=A(X,Y+2) THEN B(X,Y)=1 B(X,Y+1)=1 B(X,Y+2)=1 ERR=0 END IF NEXT Y NEXT X IF ERR=1 THEN RETURN REMOVE3: FOR Y=0 TO 7 FOR X=0 TO 7 IF B(X,Y)=1 THEN SCORE=SCORE+1 B(X,Y)=0 CALL DRAW(X,Y,0) END IF NEXT X NEXT Y WAIT 20 GOSUB FALL GOSUB FILL3 TEXT 16,3,STR$(SCORE)+" " GOTO CHECK3 FALL: FALL=1 FOR X=0 TO 7 FOR Y=6 TO 0 STEP -1 OBJ=A(X,Y) BELOW=A(X,Y+1) IF OBJ>0 AND BELOW=0 THEN GOSUB FALL1 NEXT Y NEXT X RETURN FALL1: OBJPOS=Y FOR IY=Y+1 TO 7 BELOW=A(X,IY) IF BELOW=0 THEN CALL DRAW(X,OBJPOS,0) CALL DRAW(X,IY,OBJ) OBJPOS=IY WAIT 1 ELSE IY=7 END IF NEXT IY RETURN FILL3: FOR X=0 TO 7 FOR Y=0 TO 7 IF A(X,Y)=0 THEN R=INT(RND*6)+1 CALL DRAW(X,Y,R) END IF NEXT Y NEXT X RETURN SUB DRAW(X,Y,R) I=Y*8+X A(X,Y)=R IF R=0 THEN SPRITE OFF I ELSE SPRITE I,X*16,Y*16,R*2 SPRITE.A I,(R-1,,,,1) END IF END SUB SUB MARK(X,Y) ATTR(6,) CELL X*2,Y*2,14 CELL X*2+1,Y*2,15 CELL X*2,Y*2+1,30 CELL X*2+1,Y*2+1,31 END SUB #1:MAIN PALETTES 053F0C0800393424003A3120003B3311 002B1701003E3C28003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 00000000000000000000000000000000 0000000203190F5C071F3F3F7FFFFFFF 002060E0C8889AF6E0D89C7CF6F6FDF9 0000020408000404070F1D3B377F7B7B 0000000000222202E0F0F8FCFCFEFEFE 0000000030200000003C7EFECFDFFFFF 0000000000000000000000000080C0E0 00011101022618491C3F2F7F7FFFFFBE 00002004068E792160F8DCFCFEFEFFFF 0000020000000010071F3D7F7FFFFFEF 0000000000001030E0F8FCFEFEFFEFCF 0000000004040800030F1F3F3B7B77FF 0000000000040402C0F0F8FCFCFEFEFF FFFFFFFFFFFFFFFFFFFFF8F7EFDFDFDF FFFFFFFFFFFFFFFFFFFF1FEFF7FBFBFB 00000000000000000000000000000000 00000000000000000000000000000000 74337F195D77360FFFFFFF7F7F7F3F0F 60A43C38EACE7CE0FFFFFFFEFEFEFCE0 0400000120180E037B7F7F3F3F1F0F03 022246840C1870C0FEDEBEFCFCF8F0C0 00002010080601007F3F3F1F0F070100 0004300202068C78F0FCCEFEFEFEFC78 0808136008000107FFFFFF7F773F1F07 2941830E22808870F7FFFFFEDEFCF870 0C603C8760301C07F3FFFFFF7F3F1F07 000D39F2060C38E0FFFFFFFEFEFCF8E0 40404020301F0700FFFFFF7F7F3F1F07 020202040CF8E000FFFFFFFEFEFCF8E0 FFFFFFFFFFFFFFFFDFDFFEFDF8FDFEFF FFFFFFFFFFFFFFFFFBFBF7EF1FFFFFFF