' The yellow player starts, you know you're a king when your 'piece becomes happy. Enjoy! ' ' ' This program was made by Steve Nunnally. Copyright (C) 1997 'All of this code was written by me, Steve Nunnally. DO NOT copy 'this code unless you have my permission! And you MAY NOT change 'the name in this paragraph to your name. ' DEFINT A-Z DECLARE SUB Mouse (cx, dx, bx) DECLARE SUB MousePointer (SW) DIM SHARED b(1 TO 8) AS STRING DIM SHARED arrow(500) DIM SHARED red(2500) DIM SHARED yellow.sad(2500) DIM SHARED purple.sad(2500) DIM SHARED yellow.happy(2500) DIM SHARED purple.happy(2500) DIM SHARED turn AS STRING DIM SHARED leftscore AS INTEGER DIM SHARED rightscore AS INTEGER DIM SHARED a(9) DEF SEG = VARSEG(a(0)) FOR i = 0 TO 17 READ r POKE VARPTR(a(0)) + i, r NEXT i CALL MousePointer(0) CALL MousePointer(3) SCREEN 12 LINE (121, 21)-(170, 70), 4, BF GET (121, 21)-(170, 70), red LINE (221, 21)-(270, 70), 4, BF CIRCLE (245, 45), 21, 14: PAINT (245, 45), 14 CIRCLE (245, 45), 16, 0, 3, .1: CIRCLE (239, 40), 3, 0: CIRCLE (251, 40), 3, 0 GET (221, 21)-(270, 70), yellow.happy LINE (321, 21)-(370, 70), 4, BF CIRCLE (345, 45), 21, 13: PAINT (345, 45), 13 CIRCLE (345, 45), 16, 0, 3, .1: CIRCLE (339, 40), 3, 0: CIRCLE (351, 40), 3, 0 GET (321, 21)-(370, 70), purple.happy LINE (421, 21)-(470, 70), 4, BF CIRCLE (445, 45), 21, 14: PAINT (445, 45), 14 CIRCLE (445, 70), 16, 0, .7, 2.4: CIRCLE (439, 40), 3, 0: CIRCLE (451, 40), 3, 0 GET (421, 21)-(470, 70), yellow.sad LINE (521, 21)-(570, 70), 4, BF CIRCLE (545, 45), 21, 13: PAINT (545, 45), 13 CIRCLE (545, 70), 16, 0, .7, 2.4: CIRCLE (539, 40), 3, 0: CIRCLE (551, 40), 3, 0 GET (521, 21)-(570, 70), purple.sad LINE (20, 120)-(20, 135), 15: LINE (20, 120)-(30, 135), 15 LINE (20, 135)-(30, 135), 15: PAINT (21, 129), 15 LINE (22, 135)-(24, 140), 15: LINE (24, 140)-(28, 140), 15 LINE (28, 140)-(26, 135), 15: PAINT (25, 137), 15 GET (20, 120)-(30, 140), arrow CLS VIEW (70, 11)-(569, 460), , 0 GOSUB CheckerBoard row = 0 FOR i = 1 TO 8 col = 50 row = row + 50 FOR r = 1 TO 8 IF MID$(b$(i), r, 1) = "y" THEN PUT (col, row), yellow.sad, PSET IF MID$(b$(i), r, 1) = "p" THEN PUT (col, row), purple.sad, PSET IF MID$(b$(i), r, 1) = "+" THEN PUT (col, row), red, PSET col = col + 50 NEXT NEXT CALL Mouse(up, over, button) PUT (over, up), arrow turn$ = "y": k = 0: q = 0: leftscore = 0: rightscore = 0 RANDOMIZE TIMER DO o = over: u = up CALL Mouse(up, over, button) IF o <> over OR u <> up THEN PUT (o, u), arrow, XOR IF over > 489 THEN over = 489 IF up > 429 THEN up = 429 PUT (over, up), arrow END IF IF button = 1 AND turn$ = "y" THEN Pause! = TIMER WHILE TIMER < (Pause! + 50 / 100): WEND l = INT(o / 50): w = INT(u / 50) IF w < 1 THEN w = 1: IF w > 8 THEN w = 8 IF l < 1 THEN l = 1: IF l > 8 THEN l = 8 IF MID$(b$(w), l, 1) = "y" OR MID$(b$(w), l, 1) = "h" THEN PUT (o, u), arrow, XOR PUT (l * 50, w * 50), red, PSET IF over > 349 THEN over = 349 IF up > 349 THEN up = 349 IF MID$(b$(w), l, 1) = "h" THEN m$ = "h": PUT (over, up), yellow.happy IF MID$(b$(w), l, 1) = "y" THEN m$ = "y": PUT (over, up), yellow.sad IF MID$(b$(w), l, 1) = "y" THEN MID$(b$(w), l, 1) = "+" DO o = over: u = up CALL Mouse(up, over, button) IF o <> over OR u <> up THEN IF m$ = "y" THEN PUT (o, u), yellow.sad, XOR IF over > 449 THEN over = 449 IF up > 399 THEN up = 399 IF m$ = "y" THEN PUT (over, up), yellow.sad END IF IF button = 1 THEN e = INT((up + 25) / 50): f = INT((over + 25) / 50) IF e < 1 THEN e = 1: IF e > 8 THEN e = 8 IF f < 1 THEN f = 1: IF f > 8 THEN f = 8 IF MID$(b$(e), f, 1) = "+" AND e < w + 2 AND e > w - 2 AND f > l - 1 AND f < l + 2 THEN PUT (o, u), yellow.sad, XOR PUT (f * 50, e * 50), yellow.sad, PSET MID$(b$(e), f, 1) = "y": k = 1 IF f = 8 THEN MID$(b$(e), f, 1) = "h": q = 1 END IF IF MID$(b$(e), f, 1) = "+" THEN IF e < w + 3 AND e > w - 3 AND f > l - 1 AND f < l + 3 THEN IF e > w THEN IF MID$(b$(e - 1), f - 1, 1) = "p" OR MID$(b$(e - 1), f - 1, 1) = "s" THEN PUT (o, u), yellow.sad, XOR PUT (f * 50, e * 50), yellow.sad, PSET PUT ((f * 50) - 50, (e * 50) - 50), red, PSET MID$(b$(e - 1), f - 1, 1) = "+": leftscore = leftscore + 1 MID$(b$(e), f, 1) = "y": k = 1 IF f = 8 THEN MID$(b$(e), f, 1) = "h": q = 1 END IF END IF END IF IF e < w + 3 AND e > w - 3 AND f > l - 1 AND f < l + 3 THEN IF e < w THEN IF MID$(b$(e + 1), f - 1, 1) = "p" OR MID$(b$(e + 1), f - 1, 1) = "s" THEN PUT (o, u), yellow.sad, XOR PUT (f * 50, e * 50), yellow.sad, PSET PUT ((f * 50) - 50, (e * 50) + 50), red, PSET MID$(b$(e + 1), f - 1, 1) = "+": leftscore = leftscore + 1 MID$(b$(e), f, 1) = "y": k = 1 IF f = 8 THEN MID$(b$(e), f, 1) = "h": q = 1 END IF END IF END IF END IF END IF LOOP UNTIL k = 1 END IF IF MID$(b$(w), l, 1) = "h" THEN MID$(b$(w), l, 1) = "+" DO o = over: u = up CALL Mouse(up, over, button) IF o <> over OR u <> up THEN IF m$ = "h" THEN PUT (o, u), yellow.happy, XOR IF over > 449 THEN over = 449 IF up > 399 THEN up = 399 IF m$ = "h" THEN PUT (over, up), yellow.happy END IF IF button = 1 THEN e = INT((up + 25) / 50): f = INT((over + 25) / 50) IF e < 1 THEN e = 1: IF e > 8 THEN e = 8 IF f < 1 THEN f = 1: IF f > 8 THEN f = 8 IF MID$(b$(e), f, 1) = "+" AND e < w + 2 AND e > w - 2 AND f > l - 2 AND f < l + 2 THEN PUT (o, u), yellow.happy, XOR PUT (f * 50, e * 50), yellow.happy, PSET MID$(b$(e), f, 1) = "h": k = 1 END IF IF MID$(b$(e), f, 1) = "+" THEN IF e < w + 3 AND e > w - 3 AND f > l - 3 AND f < l + 3 THEN IF e > w AND f > l THEN IF MID$(b$(e - 1), f - 1, 1) = "p" OR MID$(b$(e - 1), f - 1, 1) = "s" THEN PUT (o, u), yellow.happy, XOR PUT (f * 50, e * 50), yellow.happy, PSET PUT ((f * 50) - 50, (e * 50) - 50), red, PSET MID$(b$(e - 1), f - 1, 1) = "+": leftscore = leftscore + 1 MID$(b$(e), f, 1) = "h": k = 1 END IF END IF END IF IF e < w + 3 AND e > w - 3 AND f > l - 3 AND f < l + 3 THEN IF e < w AND f > l THEN IF MID$(b$(e + 1), f - 1, 1) = "p" OR MID$(b$(e + 1), f - 1, 1) = "s" THEN PUT (o, u), yellow.happy, XOR PUT (f * 50, e * 50), yellow.happy, PSET PUT ((f * 50) - 50, (e * 50) + 50), red, PSET MID$(b$(e + 1), f - 1, 1) = "+": leftscore = leftscore + 1 MID$(b$(e), f, 1) = "h": k = 1 END IF END IF END IF IF e < w + 3 AND e > w - 3 AND f > l - 3 AND f < l + 3 THEN IF e > w AND f < l THEN IF MID$(b$(e - 1), f + 1, 1) = "p" OR MID$(b$(e - 1), f + 1, 1) = "s" THEN PUT (o, u), yellow.happy, XOR PUT (f * 50, e * 50), yellow.happy, PSET PUT ((f * 50) + 50, (e * 50) - 50), red, PSET MID$(b$(e - 1), f + 1, 1) = "+": leftscore = leftscore + 1 MID$(b$(e), f, 1) = "h": k = 1 END IF END IF END IF IF e < w + 3 AND e > w - 3 AND f > l - 3 AND f < l + 3 THEN IF e < w AND f < l THEN IF MID$(b$(e + 1), f + 1, 1) = "p" OR MID$(b$(e + 1), f + 1, 1) = "s" THEN PUT (o, u), yellow.happy, XOR PUT (f * 50, e * 50), yellow.happy, PSET PUT ((f * 50) + 50, (e * 50) + 50), red, PSET MID$(b$(e + 1), f + 1, 1) = "+": leftscore = leftscore + 1 MID$(b$(e), f, 1) = "h": k = 1 END IF END IF END IF END IF END IF LOOP UNTIL k = 1 END IF IF q = 1 THEN PUT ((f * 50), (e * 50)), red, PSET PUT ((f * 50), (e * 50)), yellow.happy, PSET END IF k = 0: q = 0: PUT (o, u), arrow Pause! = TIMER WHILE TIMER < (Pause! + 50 / 100): WEND IF e <> w AND f <> l THEN turn$ = "p" END IF END IF IF button = 1 AND turn$ = "p" THEN Pause! = TIMER WHILE TIMER < (Pause! + 50 / 100): WEND l = INT(o / 50): w = INT(u / 50) IF w < 1 THEN w = 1: IF w > 8 THEN w = 8 IF l < 1 THEN l = 1: IF l > 8 THEN l = 8 IF MID$(b$(w), l, 1) = "p" OR MID$(b$(w), l, 1) = "s" THEN PUT (o, u), arrow, XOR PUT (l * 50, w * 50), red, PSET IF over > 349 THEN over = 349 IF up > 349 THEN up = 349 IF MID$(b$(w), l, 1) = "s" THEN m$ = "s": PUT (over, up), purple.happy IF MID$(b$(w), l, 1) = "p" THEN m$ = "p": PUT (over, up), purple.sad IF MID$(b$(w), l, 1) = "p" THEN MID$(b$(w), l, 1) = "+" DO o = over: u = up CALL Mouse(up, over, button) IF o <> over OR u <> up THEN IF m$ = "p" THEN PUT (o, u), purple.sad, XOR IF over > 449 THEN over = 449 IF up > 399 THEN up = 399 IF m$ = "p" THEN PUT (over, up), purple.sad END IF IF button = 1 THEN e = INT((up + 25) / 50): f = INT((over + 25) / 50) IF e < 1 THEN e = 1: IF e > 8 THEN e = 8 IF f < 1 THEN f = 1: IF f > 8 THEN f = 8 IF MID$(b$(e), f, 1) = "+" AND e < w + 2 AND e > w - 2 AND f > l - 2 AND f < l + 1 THEN PUT (o, u), purple.sad, XOR PUT (f * 50, e * 50), purple.sad, PSET MID$(b$(e), f, 1) = "p": k = 1 IF f = 1 THEN MID$(b$(e), f, 1) = "s": q = 1 END IF IF MID$(b$(e), f, 1) = "+" THEN IF e < w + 3 AND e > w - 3 AND f > l - 3 AND f < l + 1 THEN IF e > w THEN IF MID$(b$(e - 1), f + 1, 1) = "y" OR MID$(b$(e - 1), f + 1, 1) = "h" THEN PUT (o, u), purple.sad, XOR PUT (f * 50, e * 50), purple.sad, PSET PUT ((f * 50) + 50, (e * 50) - 50), red, PSET MID$(b$(e - 1), f + 1, 1) = "+": rightscore = rightscore + 1 MID$(b$(e), f, 1) = "p": k = 1 IF f = 1 THEN MID$(b$(e), f, 1) = "s": q = 1 END IF END IF END IF IF e < w + 3 AND e > w - 3 AND f > l - 3 AND f < l + 1 THEN IF e < w THEN IF MID$(b$(e + 1), f + 1, 1) = "y" OR MID$(b$(e + 1), f + 1, 1) = "h" THEN PUT (o, u), purple.sad, XOR PUT (f * 50, e * 50), purple.sad, PSET PUT ((f * 50) + 50, (e * 50) + 50), red, PSET MID$(b$(e + 1), f + 1, 1) = "+": rightscore = rightscore + 1 MID$(b$(e), f, 1) = "p": k = 1 IF f = 1 THEN MID$(b$(e), f, 1) = "s": q = 1 END IF END IF END IF END IF END IF LOOP UNTIL k = 1 END IF IF MID$(b$(w), l, 1) = "s" THEN MID$(b$(w), l, 1) = "+" DO o = over: u = up CALL Mouse(up, over, button) IF o <> over OR u <> up THEN IF m$ = "s" THEN PUT (o, u), purple.happy, XOR IF over > 449 THEN over = 449 IF up > 399 THEN up = 399 IF m$ = "s" THEN PUT (over, up), purple.happy END IF IF button = 1 THEN e = INT((up + 25) / 50): f = INT((over + 25) / 50) IF e < 1 THEN e = 1: IF e > 8 THEN e = 8 IF f < 1 THEN f = 1: IF f > 8 THEN f = 8 IF MID$(b$(e), f, 1) = "+" AND e < w + 2 AND e > w - 2 AND f > l - 2 AND f < l + 2 THEN PUT (o, u), purple.happy, XOR PUT (f * 50, e * 50), purple.happy, PSET MID$(b$(e), f, 1) = "s": k = 1 END IF IF MID$(b$(e), f, 1) = "+" THEN IF e < w + 3 AND e > w - 3 AND f > l - 3 AND f < l + 3 THEN IF e > w AND f > l THEN IF MID$(b$(e - 1), f - 1, 1) = "y" OR MID$(b$(e - 1), f - 1, 1) = "h" THEN PUT (o, u), purple.happy, XOR PUT (f * 50, e * 50), purple.happy, PSET PUT ((f * 50) - 50, (e * 50) - 50), red, PSET MID$(b$(e - 1), f - 1, 1) = "+": rightscore = rightscore + 1 MID$(b$(e), f, 1) = "s": k = 1 END IF END IF END IF IF e < w + 3 AND e > w - 3 AND f > l - 3 AND f < l + 3 THEN IF e < w AND f > l THEN IF MID$(b$(e + 1), f - 1, 1) = "y" OR MID$(b$(e + 1), f - 1, 1) = "h" THEN PUT (o, u), purple.happy, XOR PUT (f * 50, e * 50), purple.happy, PSET PUT ((f * 50) - 50, (e * 50) + 50), red, PSET MID$(b$(e + 1), f - 1, 1) = "+": rightscore = rightscore + 1 MID$(b$(e), f, 1) = "s": k = 1 END IF END IF END IF IF e < w + 3 AND e > w - 3 AND f > l - 3 AND f < l + 3 THEN IF e > w AND f < l THEN IF MID$(b$(e - 1), f + 1, 1) = "y" OR MID$(b$(e - 1), f + 1, 1) = "h" THEN PUT (o, u), purple.happy, XOR PUT (f * 50, e * 50), purple.happy, PSET PUT ((f * 50) + 50, (e * 50) - 50), red, PSET MID$(b$(e - 1), f + 1, 1) = "+": rightscore = rightscore + 1 MID$(b$(e), f, 1) = "s": k = 1 END IF END IF END IF IF e < w + 3 AND e > w - 3 AND f > l - 3 AND f < l + 3 THEN IF e < w AND f < l THEN IF MID$(b$(e + 1), f + 1, 1) = "y" OR MID$(b$(e + 1), f + 1, 1) = "h" THEN PUT (o, u), purple.happy, XOR PUT (f * 50, e * 50), purple.happy, PSET PUT ((f * 50) + 50, (e * 50) + 50), red, PSET MID$(b$(e + 1), f + 1, 1) = "+": rightscore = rightscore + 1 MID$(b$(e), f, 1) = "s": k = 1 END IF END IF END IF END IF END IF LOOP UNTIL k = 1 END IF IF q = 1 THEN PUT ((f * 50), (e * 50)), red, PSET PUT ((f * 50), (e * 50)), purple.happy, PSET END IF k = 0: q = 0: PUT (over, up), arrow Pause! = TIMER WHILE TIMER < (Pause! + 50 / 100): WEND IF e <> w AND f <> l THEN turn$ = "y" END IF END IF LOCATE 3, 20: PRINT "Left :"; leftscore LOCATE 3, 50: PRINT "Right :"; rightscore IF rightscore = 12 OR leftscore = 12 THEN GOTO Won key$ = INKEY$ LOOP UNTIL key$ = CHR$(27) END CheckerBoard: b$(1) = "y=y=+=p=" b$(2) = "=y=+=p=p" b$(3) = "y=y=+=p=" b$(4) = "=y=+=p=p" b$(5) = "y=y=+=p=" b$(6) = "=y=+=p=p" b$(7) = "y=y=+=p=" b$(8) = "=y=+=p=p" RETURN Won: IF leftscore = 12 THEN LOCATE 3, 20: PRINT " Left player won!!!!! " IF rightscore = 12 THEN LOCATE 3, 20: PRINT " Right player won!!!!! " LOCATE 2, 20: PRINT " PRESS ENTER " WHILE INKEY$ <> CHR$(13): WEND SYSTEM DATA &HB8,&H00,&H00 : DATA &H55 : DATA &H8B,&HEC : DATA &HCD,&H33 : DATA &H92 : DATA &H8B,&H5E,&H06 : DATA &H89,&H07 : DATA &H5D : DATA &HCA,&H02,&H00 : SUB Mouse (up, over, button) POKE VARPTR(a(4)), &H92 'Swap code,Get up setup CALL absolute(up, VARPTR(a(0))) 'Run Code up = up 'Adjust 25x80 POKE VARPTR(a(4)), &H91 'Swap code,Get over setup CALL absolute(over, VARPTR(a(0))) 'Run Code over = over 'Adjust 25x80 POKE VARPTR(a(4)), &H93 'Swap code,Get BX setup CALL absolute(button, VARPTR(a(0))) 'Run Code END SUB SUB MousePointer (SW) POKE VARPTR(a(0)) + 1, SW 'Swap code,Set AX = (SW) CALL absolute(c, VARPTR(a(0))) 'Run Code 'Note: 'SW = 0-reset 'SW = 1-on 'SW = 2-off 'SW = 3-coordinates END SUB