DIM GLOBAL PIECES(63,5) RANDOMIZE TIMER START: FOR I=0 TO 63 PIECES(I,0)=0 NEXT I A=INT(RND(4)) IF A=0 THEN CALL NEWTILE(63,64,16,0,61,-1) CALL NEWTILE(62,80,16,0,61,-1) CALL NEWTILE(61,72,14,0,-1,-1) CALL NEWTILE(60,56,30,0,57,-1) CALL NEWTILE(59,72,30,0,57,56) CALL NEWTILE(58,88,30,0,56,-1) CALL NEWTILE(57,64,28,0,-1,-1) CALL NEWTILE(56,80,28,0,-1,-1) CALL NEWTILE(55,72,44,0,53,-1) CALL NEWTILE(54,72,58,0,53,-1) CALL NEWTILE(53,72,48,0,-1,-1) CALL NEWTILE(52,64,80,0,50,-1) CALL NEWTILE(51,80,80,0,50,-1) CALL NEWTILE(50,72,78,0,-1,-1) DO B=0 FOR I=50 TO 63 IF PIECES(I,3)=0 THEN B=1 NEXT I IF B=0 THEN EXIT REPEAT P1=INT(RND(13))+50 UNTIL PIECES(P1,3)=0 REPEAT P2=INT(RND(13))+50 UNTIL PIECES(P2,3)=0 AND NOT P1=P2 C=INT(RND(5))+1 PIECES(P1,3)=C PIECES(P2,3)=C LOOP END IF IF A=1 THEN CALL NEWSTACK(63,72,8) CALL NEWSTACK(57,72,100) CALL NEWSTACK(51,40,56) CALL NEWSTACK(45,104,56) DO B=0 FOR I=40 TO 63 IF PIECES(I,3)=0 THEN B=1 NEXT I IF B=0 THEN EXIT REPEAT P1=INT(RND(23))+40 UNTIL PIECES(P1,3)=0 REPEAT P2=INT(RND(23))+40 UNTIL PIECES(P2,3)=0 AND NOT P1=P2 C=INT(RND(5))+1 PIECES(P1,3)=C PIECES(P2,3)=C LOOP END IF IF A=2 THEN CALL NEWSTACK(63,72,8) CALL NEWSTACK(57,72,24) CALL NEWSTACK(51,72,40) CALL NEWSTACK(45,72,56) CALL NEWSTACK(39,72,72) CALL NEWSTACK(33,72,88) CALL NEWSTACK(27,72,104) DO B=0 FOR I=22 TO 63 IF PIECES(I,3)=0 THEN B=1 NEXT I IF B=0 THEN EXIT REPEAT P1=INT(RND(41))+22 UNTIL PIECES(P1,3)=0 REPEAT P2=INT(RND(41))+22 UNTIL PIECES(P2,3)=0 AND NOT P1=P2 C=INT(RND(5))+1 PIECES(P1,3)=C PIECES(P2,3)=C LOOP END IF IF A=3 THEN CALL NEWSTACK(63,72,8) CALL NEWSTACK(57,72,24) CALL NEWSTACK(51,72,40) CALL NEWSTACK(45,72,56) CALL NEWSTACK(39,72,72) CALL NEWSTACK(33,72,88) CALL NEWSTACK(27,72,104) CALL NEWTILE(21,40,8,0,-1,-1) CALL NEWTILE(20,40,24,0,-1,-1) CALL NEWTILE(19,40,40,0,-1,-1) CALL NEWTILE(18,40,56,0,-1,-1) CALL NEWTILE(17,40,72,0,-1,-1) CALL NEWTILE(16,40,88,0,-1,-1) CALL NEWTILE(15,40,104,0,-1,-1) CALL NEWTILE(14,104,8,0,-1,-1) CALL NEWTILE(13,104,24,0,-1,-1) CALL NEWTILE(12,104,40,0,-1,-1) CALL NEWTILE(11,104,56,0,-1,-1) CALL NEWTILE(10,104,72,0,-1,-1) CALL NEWTILE(9,104,88,0,-1,-1) CALL NEWTILE(8,104,104,0,-1,-1) DO B=0 FOR I=8 TO 63 IF PIECES(I,3)=0 THEN B=1 NEXT I IF B=0 THEN EXIT REPEAT P1=INT(RND(55))+8 UNTIL PIECES(P1,3)=0 REPEAT P2=INT(RND(55))+8 UNTIL PIECES(P2,3)=0 AND NOT P1=P2 C=INT(RND(5))+1 PIECES(P1,3)=C PIECES(P2,3)=C LOOP END IF IF A=4 THEN CALL NEWSTACK(63,16,16) CALL NEWSTACK(57,128,16) CALL NEWSTACK(51,16,96) CALL NEWSTACK(45,128,96) CALL NEWSTACK(39,72,56) DO B=0 FOR I=34 TO 63 IF PIECES(I,3)=0 THEN B=1 NEXT I IF B=0 THEN EXIT REPEAT P1=INT(RND(29))+34 UNTIL PIECES(P1,3)=0 REPEAT P2=INT(RND(29))+34 UNTIL PIECES(P2,3)=0 AND NOT P1=P2 C=INT(RND(5))+1 PIECES(P1,3)=C PIECES(P2,3)=C LOOP END IF TOUCHSCREEN GLOBAL SELECTED, F SELECTED=-1 DO BG COPY 0,0,20,16 TO 0,0 IF TAP AND TOUCH.X<16 AND TOUCH.Y>112 THEN GOTO START CALL PARSETILES IF F=0 THEN TEXT 0,0,"YOU WIN!" TEXT 0,1,"TAP FOR A NEW GAME" IF TAP THEN CLS GOTO START END IF END IF WAIT VBL LOOP SUB PARSETILES IF TAP THEN T=1 ELSE T=0 F=0 HCX=TOUCH.X HCY=TOUCH.Y FOR I=0 TO 63 IF PIECES(I,0)=1 THEN F=1 SPRITE I SIZE 1 IF (PIECES(I,4)=-1 OR PIECES(ABS(PIECES(I,4)),0)=0) AND (PIECES(I,5)=-1 OR PIECES(ABS(PIECES(I,5)),0)=0) THEN IF SELECTED=I THEN SPRITE I PAL 1 ELSE SPRITE I PAL 0 ELSE SPRITE I PAL 2 END IF SPRITE I,PIECES(I,1),PIECES(I,2),1+PIECES(I,3)*2 IF T=1 AND HCX>=PIECES(I,1) AND HCX<=PIECES(I,1)+16 AND HCY>=PIECES(I,2) AND HCY<=PIECES(I,2)+16 THEN IF NOT SELECTED=-1 THEN IF PIECES(SELECTED,3)=PIECES(I,3) AND NOT SELECTED=I THEN IF PIECES(I,4)=-1 OR PIECES(ABS(PIECES(I,4)),0)=0 THEN IF PIECES(I,5)=-1 OR PIECES(ABS(PIECES(I,5)),0)=0 THEN CALL DESTROYTILE(I) CALL DESTROYTILE(SELECTED) SELECTED=-1 END IF END IF ELSE SELECTED=-1 END IF ELSE IF (PIECES(I,4)=-1 OR PIECES(ABS(PIECES(I,4)),0)=0) AND (PIECES(I,5)=-1 OR PIECES(ABS(PIECES(I,5)),0)=0) THEN SELECTED=I END IF END IF T=0 END IF ELSE SPRITE OFF I END IF NEXT I END SUB SUB NEWTILE(ID,X,Y,TP,MD1,MD2) PIECES(ID,0)=1 PIECES(ID,1)=X PIECES(ID,2)=Y PIECES(ID,3)=TP PIECES(ID,4)=MD1 PIECES(ID,5)=MD2 END SUB SUB DESTROYTILE(ID) PIECES(ID,0)=0 END SUB SUB NEWSTACK(ID,X,Y) CALL NEWTILE(ID, X, Y, 0,ID-3,ID-4) CALL NEWTILE(ID-1,X+16,Y, 0,ID-3,-1) CALL NEWTILE(ID-2,X-16,Y, 0,ID-4,-1) CALL NEWTILE(ID-3,X+8, Y-2,0,ID-5,-1) CALL NEWTILE(ID-4,X-8, Y-2,0,ID-5,-1) CALL NEWTILE(ID-5,X, Y-4,0,-1, -1) END SUB #1:MAIN PALETTES 2A3F2F00000B0700002A1500003F3C00 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 3F7FFFFFFFFFFFFF3F40808080808080 FCFAFDFDFDFDFDFDFC06030303030303 3F7FFFFFFFFFFFFF3F40808788929292 FCFAFDFDFDFDFDFDFC0603E3134B4B4B 3F7FFFFFFFFFFFF33F4082828F90A6AC FCFAFDFDFDFDFD9DFC068383E313CB6B 3F7FFFFFF3EDEEEF3F40808C9EB3B1B0 FCFAFDFD9D6DEDEDFC060363F39B1B1B 3F7FFFFFFFFFFEFD3F408C969E8C8183 FCFAFDFDFDFD7DBDFC06335B7B3383C3 3F7FFFFCF8F1F3F33F4083878F9F9E9E FCFAFD3DFDFDFDFDFC06C3E3D3030303 3F7FFFFEFDFCFFFF3F4083878787878C FCFAFD3D8D6D1DDDFC06C3F3FBFBFBF3 00000000000000000000000000000000 00000000000000000000000000000000 FFFFFFFFFFBF403F8080808080C07F3F FDFDFDFDFDF902FC030303030307FEFC FFFFFFFFFFBF403F9094938887C07F3F FDFDFDFDFDF902FC0B2BCB13E307FEFC F3FFFFFFFFBF403FAD908F828EC07F3F 9DFDFDFDFDF902FC6B13E383E307FEFC F7FBFDFEFFBF403F988C868381C07F3F DDBD7DFDFDF902FC3363C3830307FEFC FDFEFFFFFFBF403F83819F8381C07F3F BD7DFDFDFDF902FCC383FBC38307FEFC F3F1F8FCFFBF403F9E9F8F8783C07F3F FFFDFD3DFDF902FC0103D3E3C307FEFC FFFFFFFFFFBF403F8888989090C07F3F FDFDFDFDFDF902FC330303030307FEFC 00000000000000000000000000000000 3F4083ACB0B880803F7FFFFFFFFFFFFF FC02C13109090505FCFEFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 808090908C83403FFFFFFFFFFFFF7F3F 0505090931C102FCFFFFFFFFFFFFFEFC #3:MAIN BG 00001410000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000200021000000000000000000 00000000000000000000000000000000 00000000000000000000000030003100 00000000000000000000000000000000 00000000000000000000000000000000 00000000