' MEDIEVAL CHECKERS ' BY WAS8BIT ' #1 (1)CASTLE, CANNOT MOVE, ' #2 (1)FIREBALL - KILLS EVERYONE NEARBY, CANNOT MOVE ' #3 (1)SWORD=3 ' #4 (2)AXE=2 ' #5 (2)SPEAR=1 ' #6 (1)BOWARROW KILLS ANY IF IT ATTACKS, DIES IF ATTACKED BY ANY ' #7 (1)SPY=0 (KILLS SWORD) ' TOTAL 9 PIECES RANDOMIZE TIMER TOUCHSCREEN REM PLAYER 10,20,30,40 DISPLAY (1,1,1,1,1) DIM GLOBAL BOARD(9,9) BG 1 FOR Y=0 TO 30 STEP 2 FOR X=0 TO 30 STEP 2 CELL X,Y,6 CELL X+1,Y,7 CELL X,Y+1,22 CELL X+1,Y+1,23 NEXT X NEXT Y BG COPY 0,0,20,16 TO 0,0 FOR Y=0 TO 7 FOR X=0 TO 9 C=CELL.C(X,Y) IF C=32 THEN BOARD(X,Y)=-1 NEXT X NEXT Y FOR I=1 TO 5 SPRITE I,0,0,0 SPRITE.A I,(6,1,1,1,1) NEXT I XSHOW=0 YSHOW=0 GOSUB NEWBOARD GOSUB PRINTBOARD ITOUCH=0 NEXTROUND: ATTR(6) CELL 4,0,76 CELL 5,0,78 CALL ENEMYMOVE(20) CALL ENEMYMOVE(30) CALL ENEMYMOVE(40) ATTR(6) CELL 4,0,96 CELL 5,0,98 DO IF TAP THEN TX=TOUCH.X\16 TY=TOUCH.Y\16 C=BOARD(TX,TY) IF C>=0 THEN PLAY 1,60,1 ELSE PLAY 1,45,1 IF ITOUCH=1 THEN IF TX=OTX AND TY=OTY THEN GOSUB TOUCHRESET ELSE IF TX=OTX+1 AND TY=OTY THEN GOSUB MOVEPLAYER ELSE IF TX=OTX-1 AND TY=OTY THEN GOSUB MOVEPLAYER ELSE IF TY=OTY+1 AND TX=OTX THEN GOSUB MOVEPLAYER ELSE IF TY=OTY-1 AND TX=OTX THEN GOSUB MOVEPLAYER END IF GOTO NEXTROUND END IF ELSE IF ITOUCH=0 AND C>0 AND C<=19 THEN GOSUB TOUCHSET END IF END IF WAIT VBL LOOP SUB ENEMYMOVE(P) ICOUNT=0 ISUM=0 FOR Y=0 TO 7 FOR X=0 TO 9 C=BOARD(X,Y) IF C>=P AND C<=(P+9) THEN ICOUNT=ICOUNT+1 CSUM=C-P ISUM=ISUM+CSUM END IF NEXT X NEXT Y IMOVE=0 ITRIES=1000 WHILE ICOUNT>1 AND IMOVE=0 AND ISUM>3 AND ITRIES>0 ITRIES=ITRIES-1 Y=INT(RND*8) X=INT(RND*10) C=BOARD(X,Y) IF C>=(P+3) AND C<=(P+9) THEN MX=0 MY=0 IF INT(RND*2)=0 THEN MX=INT(RND*3)-1 ELSE MY=INT(RND*3)-1 END IF IF X+MX>=0 AND X+MX<=9 AND Y+MY>=0 AND Y+MY<=7 THEN MC=BOARD(X+MX,Y+MY) IF MC=0 THEN TX=X TY=Y PLAY 1,60,1 GOSUB TOUCHSET WAIT 60 BOARD(X,Y)=0 BOARD(X+MX,Y+MY)=C XSHOW=0 YSHOW=0 GOSUB PRINTBOARD PLAY 3,65,10 WAIT 15 IMOVE=1 GOSUB TOUCHRESET ELSE IF NOT (MC>=P AND MC<=P+9) AND MC>0 THEN TRACE P TRACE MC OTY=Y OTX=X TX=X TY=Y GOSUB TOUCHSET TX=X+MX TY=Y+MY WAIT 60 OB=BOARD(OTX,OTY) OBB=OB\10 OC=OB-(OBB*10) B=BOARD(TX,TY) BB=B\10 C=B-(BB*10) IF BB=1 THEN GOSUB TOUCHRESET XSHOW=OTX YSHOW=OTY GOSUB PRINTBOARD PLAY 3,50,10 WAIT 60 END IF PLAY 3,70,10 WHOWIN=99 CALL PCHECK(OC,C,WHOWIN) IF WHOWIN=99 THEN TRACE BB CALL REMOVEPLAYER(BB*10) GOSUB PRINTBOARD END IF IF WHOWIN<99 THEN BOARD(OTX,OTY)=0 IF WHOWIN=1 THEN BOARD(TX,TY)=OB IF WHOWIN=0 THEN BOARD(TX,TY)=0 XSHOW=0 YSHOW=0 GOSUB PRINTBOARD IMOVE=1 GOSUB TOUCHRESET END IF END IF END IF WEND END SUB SUB REMOVEPLAYER(P) FOR Y=0 TO 7 FOR X=0 TO 9 C=BOARD(X,Y) IF C>=P AND C<=(P+9) THEN BOARD(X,Y)=0 NEXT X NEXT Y END SUB SUB PCHECK(PATT,PDEF,RES) REM RES=-1,0,1 = LOSER=PATT,BOTH,PDEF REM RES=99 IF PDEF=1 THEN REM REMOVE THAT PLAYER ELSE IF PATT=PDEF OR PDEF=2 THEN RES=0 IF PATT=6 AND PDEF>2 THEN RES=1 IF (PATT>=3 AND PATT<=5) AND PDEF>PATT THEN RES=1 IF PATT=7 AND PDEF=3 THEN RES=1 IF PATT=6 AND PDEF=6 THEN RES=0 IF RES=99 THEN RES=-1 END IF END SUB MOVEPLAYER: OB=BOARD(OTX,OTY) OBB=OB\10 OC=OB-(OBB*10) B=BOARD(TX,TY) BB=B\10 C=B-(BB*10) IF OC>2 AND (B=0 OR B>19) THEN PLAY 3,70,10 IF BB>1 THEN GOSUB TOUCHRESET XSHOW=TX YSHOW=TY GOSUB PRINTBOARD WAIT 30 PLAY 3,70,10 WHOWIN=99 CALL PCHECK(OC,C,WHOWIN) IF WHOWIN=99 THEN TRACE BB CALL REMOVEPLAYER(BB*10) GOSUB PRINTBOARD END IF IF WHOWIN<99 THEN BOARD(OTX,OTY)=0 IF WHOWIN=1 THEN BOARD(TX,TY)=OB IF WHOWIN=0 THEN BOARD(TX,TY)=0 XSHOW=0 YSHOW=0 GOSUB PRINTBOARD ELSE BOARD(TX,TY)=BOARD(OTX,OTY) BOARD(OTX,OTY)=0 GOSUB PRINTBOARD END IF GOSUB TOUCHRESET ELSE GOSUB TOUCHRESET END IF RETURN TOUCHSET: ITOUCH=1 TXX=TX*16 TYY=TY*16 OTX=TX OTY=TY SPRITE 1,TXX,TYY-16,72 SPRITE 2,TXX+16,TYY,72 SPRITE 3,TXX,TYY+16,72 SPRITE 4,TXX-16,TYY,72 SPRITE 5,TXX,TYY,74 WAIT 15 RETURN TOUCHRESET: ITOUCH=0 SPRITE 1,,,0 SPRITE 2,,,0 SPRITE 3,,,0 SPRITE 4,,,0 SPRITE 5,,,0 WAIT 15 RETURN NEWBOARD: BG 0 CLS 0 ICELL=2 IPLAYER=10 ATTR(2) IY=0 IX=1 GOSUB PUTBOARD IPLAYER=20 ATTR(3) IY=0 IX=6 GOSUB PUTBOARD ICELL=34 IPLAYER=30 ATTR(4) IY=5 IX=1 GOSUB PUTBOARD IPLAYER=40 ATTR(5) IY=5 IX=6 GOSUB PUTBOARD RETURN PUTBOARD: FOR I=1 TO 7 IF I=5 OR I=4 THEN IGO=2 ELSE IGO=1 FOR II=1 TO IGO IC=99 WHILE IC<>0 X=INT(RND*3)+IX Y=INT(RND*3)+IY IC=BOARD(X,Y) WEND BOARD(X,Y)=I+IPLAYER CELL X,Y,ICELL+((I-1)*2) NEXT II NEXT I RETURN PRINTBOARD: FOR Y=0 TO 7 FOR X=0 TO 9 CB=BOARD(X,Y) CBB=CB\10 IC=CB-(CBB*10) IF IC>=0 AND IC<19 THEN ATTR(1+CBB) IF (XSHOW=X AND YSHOW=Y) OR CBB=1 THEN IF CBB<=2 THEN ICELL=2 ELSE ICELL=34 CELL X,Y,ICELL+((IC-1)*2) ELSE IF CBB<=2 THEN ICELL=68 ELSE ICELL=70 CELL X,Y,ICELL END IF ELSE IF IC=0 THEN CELL X,Y,0 END IF NEXT X NEXT Y RETURN #1:MAIN PALETTES 071B0B03000C080400302010003A2510 0034241400372612003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 00000000000000000000000000000000 00071F3F3F7F7F7F07182040408D8F8F 00E0F8FCFCFEFEFEE018040202B1F1F1 00071F3F3F7F7F7F0718204040808183 00E0F8FCFCFEFEFEE0180402020181C1 00071F3F3F7F7F7F071A204A40808088 00E0F8FCFCFEFEFEE018040212214181 00071F3F3F7F7F7F0718204840888080 00E0F8FCFCFEFEFEE0180402127171F1 00071F3F3F7F7F7F0718204840808080 00E0F8FCFCFEFEFEE018040202012131 00071F3F3F7F7F7F0718204244888888 00E0F8FCFCFEFEFEE018042262612121 00071F3F3F7F7F7F0718204040809E8C 00E0F8FCFCFEFEFEE018040202017931 00000000000000000000000000000000 00000000000000000000000000000000 7F7F7F3F3F1F07008F8F8E4E40201807 FEFEFEFCFCF8E000F1F17172020418E0 7F7F7F3F3F1F07008381804040201807 FEFEFEFCFCF8E000C1810102020418E0 7F7F7F3F3F1F07008783854840201807 FEFEFEFCFCF8E00001010182020418E0 7F7F7F3F3F1F07008182844840201807 FEFEFEFCFCF8E00001010102020418E0 7F7F7F3F3F1F07009F80804040201807 FEFEFEFCFCF8E000F9312102020418E0 7F7F7F3F3F1F07008888884442201807 FEFEFEFCFCF8E00021212122220418E0 7F7F7F3F3F1F07008080804040201807 FEFEFEFCFCF8E00001010102020418E0 08000010040008000020021004400800 08020001800000000800100180044000 00071F3F3F7F7F7F071F3F7F7FF2F0F0 00E0F8FCFCFEFEFEE0F8FCFEFE4F0F0F 00071F3F3F7F7F7F071F3F7F7FFFFEFC 00E0F8FCFCFEFEFEE0F8FCFEFEFF7F3F 00071F3F3F7F7F7F071D3F757FFFFFF7 00E0F8FCFCFEFEFEE0F8FCFEEEDFBF7F 00071F3F3F7F7F7F071F3F777FF7FFFF 00E0F8FCFCFEFEFEE0F8FCFEEE8F8F0F 00071F3F3F7F7F7F071F3F777FFFFFFF 00E0F8FCFCFEFEFEE0F8FCFEFEFFDFCF 00071F3F3F7F7F7F071F3F7D7BF7F7F7 00E0F8FCFCFEFEFEE0F8FCDE9E9FDFDF 00071F3F3F7F7F7F071F3F7F7FFFE1F3 00E0F8FCFCFEFEFEE0F8FCFEFEFF87CF 00400400000008801040042000020800 00040000400008208004100240000800 7F7F7F3F3F1F0700F0F1F17F7F3F1F07 FEFEFEFCFCF8E0000F8F8FFEFEFCF8E0 7F7F7F3F3F1F0700FCFEFF7F7F3F1F07 FEFEFEFCFCF8E0003F7FFFFEFEFCF8E0 7F7F7F3F3F1F0700F8FCFA777F3F1F07 FEFEFEFCFCF8E000FFFFFF7EFEFCF8E0 7F7F7F3F3F1F0700FEFDFB777F3F1F07 FEFEFEFCFCF8E000FFFFFFFEFEFCF8E0 7F7F7F3F3F1F0700E0FFFF7F7F3F1F07 FEFEFEFCFCF8E00007CFDFFEFEFCF8E0 7F7F7F3F3F1F0700F7F7F77B7D3F1F07 FEFEFEFCFCF8E000DFDFDFDEDEFCF8E0 7F7F7F3F3F1F0700FFFFFF7F7F3F1F07 FEFEFEFCFCF8E000FFFFFFFEFEFCF8E0 007F7F6F7F7F7F7FFF80809080808080 00FEFEFEFEBEFEFEFF01010101410101 007F7F7F7F7F7F7FFFFFFFFFFFFFFFFF 00FEFE7EFEFEFEFAFFFFFFFFFFFFFFFF 00071F3F3F7F7F7F0718204040808080 00E0F8FCFCFEFEFEE018040202010101 00071F3F3F7F7F7F071F3F7F7FFFFFFF 00E0F8FCFCFEFEFEE0F8FCFEFEFFFFFF 00000108102101010000060810204040 00000020100800000000C02010080404 00000109102000000000060810204040 00000020100800000000C02010080404 7FE0C080808888880000000000000000 FF000000002324240000000000000000 FF000000008948480000000000000000 FE07030101F141410000000000000000 7F7F7F7B7F7F7F0080808084808080FF FEFEFEFEF6FEFE0001010101090101FF 6F7F7F7E7F7F7F00FFFFFFFFFFFFFFFF FEFEFEFEFEFEFE00FFFFFFFFFFFFFFFF 7F7F7F3F3F1F07008080804040201807 FEFEFEFCFCF8E00001010102020418E0 7F7F7F3F3F1F0700FFFFFF7F7F3F1F07 FEFEFEFCFCF8E000FFFFFFFEFEFCF8E0 4F010121100801000040402010080600 E400000810200000000404081020C000 60000020100901000040402010080600 0C00000810200000000404081020C000 8989858280C0E07F0000000000000000 27244484000000FF0000000000000000 C8484848000000FF0000000000000000 41414141010307FE0000000000000000 7FE0C080808F88880000000000000000 FF000000001090900000000000000000 FF000000007189880000000000000000 FE070301011111A10000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 8F88888880C0E07F0000000000000000 1010101C000000FF0000000000000000 F8888888000000FF0000000000000000 A1414141010307FE0000000000000000 #3:MAIN BG 00010A08200040014201400120002000 42014001420120002000420140014201 40014201400142014001200020004001 42014001420140014201400142012000 20002000400142014001420140014201 20002000200020004201400142014001 42014001200020002000420140014201 40014201400142014001200020004001 42014001420140014201400142012000 20004201400142012000200040014201 40012000