!In this game you are trying to dominate the board with pieces of your color !first move the cursor to the piece you want to move or duplicate !if you move to a space next to the selected piece it duplicates !if it is two spaces away it just moves the piece to that spot !The game is over when the persons who's turn it is can not move which is usualy !causd by having all the squares filled. dim board%[64] call clrscr call clrscr print "************************" print "* Circles *" print "* *" print "* By: Brian Kay *" print "* *" print "* MCMXCVIII *" print "************************" call draw_logo(30,70) loop k$ = key$ while (k$ = "") endloop call clrscr call clrscr call set_up go%=1 loop k$ = key$ k% = asc%(k$,1) if k$ = "q" then go% = 2 endif if (k% = 40) and (cy%<>8) then call draw_cursor(cx%,cy%+1) endif if (k% = 39) and (cx%<>8) then call draw_cursor(cx%+1,cy%) endif if (k% = 37) and (cx%<>1) then call draw_cursor(cx%-1,cy%) endif if (k% = 38) and (cy%<>1) then call draw_cursor(cx%,cy%-1) endif if k$ = "t" then nop% = 2 endif if k$ = "o" then nop% = 1 endif if k$ = "z" then nop% = 0 endif if k$ = "b" then color% = 1 endif if k$ = "w" then color% = 2 endif if k$ = " " then call select endif if k$ = "r" then call refresh endif if (turn% <> color%) and (nop% <> 2) then call think_engine endif if (nop%=0) then call think_engine endif while go% = 1 endloop exit !*************************! procedure select if sel% = 1 then if get_board(cx%,cy%) = turn% then selx% = cx% sely% = cy% call color(3) call fillrect(((cx%-1)*20)+1,((cy%-1)*20)+1,((cx%-1)*20)+3,((cy%-1)*20)+3) sel% = 2 endif else if (selx% = cx%) and (sely% = cy%) then call color(0) call fillrect(((cx%-1)*20)+1,((cy%-1)*20)+1,((cx%-1)*20)+3,((cy%-1)*20)+3) sel% = 1 endif if get_board(cx%,cy%) = 0 then difx% = abs(cx%-selx%) dify% = abs(cy%-sely%) if (difx% < 3) and (dify% < 3) then call move_piece(selx%,sely%,cx%,cy%) endif endif endif return endproc !*************************! procedure move_piece(ox%,oy%,dx%,dy%) difx% = abs(ox%-dx%) dify% = abs(oy%-dy%) if (difx% = 2) or (dify% = 2) then call erase_circle(ox%,oy%) call set_board(ox%,oy%,0) endif call set_board(dx%,dy%,turn%) call draw_circle(dx%,dy%,turn%) call color(0) call fillrect(((ox%-1)*20)+1,((oy%-1)*20)+1,((ox%-1)*20)+3,((oy%-1)*20)+3) sel% = 1 if (turn% = 1) then op% = 2 else op% = 1 endif loop for x1% = 1 to 3 loop for y1% = 1 to 3 x2% = dx%-x1% + 2 y2% = dy%-y1% + 2 if (x2% < 9) and (x2% > 0) and (y2% < 9) and (y2% > 0) then if (get_board(x2%,y2%) = op%) then call set_board(x2%,y2%,turn%) call draw_circle(x2%,y2%,turn%) endif endif endloop endloop turn% = op% if (turn% = color%) and (nop% = 1) then call check_eog endif if (nop% = 2) then call check_eog endif endproc !*************************! procedure think_engine bms% = 0 bmxo% = 0 bmyo% = 0 bmxd% = 0 bmyd% = 0 loop for x% = 1 to 8 loop for y% = 1 to 8 if (get_board(x%,y%) = turn%) then loop for tx% = 1 to 5 loop for ty% = 1 to 5 ts% = 0 x2% = x%-tx% + 3 y2% = y%-ty% + 3 if (x2% < 9) and (x2% > 0) and (y2% < 9) and (y2% > 0) then if (get_board(x2%,y2%) = 0) then if (abs(x%-x2%) < 2) and (abs(y%-y2%) < 2) then ts% = ts% + 1 endif loop for tx2% = 1 to 3 loop for ty2% = 1 to 3 x3% = x2%-tx2% + 2 y3% = y2%-ty2% + 2 if (x3% < 9) and (x3% > 0) and (y3% < 9) and (y3% > 0) then if (get_board(x3%,y3%) <> turn%) and (get_board(x3%,y3%) <> 0) then ts% = ts% + 1 endif endif endloop endloop if ( ts% > bms%) then bms% = ts% bmxo% = x% bmyo% = y% bmxd% = x2% bmyd% = y2% endif endif endif endloop endloop endif endloop endloop if bmxo% <> 0 then call move_piece(bmxo%,bmyo%,bmxd%,bmyd%) else call who_won endif return endproc !*************************! procedure check_EOG can_move% = 1 loop for x% = 1 to 8 loop for y% = 1 to 8 if (get_board(x%,y%) = turn%) then loop for tx% = 1 to 5 loop for ty% = 1 to 5 x2% = x%-tx% + 3 y2% = y%-ty% + 3 if (x2% < 9) and (x2% > 0) and (y2% < 9) and (y2% > 0) then if (get_board(x2%,y2%) = 0) then can_move% = 2 endif endif endloop endloop endif endloop endloop if can_move% = 1 then call who_won endif endproc !*************************! procedure who_won bl% = 0 wh% = 0 go% = 2 loop for x% = 1 to 8 loop for y% = 1 to 8 if get_board(x%,y%) = 1 then bl% = bl%+1 endif if get_board(x%,y%) = 2 then wh% = wh%+1 endif endloop endloop call curpos(30,8) if (bl% > wh%) then print "Black Won!!" endif if (wh% > bl%) then print "White Won!!" endif if(wh% = bl%) then print "It's a Tie!!" endif endproc !*************************! procedure set_up color% = 1 cx% = 1 cy% = 1 call set_board(1,1,1) call set_board(1,8,2) call set_board(8,1,2) call set_board(8,8,1) call refresh call draw_cursor(1,1) turn% = 1 sel% = 1 nop% = 2 return endproc !*************************! procedure erase_circle(x%,y%) x# = (x%*20)-10 y# = (y%*20)-10 loop for r% = 1 to 6 call circle(x#,y#,r%,0) endloop endproc !*************************! procedure draw_circle(x%,y%,c%) x# = (x%*20)-10 y# = (y%*20)-10 if c% = 1 then call circle(x#,y#,3,3) call circle(x#,y#,2,3) call circle(x#,y#,1,3) endif if c% =2 then call circle(x#,y#,3,0) call circle(x#,y#,2,0) call circle(x#,y#,1,0) endif call circle(x#,y#,6,3) call circle(x#,y#,4,3) return endproc !*************************! procedure draw_cursor(tx%,ty%) cx# = (cx%*20)-10 cy# = (cy%*20)-10 call circle(cx#,cy#,5,0) cx% = tx% cy% = ty% cx# = (tx%*20)-10 cy# = (ty%*20)-10 call circle(cx#,cy#,5,3) endproc !*************************! procedure get_board(bx%,by%) return(board%[((bx%-1)*8)+by%]) endproc !*************************! procedure set_board(bx%,by%,v%) board%[((bx%-1)*8)+by%] = v% return endproc !*************************! procedure refresh call draw_logo(185,25) call draw_cursor(cx%,cy%) loop for a% = 0 to 8 call line(a%*20,0,a%*20,160) call line(0,a%*20,160,a%*20) endloop loop for xc% = 1 to 8 loop for yc% = 1 to 8 if get_board(xc%,yc%) <> 0 then call draw_circle(xc%,yc%,get_board(xc%,yc%)) endif endloop endloop ofs% = 45 call curpos(ofs%,1) print "Q - Quit" call curpos(ofs%,2) print "B - Play as Black" call curpos(ofs%,3) print "W - play as White" call curpos(ofs%,4) print "O - One player" call curpos(ofs%,5) print "T - Two players" call curpos(ofs%,6) print "Z - Zero Players" call curpos(ofs%,7) print "R - Refresh screen" call curpos(ofs%,8) print "Space - Select piece" call curpos(ofs%,9) print "Arrows - Move cursor" call curpos(25,12) print "www.geocities.com/SiliconValley/Way/8527" return endproc !*************************! procedure circle(x#,y#,r#,c%) r% = r# loop for a% = 1 to r%*8 a# = (360/(r#*8))*a% call color(c%) call point(((cos(a#*3.1415926/180)*r#)+x#),((sin(a#*3.1415926/180)*r#)+y#)) endloop return endproc !*************************! Procedure draw_logo(logox%,logoy%) call color(3) call line( 8+logox%, 76+logoy%, 8+logox%, 77+logoy%) call line( 9+logox%, 75+logoy%, 9+logox%, 77+logoy%) call line( 10+logox%, 73+logoy%, 10+logox%, 77+logoy%) call line( 11+logox%, 72+logoy%, 11+logox%, 77+logoy%) call line( 12+logox%, 71+logoy%, 12+logox%, 77+logoy%) call line( 13+logox%, 70+logoy%, 13+logox%, 77+logoy%) call line( 14+logox%, 70+logoy%, 14+logox%, 77+logoy%) call line( 15+logox%, 70+logoy%, 15+logox%, 72+logoy%) call line( 15+logox%, 74+logoy%, 15+logox%, 75+logoy%) call line( 15+logox%, 76+logoy%, 15+logox%, 77+logoy%) call line( 16+logox%, 65+logoy%, 16+logox%, 67+logoy%) call line( 16+logox%, 70+logoy%, 16+logox%, 71+logoy%) call line( 16+logox%, 74+logoy%, 16+logox%, 75+logoy%) call line( 17+logox%, 64+logoy%, 17+logox%, 67+logoy%) call line( 17+logox%, 70+logoy%, 17+logox%, 71+logoy%) call line( 17+logox%, 72+logoy%, 17+logox%, 73+logoy%) call line( 17+logox%, 75+logoy%, 17+logox%, 76+logoy%) call line( 18+logox%, 63+logoy%, 18+logox%, 67+logoy%) call line( 18+logox%, 70+logoy%, 18+logox%, 71+logoy%) call line( 18+logox%, 72+logoy%, 18+logox%, 73+logoy%) call line( 18+logox%, 75+logoy%, 18+logox%, 76+logoy%) call line( 19+logox%, 62+logoy%, 19+logox%, 67+logoy%) call line( 19+logox%, 70+logoy%, 19+logox%, 71+logoy%) call line( 19+logox%, 73+logoy%, 19+logox%, 74+logoy%) call line( 20+logox%, 60+logoy%, 20+logox%, 67+logoy%) call line( 20+logox%, 70+logoy%, 20+logox%, 72+logoy%) call line( 20+logox%, 73+logoy%, 20+logox%, 74+logoy%) call line( 20+logox%, 76+logoy%, 20+logox%, 77+logoy%) call line( 21+logox%, 59+logoy%, 21+logox%, 67+logoy%) call line( 21+logox%, 70+logoy%, 21+logox%, 77+logoy%) call line( 22+logox%, 58+logoy%, 22+logox%, 67+logoy%) call line( 22+logox%, 70+logoy%, 22+logox%, 77+logoy%) call line( 23+logox%, 57+logoy%, 23+logox%, 67+logoy%) call line( 23+logox%, 70+logoy%, 23+logox%, 77+logoy%) call line( 24+logox%, 55+logoy%, 24+logox%, 67+logoy%) call line( 24+logox%, 70+logoy%, 24+logox%, 72+logoy%) call line( 24+logox%, 76+logoy%, 24+logox%, 77+logoy%) call line( 25+logox%, 54+logoy%, 25+logox%, 67+logoy%) call line( 25+logox%, 70+logoy%, 25+logox%, 71+logoy%) call line( 26+logox%, 53+logoy%, 26+logox%, 67+logoy%) call line( 26+logox%, 70+logoy%, 26+logox%, 71+logoy%) call line( 26+logox%, 72+logoy%, 26+logox%, 76+logoy%) call line( 27+logox%, 51+logoy%, 27+logox%, 67+logoy%) call line( 27+logox%, 70+logoy%, 27+logox%, 71+logoy%) call line( 27+logox%, 72+logoy%, 27+logox%, 76+logoy%) call line( 28+logox%, 50+logoy%, 28+logox%, 67+logoy%) call line( 28+logox%, 70+logoy%, 28+logox%, 71+logoy%) call line( 29+logox%, 49+logoy%, 29+logox%, 67+logoy%) call line( 29+logox%, 70+logoy%, 29+logox%, 72+logoy%) call line( 29+logox%, 76+logoy%, 29+logox%, 77+logoy%) call line( 30+logox%, 48+logoy%, 30+logox%, 67+logoy%) call line( 30+logox%, 70+logoy%, 30+logox%, 77+logoy%) call line( 31+logox%, 46+logoy%, 31+logox%, 67+logoy%) call line( 31+logox%, 70+logoy%, 31+logox%, 77+logoy%) call line( 32+logox%, 45+logoy%, 32+logox%, 67+logoy%) call line( 32+logox%, 70+logoy%, 32+logox%, 77+logoy%) call line( 33+logox%, 44+logoy%, 33+logox%, 67+logoy%) call line( 33+logox%, 70+logoy%, 33+logox%, 72+logoy%) call line( 33+logox%, 73+logoy%, 33+logox%, 77+logoy%) call line( 34+logox%, 42+logoy%, 34+logox%, 67+logoy%) call line( 34+logox%, 70+logoy%, 34+logox%, 71+logoy%) call line( 35+logox%, 41+logoy%, 35+logox%, 67+logoy%) call line( 36+logox%, 40+logoy%, 36+logox%, 67+logoy%) call line( 36+logox%, 71+logoy%, 36+logox%, 72+logoy%) call line( 36+logox%, 73+logoy%, 36+logox%, 77+logoy%) call line( 37+logox%, 39+logoy%, 37+logox%, 67+logoy%) call line( 37+logox%, 71+logoy%, 37+logox%, 77+logoy%) call line( 38+logox%, 70+logoy%, 38+logox%, 77+logoy%) call line( 39+logox%, 70+logoy%, 39+logox%, 77+logoy%) call line( 40+logox%, 70+logoy%, 40+logox%, 72+logoy%) call line( 40+logox%, 73+logoy%, 40+logox%, 77+logoy%) call line( 41+logox%, 76+logoy%, 41+logox%, 77+logoy%) call line( 43+logox%, 30+logoy%, 43+logox%, 46+logoy%) call line( 43+logox%, 54+logoy%, 43+logox%, 67+logoy%) call line( 43+logox%, 70+logoy%, 43+logox%, 72+logoy%) call line( 43+logox%, 73+logoy%, 43+logox%, 76+logoy%) call line( 44+logox%, 29+logoy%, 44+logox%, 45+logoy%) call line( 44+logox%, 55+logoy%, 44+logox%, 67+logoy%) call line( 44+logox%, 70+logoy%, 44+logox%, 77+logoy%) call line( 45+logox%, 27+logoy%, 45+logox%, 44+logoy%) call line( 45+logox%, 56+logoy%, 45+logox%, 67+logoy%) call line( 45+logox%, 70+logoy%, 45+logox%, 77+logoy%) call line( 46+logox%, 26+logoy%, 46+logox%, 43+logoy%) call line( 46+logox%, 49+logoy%, 46+logox%, 51+logoy%) call line( 46+logox%, 57+logoy%, 46+logox%, 67+logoy%) call line( 46+logox%, 70+logoy%, 46+logox%, 77+logoy%) call line( 47+logox%, 25+logoy%, 47+logox%, 42+logoy%) call line( 47+logox%, 48+logoy%, 47+logox%, 52+logoy%) call line( 47+logox%, 58+logoy%, 47+logox%, 67+logoy%) call line( 47+logox%, 70+logoy%, 47+logox%, 77+logoy%) call line( 48+logox%, 24+logoy%, 48+logox%, 41+logoy%) call line( 48+logox%, 47+logoy%, 48+logox%, 53+logoy%) call line( 48+logox%, 59+logoy%, 48+logox%, 67+logoy%) call line( 48+logox%, 70+logoy%, 48+logox%, 71+logoy%) call line( 48+logox%, 74+logoy%, 48+logox%, 77+logoy%) call line( 49+logox%, 25+logoy%, 49+logox%, 40+logoy%) call line( 49+logox%, 46+logoy%, 49+logox%, 54+logoy%) call line( 49+logox%, 60+logoy%, 49+logox%, 67+logoy%) call line( 49+logox%, 70+logoy%, 49+logox%, 71+logoy%) call line( 50+logox%, 27+logoy%, 50+logox%, 39+logoy%) call line( 50+logox%, 45+logoy%, 50+logox%, 55+logoy%) call line( 50+logox%, 61+logoy%, 50+logox%, 67+logoy%) call line( 50+logox%, 70+logoy%, 50+logox%, 74+logoy%) call line( 51+logox%, 28+logoy%, 51+logox%, 38+logoy%) call line( 51+logox%, 44+logoy%, 51+logox%, 56+logoy%) call line( 51+logox%, 62+logoy%, 51+logox%, 67+logoy%) call line( 51+logox%, 70+logoy%, 51+logox%, 72+logoy%) call line( 51+logox%, 76+logoy%, 51+logox%, 77+logoy%) call line( 52+logox%, 30+logoy%, 52+logox%, 37+logoy%) call line( 52+logox%, 43+logoy%, 52+logox%, 57+logoy%) call line( 52+logox%, 63+logoy%, 52+logox%, 67+logoy%) call line( 52+logox%, 70+logoy%, 52+logox%, 71+logoy%) call line( 52+logox%, 74+logoy%, 52+logox%, 77+logoy%) call line( 53+logox%, 31+logoy%, 53+logox%, 36+logoy%) call line( 53+logox%, 42+logoy%, 53+logox%, 58+logoy%) call line( 53+logox%, 64+logoy%, 53+logox%, 67+logoy%) call line( 53+logox%, 70+logoy%, 53+logox%, 72+logoy%) call line( 53+logox%, 76+logoy%, 53+logox%, 77+logoy%) call line( 54+logox%, 33+logoy%, 54+logox%, 35+logoy%) call line( 54+logox%, 41+logoy%, 54+logox%, 59+logoy%) call line( 54+logox%, 65+logoy%, 54+logox%, 67+logoy%) call line( 54+logox%, 70+logoy%, 54+logox%, 74+logoy%) call line( 55+logox%, 40+logoy%, 55+logox%, 60+logoy%) call line( 55+logox%, 66+logoy%, 55+logox%, 67+logoy%) call line( 55+logox%, 70+logoy%, 55+logox%, 71+logoy%) call line( 56+logox%, 39+logoy%, 56+logox%, 61+logoy%) call line( 56+logox%, 70+logoy%, 56+logox%, 71+logoy%) call line( 56+logox%, 74+logoy%, 56+logox%, 77+logoy%) call line( 57+logox%, 38+logoy%, 57+logox%, 62+logoy%) call line( 57+logox%, 70+logoy%, 57+logox%, 77+logoy%) call line( 58+logox%, 38+logoy%, 58+logox%, 63+logoy%) call line( 58+logox%, 70+logoy%, 58+logox%, 77+logoy%) call line( 59+logox%, 40+logoy%, 59+logox%, 64+logoy%) call line( 59+logox%, 70+logoy%, 59+logox%, 77+logoy%) call line( 60+logox%, 42+logoy%, 60+logox%, 65+logoy%) call line( 60+logox%, 70+logoy%, 60+logox%, 72+logoy%) call line( 60+logox%, 73+logoy%, 60+logox%, 74+logoy%) call line( 60+logox%, 76+logoy%, 60+logox%, 77+logoy%) call line( 61+logox%, 43+logoy%, 61+logox%, 66+logoy%) call line( 61+logox%, 70+logoy%, 61+logox%, 71+logoy%) call line( 61+logox%, 72+logoy%, 61+logox%, 73+logoy%) call line( 62+logox%, 44+logoy%, 62+logox%, 67+logoy%) call line( 62+logox%, 70+logoy%, 62+logox%, 71+logoy%) call line( 62+logox%, 72+logoy%, 62+logox%, 73+logoy%) call line( 62+logox%, 74+logoy%, 62+logox%, 76+logoy%) call line( 63+logox%, 46+logoy%, 63+logox%, 67+logoy%) call line( 63+logox%, 70+logoy%, 63+logox%, 71+logoy%) call line( 64+logox%, 47+logoy%, 64+logox%, 67+logoy%) call line( 64+logox%, 70+logoy%, 64+logox%, 72+logoy%) call line( 65+logox%, 48+logoy%, 65+logox%, 67+logoy%) call line( 65+logox%, 70+logoy%, 65+logox%, 77+logoy%) call line( 66+logox%, 49+logoy%, 66+logox%, 67+logoy%) call line( 66+logox%, 70+logoy%, 66+logox%, 77+logoy%) call line( 67+logox%, 51+logoy%, 67+logox%, 67+logoy%) call line( 67+logox%, 70+logoy%, 67+logox%, 77+logoy%) call line( 68+logox%, 52+logoy%, 68+logox%, 67+logoy%) call line( 68+logox%, 70+logoy%, 68+logox%, 77+logoy%) call line( 69+logox%, 53+logoy%, 69+logox%, 67+logoy%) call line( 69+logox%, 70+logoy%, 69+logox%, 71+logoy%) call line( 70+logox%, 55+logoy%, 70+logox%, 67+logoy%) call line( 70+logox%, 70+logoy%, 70+logox%, 71+logoy%) call line( 71+logox%, 56+logoy%, 71+logox%, 67+logoy%) call line( 71+logox%, 70+logoy%, 71+logox%, 71+logoy%) call line( 71+logox%, 72+logoy%, 71+logox%, 77+logoy%) call line( 72+logox%, 57+logoy%, 72+logox%, 67+logoy%) call line( 72+logox%, 70+logoy%, 72+logox%, 71+logoy%) call line( 72+logox%, 72+logoy%, 72+logox%, 77+logoy%) call line( 73+logox%, 59+logoy%, 73+logox%, 67+logoy%) call line( 73+logox%, 70+logoy%, 73+logox%, 77+logoy%) call line( 74+logox%, 60+logoy%, 74+logox%, 67+logoy%) call line( 74+logox%, 70+logoy%, 74+logox%, 77+logoy%) call line( 75+logox%, 61+logoy%, 75+logox%, 67+logoy%) call line( 75+logox%, 70+logoy%, 75+logox%, 77+logoy%) call line( 76+logox%, 63+logoy%, 76+logox%, 67+logoy%) call line( 76+logox%, 70+logoy%, 76+logox%, 72+logoy%) call line( 76+logox%, 76+logoy%, 76+logox%, 77+logoy%) call line( 77+logox%, 64+logoy%, 77+logox%, 67+logoy%) call line( 77+logox%, 70+logoy%, 77+logox%, 71+logoy%) call line( 78+logox%, 65+logoy%, 78+logox%, 67+logoy%) call line( 78+logox%, 70+logoy%, 78+logox%, 71+logoy%) call line( 78+logox%, 72+logoy%, 78+logox%, 73+logoy%) call line( 78+logox%, 74+logoy%, 78+logox%, 76+logoy%) call line( 79+logox%, 70+logoy%, 79+logox%, 71+logoy%) call line( 79+logox%, 72+logoy%, 79+logox%, 73+logoy%) call line( 79+logox%, 74+logoy%, 79+logox%, 76+logoy%) call line( 80+logox%, 70+logoy%, 80+logox%, 71+logoy%) call line( 80+logox%, 74+logoy%, 80+logox%, 75+logoy%) call line( 81+logox%, 70+logoy%, 81+logox%, 72+logoy%) call line( 81+logox%, 74+logoy%, 81+logox%, 75+logoy%) call line( 81+logox%, 76+logoy%, 81+logox%, 77+logoy%) call line( 82+logox%, 71+logoy%, 82+logox%, 77+logoy%) call line( 83+logox%, 72+logoy%, 83+logox%, 77+logoy%) call line( 84+logox%, 73+logoy%, 84+logox%, 77+logoy%) call line( 85+logox%, 75+logoy%, 85+logox%, 77+logoy%) call line( 86+logox%, 76+logoy%, 86+logox%, 77+logoy%) endproc !*************************! .