!*! Updated on 03-Aug-90 at 3:55 PM by Steve Archuleta; edit time: 0:00:34 ! ! ! this program will be used for display purposes at a convention. ! ! ++INCLUDE DSK0:AMGSYM.BSI[7,6] ! AMIGOS XCALL library MAP1 CORNERX,F,6,0 !CORNER OF EACH SQUARE ON THE BOARD MAP1 CORNERY,F,6,0 MAP1 BLACK,F,6,0 !ALL OF THE PRETTY COLORS WE CAN USE MAP1 WHITE,F,6,1 MAP1 BLUE,F,6,2 MAP1 MAGENTA,F,6,3 MAP1 RED,F,6,4 MAP1 YELLOW,F,6,5 MAP1 GREEN,F,6,6 MAP1 CYAN,F,6,7 MAP1 GREY,F,6,9 MAP1 COLOR,F,6 MAP1 XLOCATION,F,6 MAP1 YLOCATION,F,6 MAP1 WORDS,S,25 MAP1 FONT,F,6 MAP1 GCB,X,80000 !GRAPHICS CONTROL BLOCK MAP1 STATUS,F,6 !STATUS RETURN FROM GRAPHICS CALLS MAP1 POINT'ARRAY MAP2 POINT'COUNT,B,2 ! total count of points MAP2 POINTS(25) ! max number of points MAP3 X'POINT,B,2 ! X coordinate MAP3 Y'POINT,B,2 ! Y coordinate MAP1 CIRCLE'ARRAY MAP2 CENT'X !CENTER OF CIRCLE TO DRAW MAP3 XCORD,B,2,8501 !X CORDNATE MAP3 YCORD,B,2,1500 !CAN YOU BELEVE IT, THE Y CORDNATE MAP2 RADIUS,B,2,1400 !THE ALL IMPORTANT RADIUS OF THE CIRCLE MAP1 POIXTER,B,1 !CURRENT X POSITION OF THE POINTER ON BOARD MAP1 POIYTER,B,1 !CURRENT Y POSITION OF THE POINTER ON BOARD MAP1 BOARD !THIS IS THE BIG DATA STRUCTURE BABY MAP2 LOCATION(8,8),B,1 !0=NOTHING, 1=GREY, 2=BLACK MAP2 KING,B,1 !0=REGULAR MAN, 1=KING !THIS IS THE START OF IT ALL AND THATS NO LIE ON ERROR GOTO EXIT !LEAVE LIKE A NORMAL HUMAN PRINT TAB(-1,29);!TAB(-1,36); XCALL AMGSBR, G'OPWK, GCB,"", STATUS ! OPEN THE WORKSTATION XCALL AMGSBR, G'CLRW, GCB, STATUS ! CLEAR THE WORKSTATION CALL DRAW'BOARD CALL PLAC'CHECKRS CALL INIT'BOARD CALL PLAY CLOSER: XCALL AMGSBR, G'CLWK, GCB, STATUS !CLOSE THE WORKSTATION NICELY EXIT: PRINT TAB(23,1); TAB(-1,37);:END !LEAVE THIS MESS DRAW'BOARD: ! draw checker board COLOR=WHITE XCALL AMGSBR, G'SFAS, GCB, 2, STATUS FOR CORNERX=4001 TO 28000 STEP 3000 FOR CORNERY=1 TO 24000 STEP 3000 X'POINT(1) = CORNERX Y'POINT(1) = CORNERY X'POINT(2) = CORNERX+3000 !MAX 32000 LOWER RIGHT-HAND CORNER Y'POINT(2) = CORNERY X'POINT(3) = CORNERX+3000 !MAX 32000 UPPER RIGHT-HAND CORNER HORIZONTAL Y'POINT(3) = CORNERY+3000 !MAX 24000 UPPER RIGHT-HAND CORNER VERTICAL X'POINT(4) = CORNERX Y'POINT(4) = CORNERY+3000 X'POINT(5) = CORNERX Y'POINT(5) = CORNERY CALL RECT CALL CHG'COLR NEXT CORNERY CALL CHG'COLR NEXT CORNERX RETURN PLAC'CHECKRS:!PUT DOWN SOME GREY CHECKERS DUDE COLOR=GREY XCORD=8501 YCORD=1500 RADIUS=1400 FOR COUNTER=1 TO 4 CALL CIRCLE XCORD=XCORD+6000 NEXT COUNTER XCORD=23501 YCORD=4500 FOR COUNTER=1 TO 4 CALL CIRCLE XCORD=XCORD-6000 NEXT COUNTER XCORD=8501 YCORD=7500 FOR COUNTER=1 TO 4 CALL CIRCLE XCORD=XCORD+6000 NEXT COUNTER !NOW LETS LAY DOWN A FEW BLACK CHECKERS AND GET ON WITH THE GAME COLOR=BLACK XCORD=5501 YCORD=16500 FOR COUNTER=1 TO 4 CALL CIRCLE XCORD=XCORD+6000 NEXT COUNTER XCORD=26501 YCORD=19500 FOR COUNTER=1 TO 4 CALL CIRCLE XCORD=XCORD-6000 NEXT COUNTER XCORD=5501 YCORD=22500 FOR COUNTER=1 TO 4 CALL CIRCLE XCORD=XCORD+6000 NEXT COUNTER POIXTER=5 POIYTER=4 CALL MARK RETURN PLAY: XCALL INKEY,INSTR IF INSTR="1" THEN CALL ONE ! IF INSTR="2" THEN CALL TWO ! IF INSTR="3" THEN CALL THREE ! IF INSTR="4" THEN CALL FOUR ! IF INSTR="6" THEN CALL SIX ! IF INSTR="7" THEN CALL SEVEN ! IF INSTR="8" THEN CALL EIGHT ! IF INSTR="9" THEN CALL NINE ! IF INSTR="J" THEN CALL JUMP ! IF INSTR="N" THEN CALL NEW IF INSTR="Q" THEN CALL QUIT ! IF INSTR="?" THEN CALL HELP GOTO PLAY MARK: CENTX=5501+(POIXTER-1)*3000 CENTY=1501+(POIYTER-1)*3000 COLOR=BLUE XCALL AMGSBR,G'GCIR,GCB,CENTX-1475,CENTY+1475,20,125,STATUS XCALL AMGSBR,G'GCIR,GCB,CENTX+1475,CENTY+1475,20,125,STATUS XCALL AMGSBR,G'GCIR,GCB,CENTX+1475,CENTY-1475,20,125,STATUS XCALL AMGSBR,G'GCIR,GCB,CENTX-1475,CENTY-1475,20,125,STATUS RETURN XMARK: CENTX=5501+(POIXTER-1)*3000 CENTY=1501+(POIYTER-1)*3000 COLOR=RED XCALL AMGSBR,G'GCIR,GCB,CENTX-1475,CENTY+1475,20,125,STATUS XCALL AMGSBR,G'GCIR,GCB,CENTX+1475,CENTY+1475,20,125,STATUS XCALL AMGSBR,G'GCIR,GCB,CENTX+1475,CENTY-1475,20,125,STATUS XCALL AMGSBR,G'GCIR,GCB,CENTX-1475,CENTY-1475,20,125,STATUS RETURN ONE: CALL XMARK POIXTER=POIXTER-1 IF POIXTER=0 THEN POIXTER=8 POIYTER=POIYTER-1 IF POIYTER=0 THEN POIYTER=8 CALL MARK RETURN QUIT: RETURN RECT:!THIS ROUTINE WILL DRAW ALL OF THE LITTLE SQUARES ON THE SCREEN XCALL AMGSBR, G'SFAC, GCB, COLOR,STATUS POINT'COUNT = 5 XCALL AMGSBR, G'FA, GCB, POINT'ARRAY, STATUS IF NO'OUTLINE=1 THEN NO'OUTLINE=0 : RETURN ! outline the right face XCALL AMGSBR, G'SPLC, GCB,BLACK, STATUS ! fill style XCALL AMGSBR, G'PL, GCB, POINT'ARRAY, STATUS RETURN CHG'COLR: !ALTERNATE THE COLOR OF THE SQUARES IF COLOR=RED THEN COLOR=WHITE ELSE COLOR=RED RETURN CIRCLE:!LETS DRAW SOME CIRCLES OK XCALL AMGSBR,G'SFAS,GCB,2,STATUS XCALL AMGSBR,G'SFAC,GCB,COLOR,STATUS XCALL AMGSBR,G'GCIR,GCB,XCORD,YCORD,RADIUS,125,STATUS RETURN INIT'BOARD: YCOUNT=1 FOR XCOUNT=2 TO 8 STEP 2 LOCATION(XCOUNT,YCOUNT)=1 NEXT XCOUNT YCOUNT=2 FOR XCOUNT=1 TO 7 STEP 2 LOCATION(XCOUNT,YCOUNT)=1 NEXT XCOUNT YCOUNT=3 FOR XCOUNT=2 TO 8 STEP 2 LOCATION(XCOUNT,YCOUNT)=1 NEXT XCOUNT YCOUNT=6 FOR XCOUNT=1 TO 7 STEP 2 LOCATION(XCOUNT,YCOUNT)=2 NEXT XCOUNT YCOUNT=7 FOR XCOUNT=2 TO 8 STEP 2 LOCATION(XCOUNT,YCOUNT)=2 NEXT XCOUNT YCOUNT=8 FOR XCOUNT=1 TO 7 STEP 2 LOCATION(XCOUNT,YCOUNT)=2 NEXT XCOUNT FOR XCOUNT=1 TO 8 FOR YCOUNT=4 TO 5 LOCATION(XCOUNT,YCOUNT)=0 NEXT YCOUNT NEXT XCOUNT RETURN