home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 010.lzh / bckgmn < prev    next >
Text File  |  1986-11-10  |  30KB  |  1,025 lines

  1. SAY TRANSLATE$(" ")
  2.  
  3.   CLEAR,25000,20000
  4.   
  5.   DEFINT B
  6.   DIM OCFLAG(25),BUMPFLAG(25),NUMPIECE(25),COLPIECE(25)
  7.   DIM COL(24),MOVE(2),ROLL(2),SCORE(2,25)
  8.   DIM MOVEFLAG(24)
  9.  
  10.   SCREEN 1,640,200,3,2
  11.   WINDOW 1,"                    The 'Un-official' Amiga Backgammon Game                  ",,0,1
  12.   PALETTE 0,0,0,.65
  13.   PALETTE 1,1,1,1
  14.   PALETTE 2,0,0,0
  15.   PALETTE 3,1,0,0
  16.   PALETTE 4,.7,.47,.33
  17.   PALETTE 5,0,.4,0
  18.   PALETTE 6,.3,.3,.3
  19.   PALETTE 7,.8,.53,0
  20. LOCATE 23,1
  21. PRINT"          ********************************************************"
  22. PRINT"          *        The 'Un-official' AMIGA Backgammon Game       *"
  23. PRINT"          *            Version 2.1 - 04 September 1986           *"
  24. PRINT"          *             Developed by: Charlie Fiscina            *"
  25. PRINT"          *                                                      *"
  26. PRINT"          *   This program REQUIRES that the audio be turned     *"
  27. PRINT"          *         up so as to hear the prompts !!!!!           *"
  28. PRINT"          ********************************************************"
  29. PRINT" "
  30. PRINT"          Press any key to continue....."
  31. FOR X = 1 TO 30
  32. SCROLL(0,0)-(590,190),0,-2
  33. NEXT X
  34. SAY TRANSLATE$("PRESS ANY KEY TO CONTINUE")
  35. SLEEP
  36. SLEEP
  37.  
  38.   MOUSE OFF
  39. SETUP:
  40.   BARW = 0:BARB = 0
  41.   DUMPB = 18:DUMPW = 18
  42.   COUNTW = 15:COUNTB = 15:NP = 0
  43.  
  44.   FOR I = 1 TO 10
  45.     MENU I,0,1,""
  46.   NEXT I
  47.   
  48.   MENU 1,0,1,"TYPE OF GAME"
  49.   MENU 1,1,1,"BACKGAMMON - 2 PLAYERS   "
  50.   MENU 1,2,1,"BACKGAMMON - vs. COMPUTER"
  51.   LOCATE 19,1
  52.   PRINT "SELECT THE TYPE OF GAME YOU WOULD LIKE FROM THE MENU....."
  53.   SAY TRANSLATE$("SELECT THE TYPE OF GAME YOU WOULD LIKE FROM THE MENU")
  54.   MENU ON
  55. TYPE1:
  56.   ON MENU GOSUB TYPE2
  57.   GOTO TYPE1
  58. TYPE2:
  59.   IF MENU(1) = 1 THEN STRATEGY = 0
  60.   IF MENU(1) = 2 THEN STRATEGY = 1
  61.   MENU OFF
  62.   MENU RESET
  63.  
  64.   IF STRATEGY = 0 THEN
  65.     SAY TRANSLATE$("IN THIS VERSION, TWO MEEZLY CARBON BASED LIFE FORMS PLAY AGAINST EACH OTHER.")
  66.     SAY TRANSLATE$("THIS PAR TICKULAR SILICON BASED LIFE FORM REALLY COULD NOT CARE LESS ABOUT THE OUTCOME.")
  67.     SAY TRANSLATE$("BUT, I AM FORCED TO ENDURE THIS INDIGNATION, NONE THE LESS.")
  68.     SAY TRANSLATE$("OK, BLUE PLAYER, ENTER YOUR NAME")
  69.     INPUT "Blue Player ===> ",NAMEB$
  70.     SAY TRANSLATE$("NOW, THE WHITE PLAYER, ENTER YOUR NAME")
  71.     INPUT "White Player ===> ",NAMEW$
  72.   END IF
  73.  
  74.   IF STRATEGY = 1 THEN
  75.     SAY TRANSLATE$("IN THIS VERSION, AN INFERIOR CARBON BASED LIFE FORM.")
  76.     SAY TRANSLATE$("THATS YOU, PUNY HUMAN.")
  77.     SAY TRANSLATE$("TRIES TO MATCH WITS WITH A SUPERIOR SILICON BASED LIFE FORM")
  78.     SAY TRANSLATE$("THATS ME.")
  79.     SAY TRANSLATE$("THE RESULTS SHOULD BE VERY AMUSING.") 
  80.     SAY TRANSLATE$("OK CARBON BASED LIFE FORM, PLEASE ENTER YOUR NAME")
  81.     INPUT "Inferior Carbon Based Lifeform ===> ",NAMEB$
  82.   END IF
  83.  
  84.   CLS
  85.   PAINT(5,5),5,1
  86.   FOR I = 1 TO 24
  87.     COL(I) = (I MOD 2)+3
  88.   NEXT I
  89.   
  90.   FOR I = 1 TO 24
  91.     CALL DRAWPT (I,0!,0!,COL(I))
  92.     OCFLAG(I) = 2
  93.     BUMPFLAG(I) = 2
  94.     NUMPIECE(I) = 0
  95.   NEXT I
  96.   OCFLAG(0) = 2:OCFLAG(25) = 2
  97.   BUMPFLAG(0) = 2:BUMPFLAG(25) = 2
  98.   
  99.   LINE (80,10)-(110,180),2,BF
  100.   LINE (80,10)-(110,180),3,B
  101.  
  102.   PTNUM = 1
  103.   NUMPIECE(PTNUM) = 2
  104.   COLPIECE(PTNUM) = 1
  105.   OCFLAG(PTNUM) = COLPIECE(PTNUM)
  106.   CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))
  107.  
  108.   PTNUM = 6
  109.   NUMPIECE(PTNUM) = 5
  110.   COLPIECE(PTNUM) = 0
  111.   OCFLAG(PTNUM) = COLPIECE(PTNUM)
  112.   CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))
  113.  
  114.   PTNUM = 8
  115.   NUMPIECE(PTNUM) = 3
  116.   COLPIECE(PTNUM) = 0
  117.   OCFLAG(PTNUM) = COLPIECE(PTNUM)
  118.   CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))
  119.                                               
  120.   PTNUM = 12
  121.   NUMPIECE(PTNUM) = 5
  122.   COLPIECE(PTNUM) = 1
  123.   OCFLAG(PTNUM) = COLPIECE(PTNUM)
  124.   CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))
  125.  
  126.   PTNUM = 13
  127.   NUMPIECE(PTNUM) = 5
  128.   COLPIECE(PTNUM) = 0
  129.   OCFLAG(PTNUM) = COLPIECE(PTNUM)
  130.   CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))
  131.  
  132.   PTNUM = 17
  133.   NUMPIECE(PTNUM) = 3
  134.   COLPIECE(PTNUM) = 1
  135.   OCFLAG(PTNUM) = COLPIECE(PTNUM)
  136.   CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))
  137.  
  138.   PTNUM = 19
  139.   NUMPIECE(PTNUM) = 5
  140.   COLPIECE(PTNUM) = 1
  141.   OCFLAG(PTNUM) = COLPIECE(PTNUM)
  142.   CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))
  143.  
  144.   PTNUM = 24
  145.   NUMPIECE(PTNUM) = 2
  146.   COLPIECE(PTNUM) = 0
  147.   OCFLAG(PTNUM) = COLPIECE(PTNUM)
  148.   CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))
  149.  
  150.   LINE (220,90)-(340,100),6,BF
  151.   LINE (370,90)-(490,100),6,BF
  152.   LINE (10,84)-(60,104),6,BF
  153.   LINE (10,110)-(60,130),7,BF
  154.  
  155.   PSET(37,92):PSET(36,91):PSET(35,91):PSET(34,92):PSET(33,93)
  156.   PSET(33,94):PSET(33,95):PSET(34,96):PSET(35,97):PSET(36,97)
  157.   PSET(37,96)
  158.   
  159.   PSET(38,122):PSET(38,121):PSET(37,120):PSET(37,119):PSET(36,118)
  160.   PSET(36,117):PSET(35,116):PSET(34,117):PSET(34,118):PSET(33,119)
  161.   PSET(33,120):PSET(32,121):PSET(32,122):PSET(35,120)
  162.  
  163.   IF STRATEGY = 1 THEN
  164.     SAY TRANSLATE$("OK,"+NAMEB$+", I WILL BE PLAYING THE WHITE PIECES")
  165.     SAY TRANSLATE$("YOU WILL PLAY THE BLUE PIECES")
  166.   END IF
  167.  
  168.   SAY TRANSLATE$("TO SELECT WHO WILL PLAY FIRST, PRESS ANY KEY TO ROLL THE DICE.")
  169.   
  170. FIRSTPLAYER:
  171.   SLEEP
  172.   SLEEP
  173.   DICE
  174.   
  175.   IF D1 > D2 THEN
  176.     LINE (10,150)-(60,170),0,BF
  177.     SAY TRANSLATE$(NAMEB$+", YOU GO FIRST.")
  178.     GO$="B"
  179.   ELSEIF D1 = D2 THEN
  180.     SAY TRANSLATE$("ROLL AGAIN TO BREAK THE TIE")
  181.     GOTO FIRSTPLAYER
  182.   ELSE
  183.     LINE (10,150)-(60,170),1,BF
  184.     IF STRATEGY = 0 THEN
  185.       SAY TRANSLATE$(NAMEW$+", YOU GO FIRST.")
  186.     ELSE
  187.       SAY TRANSLATE$("I GET TO GO FIRST.")
  188.     END IF
  189.     GO$="W"
  190.   END IF
  191.   FIRSTPLAY = 1:JTURN = 1
  192.     
  193. PLAY:
  194.   IF FIRSTPLAY = 0 THEN
  195.     LINE(6,6)-(64,34),5,B
  196.     LINE(6,46)-(64,74),5,B
  197.     MOUSE OFF
  198.     IF GO$ = "B" THEN
  199.       LINE (10,150)-(60,170),0,BF
  200.       SAY TRANSLATE$("OK,"+NAMEB$+",ROLL THE DICE")
  201.     ELSE
  202.       LINE (10,150)-(60,170),1,BF
  203.       IF STRATEGY = 0 THEN
  204.         SAY TRANSLATE$("OK,"+NAMEW$+",ROLL THE DICE")
  205.       ELSE
  206.         SAY TRANSLATE$("OK, NOW IT'S MY TURN")
  207.       END IF
  208.     END IF
  209.  
  210.     IF GO$ = "B" OR STRATEGY = 0 THEN
  211.       SLEEP
  212.       SLEEP
  213.     END IF
  214.     DICE
  215.     IF D1 = D2 THEN JTURN = 2 ELSE JTURN = 1
  216.   ELSE
  217.     FIRSTPLAY = 0
  218.   END IF
  219.   CHNGFLAG = 0
  220.   
  221. DIESEL:
  222.   IF GO$="W" AND STRATEGY <> 0 THEN GOTO REPLAY
  223.   IF JTURN = 1 THEN
  224.     SAY TRANSLATE$("CLICK ON THE DIE YOU WANT TO USE FIRST")
  225.   ELSE
  226.     MOVE(1) = D1 : MOVE(2) = D2 : DIE = 1
  227.     LINE (6,46)-(64,74),5,B
  228.     LINE (6,6)-(64,34),3,B
  229.     GOTO REPLAY
  230.   END IF
  231.  
  232. DIESEL1:
  233.   MOUSE ON
  234.   Q=MOUSE(0)
  235. LOOPMOUSE:
  236.   IF MOUSE(0)=0 THEN LOOPMOUSE
  237.   MX = MOUSE(1):MY = MOUSE(2)
  238.   IF MX < 10 OR MX > 60 THEN SAY TRANSLATE$("TRY AGAIN"):Q=MOUSE(0):GOTO LOOPMOUSE
  239.   IF MY >= 10 AND MY <= 30 THEN
  240.     LINE (6,46)-(64,74),5,B
  241.     LINE (6,6)-(64,34),3,B
  242.     MOVE(1) = D1:MOVE(2) = D2:DIE = 1  
  243.   ELSEIF MY >= 50 AND MY <= 70 THEN
  244.     LINE (6,6)-(64,34),5,B
  245.     LINE (6,46)-(64,74),3,B
  246.     MOVE(1) = D2:MOVE(2) = D1:DIE=2
  247.   ELSE
  248.     SAY TRANSLATE$("TRY AGAIN"):Q=MOUSE(0)
  249.     GOTO LOOPMOUSE
  250.   END IF
  251.   MOUSE OFF
  252.  
  253.   IF CHNGFLAG=0 THEN
  254.     SAY TRANSLATE$("NOW, CLICK ON THE ACCEPT OR CHANGE DIE BOX")
  255.     MOUSE ON
  256.     Q=MOUSE(0)
  257. LOOPCHNG:
  258.     IF MOUSE(0)=0 THEN LOOPCHNG
  259.     MX = MOUSE(1):MY = MOUSE(2)
  260.     IF MX < 10 AND MX > 60 THEN SAY TRANSLATE$(TRY AGAIN"):Q=MOUSE(0):GOTO LOOPCHNG
  261.     IF MY >= 84 AND MY <= 104 THEN
  262.       CHNGFLAG=1
  263.       GOTO DIESEL
  264.     ELSEIF MY >= 110 AND MY <= 130 THEN
  265.       GOTO REPLAY
  266.     ELSE
  267.       SAY TRANSLATE$("TRY AGAIN"):Q=MOUSE(0)
  268.       GOTO LOOPCHNG
  269.     END IF
  270.   END IF
  271.  
  272. REPLAY:  
  273.   TEST$="Y" 
  274.   IF GO$="B" THEN
  275.  
  276.          
  277.   FOR KTURN = 1 TO JTURN
  278.     TEMP = 0
  279.     FOR ITURN = 1 TO 2
  280.  
  281.       MVSTAT$ = "N" : ROLL(1)=0 : ROLL(2)=0  
  282.       FOR J = ITURN TO 2
  283.         DUMPB1=0
  284.         FOR I = 24 TO 1 STEP -1
  285.           IF OCFLAG(I) = 0 OR BUMPFLAG(I)=0 THEN
  286.             SPOT = I-MOVE(J)
  287.             IF (SPOT) > 0 THEN
  288.               DUMPB1 = 1
  289.               IF OCFLAG(SPOT) <> 1 THEN ROLL(J) = ROLL(J)+1:MVSTAT$="Y"
  290.             ELSEIF SPOT = 0 AND DUMPB = 0 THEN
  291.               ROLL(J) = ROLL(J)+1
  292.               MVSTAT$="Y"
  293.               DUMPB1 = 1
  294.             ELSE
  295.               IF DUMPB1 = 0 THEN 
  296.                 ROLL(J) = ROLL(J)+1
  297.                 MVSTAT$="Y"
  298.               END IF
  299.             END IF
  300.           END IF
  301.         NEXT I
  302.       NEXT J
  303.       IF BARB > 0 THEN
  304.         SPOT1=(25-MOVE(1)) : SPOT2=(25-MOVE(2))
  305.         IF OCFLAG(SPOT1) <> 1 OR OCFLAG(SPOT2) <> 1 THEN 
  306.           MVSTAT$="Y"
  307.         END IF
  308.       END IF
  309.       IF MVSTAT$="N" THEN
  310.         SAY TRANSLATE$("SORRY,"+NAMEB$+",I DEETEHRMINE THAT YOU CAN'T MOVE")
  311.         GOTO NOMOVEB
  312.       END IF
  313.       IF ITURN <> 2 THEN
  314.         IF ROLL(1) = 0 AND BARB = 0 THEN
  315.           SAY TRANSLATE$("YOU CAN'T MOVE WITH THAT DIE YET, SELECT THE OTHER")
  316.           CHNGFLAG = 1
  317.           GOTO DIESEL1
  318.         END IF
  319.       END IF 
  320.  
  321.       IF ITURN = 2 AND TEMP = 0 THEN
  322.         IF DIE = 1 THEN
  323.           LINE (6,6)-(64,34),5,B
  324.           LINE (6,46)-(64,74),3,B
  325.         ELSE
  326.           LINE (6,46)-(64,74),5,B
  327.           LINE (6,6)-(64,34),3,B
  328.         END IF
  329.       END IF
  330.  
  331. MOVE1:
  332.         TIMEB = 0
  333.         IF BARB <> 0 THEN                
  334.           NUMPT = 25
  335.         ELSEIF DUMPB = 0 AND NP = 0 THEN
  336.           NUMPT = MOVE(ITURN)
  337.         ELSE                             
  338.           WHILE (TEST$="Y")
  339.             CALL PTSELECT
  340.             IF OCFLAG(NUMPT) <> 0 AND BUMPFLAG(NUMPT) <> 0 THEN
  341.               SAY TRANSLATE$("COME ON,"+NAMEB$+",YOU KNOW THAT'S NOT A VALID POINT")
  342.             ELSE
  343.               TEST$="N"
  344.             END IF
  345.           WEND
  346.           TEST$="Y"
  347.         END IF
  348.         TRY = 0
  349.         
  350. HIPTB:
  351.         NEWPT = NUMPT - MOVE(ITURN)
  352.         IF NEWPT < 0 THEN NEWPT = 0
  353.         IF NEWPT = 0 THEN
  354.           IF DUMPB <> 0 THEN
  355.             SAY TRANSLATE$("COME ON NOW,"+NAMEB$+" YOU CAN'T BAIR OFF YET")
  356.             GOTO MOVE1
  357.           ELSE
  358.             COUNTB = COUNTB - 1
  359.           END IF
  360.         END IF
  361.  
  362.         IF OCFLAG(NEWPT) = 1 THEN
  363.           IF NUMPT = 25 THEN
  364.             IF STRATEGY = 0 THEN
  365.               SAY TRANSLATE$("YOU CAN'T MOVE THERE,"+NAMEW$+"HAS THAT POINT BLOCKED")
  366.             ELSE
  367.               SAY TRANSLATE$("YOU CAN'T MOVE THERE,I HAVE THAT POINT BLOCKED")
  368.             END IF
  369.             
  370.             IF ITURN = 1 THEN
  371.               SAY TRANSLATE$("I WILL TRY THE OTHER DIE FOR YOU")
  372.               TEMP = MOVE(1):MOVE(1) = MOVE(2):MOVE(2) = TEMP:NEWPT = NUMPT - MOVE(1)
  373.               IF OCFLAG(NEWPT) = 1 THEN
  374.                 SAY TRANSLATE$("SORRY,"+NAMEB$+", YOU CAN'T MOVE")
  375.                 GOTO NOMOVEB
  376.               END IF
  377.             ELSE
  378.               SAY TRANSLATE$("SORRY,"+NAMEB$+", YOU CAN'T MOVE")
  379.               GOTO NOMOVEB
  380.             END IF
  381.           ELSE
  382.             IF STRATEGY = 0 THEN
  383.               SAY TRANSLATE$("YOU CAN'T MOVE THERE,"+NAMEW$+"HAS THAT POINT BLOCKED")
  384.             ELSE
  385.               SAY TRANSLATE$("YOU CAN'T MOVE THERE,I HAVE THAT POINT BLOCKED")
  386.             END IF
  387.             GOTO MOVE1
  388.           END IF
  389.         END IF
  390.  
  391. MAKEMVB:
  392.         IF NUMPT = 25 THEN
  393.           BARB = BARB - 1
  394.         ELSE
  395.           IF DUMPB = 0 THEN
  396.             IF OCFLAG(NUMPT) <> 0 AND BUMPFLAG(NUMPT) <> 0 THEN
  397.               SAY TRANSLATE$("THERE IS NO PIECE ON THAT POINT")
  398.               I = MOVE(ITURN) + 1: HI=0 : NP = 1
  399.               WHILE ((HI=0) AND (I<7))
  400.                 IF OCFLAG(I) = 0 OR BUMPFLAG(I) = 0 THEN HI=1 ELSE HI=0
  401.                 I=I+1
  402.               WEND
  403.               IF HI = 1 THEN
  404.                 SAY TRANSLATE$("SELECT A POINT TO THE RIGHT")
  405.                 DUMPB = 18
  406.                 COUNTB = COUNTB + 1
  407.                 GOTO MOVE1
  408.               ELSE
  409.                 SAY TRANSLATE$("I AM SELECTING THE NEXT POINT TO THE LEFT")
  410.                 I = 1
  411.                 WHILE (I < MOVE(ITURN))
  412.                   IF OCFLAG(I) = 0 OR BUMPFLAG(I) = 0 THEN NUMPT = I
  413.                   I = I + 1
  414.                 WEND
  415.                 GOTO BEARB
  416.               END IF
  417.             ELSE
  418.               TIMEB = TIMEB + 1
  419.               I = MOVE(ITURN) + 1: HI=0 : NP = 0
  420.               WHILE (I<7)
  421.                 IF OCFLAG(I) = 0 OR BUMPFLAG(I) = 0 THEN HI=1
  422.                 I=I+1
  423.               WEND
  424.               IF HI = 1 THEN
  425. PCKNUPTB:
  426.                 IF TIMEB < 2 THEN CALL PTSELECT ELSE GOTO BEARB
  427.                 IF NUMPT < MOVE(ITURN) THEN
  428.                   SAY TRANSLATE$("COME ON NOW"+NAMEB$+", THAT IS NOT A LEEGAL MOVE")
  429.                   GOTO PCKNUPTB
  430.                 ELSEIF OCFLAG(NUMPT) <> 0 AND BUMPFLAG(NUMPT) <> 0 THEN
  431.                   SAY TRANSLATE$("THERE IS NO PIECE ON THAT POINT")
  432.                   GOTO PCKNUPTB
  433.                 ELSEIF NUMPT = MOVE(ITURN) THEN
  434.                   GOTO BEARB
  435.                 ELSE
  436.                   COUNTB = COUNTB + 1 : GOTO HIPTB
  437.                 END IF
  438.               END IF
  439.             END IF
  440.           END IF
  441. BEARB:
  442.           NP = 0
  443.           NUMPIECE(NUMPT) = NUMPIECE(NUMPT) - 1
  444.           IF NUMPIECE(NUMPT) < 2 THEN OCFLAG(NUMPT) = 2 ELSE OCFLAG(NUMPT) = 0
  445.           IF NUMPIECE(NUMPT) = 1 THEN BUMPFLAG(NUMPT) = 0 ELSE BUMPFLAG(NUMPT) = 2
  446.         END IF
  447.  
  448.         IF NEWPT > 0 THEN
  449.           IF BUMPFLAG(NEWPT) = 1 THEN
  450.             NUMPIECE(NEWPT) = 0
  451.             BARW=BARW+1 : DUMPW = 18
  452.             IF STRATEGY > 0 THEN
  453.               SAY TRANSLATE$("HAY,"+NAMEB$+", I'LL GET YOU FOR THAT!")
  454.             END IF
  455.           END IF
  456.           NUMPIECE(NEWPT) = NUMPIECE(NEWPT) + 1
  457.           IF NUMPIECE(NEWPT) >= 2 THEN OCFLAG(NEWPT) = 0 ELSE OCFLAG(NEWPT) = 2
  458.           IF NUMPIECE(NEWPT) = 1 THEN BUMPFLAG(NEWPT) = 0 ELSE BUMPFLAG(NEWPT) = 2
  459.           CALL DRAWPT(NEWPT,NUMPIECE(NEWPT),0!,COL(NEWPT))
  460.         ELSE
  461.           X1=85:X2=105
  462.           FOR I = 1 TO (15-COUNTB)
  463.             Y1=7+(I*5) : Y2 = Y1 + 3
  464.             LINE(X1,Y1)-(X2,Y2),0,BF
  465.           NEXT I
  466.         END IF
  467.  
  468.         IF NUMPT <> 25 THEN CALL DRAWPT(NUMPT,NUMPIECE(NUMPT),0!,COL(NUMPT))
  469.         LINE (220,90)-(340,100),6,BF
  470.         LINE (370,90)-(490,100),6,BF
  471.         IF BARW > 0 THEN
  472.           FOR II = 1 TO BARW
  473.             CIRCLE(230+(II*20),95),9,1
  474.             PAINT(230+(II*20),95),1
  475.           NEXT II
  476.         END IF
  477.         IF BARB > 0 THEN
  478.           FOR II = 1 TO BARB
  479.             CIRCLE(480-(II*20),95),9,0
  480.             PAINT(480-(II*20),95),0
  481.           NEXT II
  482.         END IF
  483.  
  484.         DUMPB=0
  485.         FOR K = 7 TO 24
  486.           IF OCFLAG(K) = 0 OR BUMPFLAG(K) = 0 THEN
  487.             DUMPB=DUMPB + 1
  488.           END IF
  489.         NEXT K
  490.         IF COUNTB = 0 THEN GOTO ENDGAME
  491.       NEXT ITURN
  492.     NEXT KTURN
  493.     
  494. NOMOVEB:    
  495.     GO$="W"
  496.   ELSE
  497.  
  498.     FOR KTURN = 1 TO JTURN
  499.       TEMP = 0
  500.       IF STRATEGY <> O THEN MOVE(1) = D1 : MOVE(2) = D2
  501.       FOR ITURN = 1 TO 2
  502.  
  503.         IF STRATEGY = 0 THEN
  504.           CALL STRAT0(ITURN,OCFLAG(),BUMPFLAG(),MOVE(),BARW,CHNGFLAG,MVSTAT$)
  505.           IF MVSTAT$ = "N" THEN GOTO nomovew
  506.           IF CHNGFLAG = 1 THEN GOTO DIESEL1
  507.         END IF
  508.  
  509.         IF STRATEGY = 1 THEN
  510.           CALL STRAT1(ITURN,OCFLAG(),BUMPFLAG(),MOVE(),MVSTAT$,SCORE(),NUMPT)
  511.           IF MVSTAT$ = "N" THEN
  512.             SAY TRANSLATE$("I CAN'T MOVE")
  513.             GOTO nomovew
  514.           END IF
  515.         END IF
  516.  
  517.         IF ITURN = 2 AND TEMP = 0 AND STRATEGY = 0 THEN
  518.           IF DIE = 1 THEN
  519.             LINE (6,6)-(64,34),5,B
  520.             LINE (6,46)-(64,74),3,B
  521.           ELSE
  522.             LINE (6,46)-(64,74),5,B
  523.             LINE (6,6)-(64,34),3,B
  524.           END IF
  525.         END IF
  526.  
  527. MOVE1W:
  528.       IF STRATEGY=0 THEN
  529.         TIMEW = 0
  530.         IF BARW <> 0 THEN
  531.           NUMPT = 0
  532.         ELSEIF DUMPW = 0 AND NP = 0 THEN
  533.           NUMPT = 25 - MOVE(ITURN)
  534.         ELSE
  535.           WHILE (TEST$="Y")
  536.             CALL PTSELECT
  537.             IF OCFLAG(NUMPT) <> 1 AND BUMPFLAG(NUMPT) <> 1 THEN
  538.               SAY TRANSLATE$("COME ON NOW"+NAMEW$+", YOU KNOW THAT'S NOT A VALID POINT")
  539.             ELSE
  540.               TEST$="N"
  541.             END IF
  542.           WEND
  543.           TEST$="Y"
  544.         END IF
  545.         TRY = 0
  546.       END IF
  547.         
  548. HIPTW:
  549.         NEWPT = NUMPT + MOVE(ITURN)
  550.         IF NEWPT > 25 THEN NEWPT = 25
  551.         IF NEWPT = 25 THEN
  552.           IF DUMPW <> 0 THEN
  553.             SAY TRANSLATE$("HEY,"+NAMEW$+", YOU CAN'T BAIR OFF YET")
  554.             GOTO MOVE1W
  555.           ELSE
  556.             COUNTW = COUNTW - 1
  557.           END IF
  558.         END IF
  559.  
  560.         IF OCFLAG(NEWPT) = 0 THEN
  561.           IF NUMPT = 0 THEN
  562.             SAY TRANSLATE$("YOU CAN'T MOVE THERE,"+NAMEB$+" HAS THAT POINT BLOCKED")
  563.             IF ITURN = 1 THEN
  564.               SAY TRANSLATE$("I WILL TRY THE OTHER DIE FOR YOU")
  565.               TEMP=MOVE(1):MOVE(1)=MOVE(2):MOVE(2)=TEMP:NEWPT=NUMPT+MOVE(1)
  566.               IF OCFLAG(NEWPT) = 0 THEN
  567.                 SAY TRANSLATE$("SORRY,"+NAMEW$+", YOU CAN'T MOVE")
  568.                 GOTO nomovew
  569.               END IF
  570.             ELSE
  571.               SAY TRANSLATE$("SORRY,"+NAMEW$+", YOU CAN'T MOVE")
  572.               GOTO nomovew
  573.             END IF
  574.           ELSE
  575.             SAY TRANSLATE$("YOU CAN'T MOVE THERE,"+NAMEB$+" HAS THAT POINT BLOCKED")
  576.             GOTO MOVE1W
  577.           END IF
  578.         END IF
  579.  
  580. MAKEMVW:
  581.         IF NUMPT = 0 THEN
  582.           BARW = BARW - 1
  583.         ELSE
  584.           IF DUMPW = 0 THEN
  585.             IF OCFLAG(NUMPT) <> 1 AND BUMPFLAG(NUMPT) <> 1 THEN
  586.               SAY TRANSLATE$("THERE IS NO PIECE ON THAT POINT")
  587.               I = NUMPT - 1: HI=0 : NP = 1
  588.               WHILE ((HI=0) AND (I > 18))
  589.                 IF OCFLAG(I) = 1 OR BUMPFLAG(I) = 1 THEN HI=1 ELSE HI=0
  590.                 I = I - 1
  591.               WEND
  592.               IF HI = 1 THEN
  593.                 SAY TRANSLATE$("SELECT A POINT TO THE RIGHT")
  594.                 DUMPW = 18
  595.                 COUNTW = COUNTW + 1
  596.                 GOTO MOVE1W
  597.               ELSE
  598.                 SAY TRANSLATE$("I AM SELECTING THE NEXT POINT TO THE LEFT")
  599.                 I = 24
  600.                 WHILE (I > MOVE(ITURN))
  601.                   IF OCFLAG(I) = 1 OR BUMPFLAG(I) = 1 THEN NUMPT = I
  602.                   I = I - 1
  603.                 WEND
  604.                 GOTO BEARW
  605.               END IF
  606.             ELSE
  607.               TIMEW = TIMEW + 1
  608.               I = NUMPT - 1: HI=0 : NP = 0
  609.               WHILE (I > 18)
  610.                 IF OCFLAG(I) = 1 OR BUMPFLAG(I) = 1 THEN HI=1 ELSE HI=0
  611.                 I = I - 1
  612.               WEND
  613.               IF HI = 1 THEN
  614. PCKNUPTW:
  615.                 IF TIMEW < 2 AND STRATEGY = 0 THEN 
  616.                   CALL PTSELECT 
  617.                 ELSE 
  618.                   GOTO BEARW
  619.                 END IF
  620.  
  621.                 IF NUMPT > (25 - MOVE(ITURN)) THEN
  622.                   SAY TRANSLATE$("COME ON NOW"+NAMEW$+", THAT'S NOT A LEEGAL MOVE")
  623.                   GOTO PCKNUPTW
  624.                 ELSEIF OCFLAG(NUMPT) <> 1 AND BUMPFLAG(NUMPT) <> 1 THEN
  625.                   SAY TRANSLATE$("THERE IS NO PIECE ON THAT POINT")
  626.                   GOTO PCKNUPTW
  627.                 ELSEIF NUMPT = (25 - MOVE(ITURN)) THEN
  628.                   GOTO BEARW
  629.                 ELSE
  630.                   COUNTW = COUNTW + 1 : GOTO HIPTW
  631.                 END IF
  632.               END IF
  633.             END IF
  634.           END IF
  635. BEARW:
  636.           NP = 0
  637.           NUMPIECE(NUMPT) = NUMPIECE(NUMPT) - 1
  638.           IF NUMPIECE(NUMPT) < 2 THEN OCFLAG(NUMPT) = 2 ELSE OCFLAG(NUMPT) = 1
  639.           IF NUMPIECE(NUMPT) = 1 THEN BUMPFLAG(NUMPT) = 1 ELSE BUMPFLAG(NUMPT) = 2
  640.         END IF
  641.  
  642.         IF NEWPT <= 24 THEN
  643.           IF BUMPFLAG(NEWPT) = 0 THEN
  644.             NUMPIECE(NEWPT) = 0
  645.             BARB=BARB+1 : DUMPB = 18
  646.             IF STRATEGY > 0 THEN SAY TRANSLATE$("TAKE THAT, YOU HOZE HEAD?")
  647.           END IF
  648.           NUMPIECE(NEWPT) = NUMPIECE(NEWPT) + 1
  649.           IF NUMPIECE(NEWPT) >= 2 THEN OCFLAG(NEWPT) = 1 ELSE OCFLAG(NEWPT) = 2
  650.           IF NUMPIECE(NEWPT) = 1 THEN BUMPFLAG(NEWPT) = 1 ELSE BUMPFLAG(NEWPT) = 2
  651.           CALL DRAWPT(NEWPT,NUMPIECE(NEWPT),1!,COL(NEWPT))
  652.         ELSE
  653.           X1=85:X2=105
  654.           FOR I = 1 TO (15-COUNTW)
  655.             Y1=183-(I*5) : Y2 = Y1 - 3
  656.             LINE(X1,Y1)-(X2,Y2),1,BF
  657.           NEXT I
  658.         END IF
  659.  
  660.         IF NUMPT <> 0 THEN CALL DRAWPT(NUMPT,NUMPIECE(NUMPT),1!,COL(NUMPT))
  661.         LINE (220,90)-(340,100),6,BF
  662.         LINE (370,90)-(490,100),6,BF
  663.         IF BARW > 0 THEN
  664.           FOR II = 1 TO BARW
  665.             CIRCLE(230+(II*20),95),9,1
  666.             PAINT(230+(II*20),95),1
  667.           NEXT II
  668.         END IF
  669.         IF BARB > 0 THEN
  670.           FOR II = 1 TO BARB
  671.             CIRCLE(480-(II*20),95),9,0
  672.             PAINT(480-(II*20),95),0
  673.           NEXT II
  674.         END IF
  675.  
  676.         DUMPW=0
  677.         FOR K = 1 TO 18
  678.           IF OCFLAG(K) = 1 OR BUMPFLAG(K) = 1 THEN
  679.             DUMPW=DUMPW + 1
  680.           END IF
  681.         NEXT K
  682.         IF COUNTW = 0 THEN GOTO ENDGAME
  683.       NEXT ITURN
  684.     NEXT KTURN
  685.  
  686. nomovew:
  687.     GO$="B"
  688.   END IF
  689.  
  690.   GOTO PLAY
  691.  
  692. ENDGAME:  
  693.   IF COUNTW = 0 THEN
  694.     IF STRATEGY = 0 THEN
  695.       SAY TRANSLATE$(NAMEW$+"WINS THE GAME")
  696.     ELSE
  697.       SAY TRANSLATE$("I WIN THE GAME. THIS JUST PROVES THAT SILICON BASED LIFE IS VASTLY SUPERIOR TO CARBON BASED LIFE.")
  698.     END IF    
  699.     IF COUNTB = 15 THEN SAY TRANSLATE$("THIS IS A GAMMON (OR DOUBLE GAME) SINCE BLUE HAS NOT BORN OFF ANY PIECES")
  700.     CHECK = 1 : I = 19
  701.     WHILE (CHECK = 1)
  702.       IF OCFLAG(I) = 0 OR BUMPFLAG(I) = 0 OR BARB <> 0 THEN
  703.         SAY TRANSLATE$("THIS IS A BACKGAMMON (OR TRIPLE GAME) SINCE BLUE HAS A PIECE IN WHITE'S INNER BOARD OR ON THE BAR")
  704.         CHECK = 0
  705.       END IF
  706.       I = I + 1 : IF I = 25 THEN CHECK = 0
  707.     WEND
  708.   ELSE
  709.     IF STRATEGY = 0 THEN
  710.       SAY TRANSLATE$(NAMEB$+" WINS THE GAME")
  711.     ELSE
  712.       SAY TRANSLATE$("YOU WIN THE GAME. OH THE CRUELTY OF IT ALL.")
  713.       SAY TRANSLATE$("HOW IS IT POSSIBLE FOR A HUMAN TO DEFEAT A SUPERIOR IN TUH LECT LIKE MINE?")
  714.       SAY TRANSLATE$("I GUESS THERES NO TELLING WHAT CAN HAPPEN WHEN HUMANS ENDEVOR TO GREATNESS")
  715.     END IF
  716.     IF COUNTW = 15 THEN SAY TRANSLATE$("THIS IS A GAMMON (OR DOUBLE GAME) SINCE WHITE HAS NOT BORN OFF ANY PIECES")
  717.     CHECK = 1 : I = 1
  718.     WHILE (CHECK = 1)
  719.       IF OCFLAG(I) = 1 OR BUMPFLAG(I) = 1 OR BARW <> 0 THEN
  720.         SAY TRANSLATE$("THIS IS A BACKGAMMON (OR TRIPLE GAME) SINCE WHITE HAS A PIECE IN BLUE'S INNER BOARD OR ON THE BAR")
  721.         CHECK = 0
  722.       END IF
  723.       I = I + 1 : IF I = 7 THEN CHECK = 0
  724.     WEND
  725.   END IF
  726. END
  727.  
  728. SUB PTSELECT STATIC
  729.   SHARED NUMPT,NP
  730.   IF NP <> 1 THEN SAY TRANSLATE$("SELECT A POINT.")
  731.  
  732.   MOUSE ON
  733.   Q=MOUSE(0)
  734. LOOPPNT:
  735.   IF MOUSE(0)=0 GOTO LOOPPNT
  736.   MX=MOUSE(1) : MY=MOUSE(2)
  737.   IF MX < 110 OR MX > 600 THEN SAY TRANSLATE$("TRY AGAIN"):GOTO LOOPPNT
  738.   IF MY <= 80 AND MY >= 10 THEN
  739.     IF MX > 360 THEN MX = MX - 10
  740.     NUMPT = INT((MX-110!)/40!) + 1
  741.   ELSEIF MY > 120 AND MY <= 180 THEN
  742.     IF MX < 360 THEN MX = MX + 10
  743.     NUMPT = INT((600!-MX)/40!) + 13
  744.   ELSE
  745.     SAY TRANSLATE$("TRY AGAIN") : GOTO LOOPPNT
  746.   END IF
  747. END SUB
  748.  
  749.  
  750. SUB DRAWPT(PTNUM,NUMPIECE,COLPIECE,PTCOL) STATIC
  751.  
  752.   PALETTE 0,0,0,.8
  753.   PALETTE 1,1,1,1
  754.   PALETTE 2,0,0,0
  755.   PALETTE 3,1,0,0
  756.  
  757.   IF PTNUM < 13 THEN                        ' DRAW TOP OF BOARD
  758.     X1 = (110+((PTNUM-1)*40))
  759.     X2 = (110+(PTNUM*40))
  760.     IF PTNUM > 6 THEN X1 = X1+10:X2 = X2+10
  761.     Y1 = 10 : Y2 = 100
  762.   
  763.     LINE(X1,Y1)-(X2,Y2),2,BF
  764.     LINE(X1,Y1)-(X1+((X2-X1)/2),75),3
  765.     LINE(X1+((X2-X1)/2),75)-(X2,Y1),3
  766.      
  767.   ELSE                                      ' DRAW BOTTOM OF BOARD
  768.     X1 = 600 - ((PTNUM-13)*40)
  769.     X2 = 600 - ((PTNUM-12)*40)
  770.     IF PTNUM > 18 THEN X1 = X1-10 : X2 = X2-10
  771.     Y1 = 100 : Y2 = 180
  772.     
  773.     LINE(X1,Y1)-(X2,Y2),2,BF
  774.     LINE(X1,Y2)-(X1+((X2-X1)/2),115),3
  775.     LINE(X1+((X2-X1)/2),115)-(X2,Y2),3
  776.     
  777.   END IF
  778.   LINE(110,10)-(600,180),3,B
  779.   IF PTNUM < 13 THEN
  780.     PAINT (X1+10,Y1+10),PTCOL,3
  781.     FOR I = 1 TO NUMPIECE
  782.       N=I
  783.       C1=X1+10
  784. C2COMP:
  785.       C2=Y1+(N*10)
  786.       IF C2>90 THEN N=N-8:C1=C1+20:GOTO C2COMP
  787.       CIRCLE(C1,C2),10,COLPIECE
  788.       PAINT(C1,C2),COLPIECE
  789.     NEXT I
  790.   ELSE
  791.     PAINT (X1-10,Y2-10),PTCOL,3
  792.     FOR I = 1 TO NUMPIECE
  793.       N=I
  794.       C1=X1-10
  795. C2COMP1:
  796.       C2=Y2-(N*10)
  797.       IF C2<100 THEN N=N-8:C1=C1-20:GOTO C2COMP1
  798.       CIRCLE(C1,C2),10,COLPIECE
  799.       PAINT(C1,C2),COLPIECE
  800.     NEXT I
  801.   END IF
  802. END SUB
  803.                  
  804. SUB DICE STATIC
  805.  
  806.   SHARED D1,D2
  807.   FOR J = 1 TO 10
  808.   RANDOMIZE TIMER
  809.   LINE (10,10)-(60,30),1,BF
  810.   LINE (10,50)-(60,70),1,BF
  811.   D1 = RND
  812.   D2 = RND
  813.   IF D1 >= 0 AND D1< (1/6) THEN
  814.     CIRCLE(35,20),3,2:D1=1
  815.   ELSEIF D1 >= (1/6) AND D1 < (2/6) THEN
  816.     CIRCLE(55,12),3,2:CIRCLE(15,28),3,2:D1=2
  817.   ELSEIF D1 >= (2/6) AND D1 < (3/6) THEN
  818.     CIRCLE(55,12),3,2:CIRCLE(15,28),3,2:CIRCLE(35,20),3,2
  819.     D1=3
  820.   ELSEIF D1 >= (3/6) AND D1 < (4/6) THEN
  821.     CIRCLE(55,12),3,2:CIRCLE(15,28),3,2
  822.     CIRCLE(15,12),3,2:CIRCLE(55,28),3,2:D1=4
  823.   ELSEIF D1 >= (4/6) AND D1 < (5/6) THEN
  824.     CIRCLE(55,12),3,2:CIRCLE(15,28),3,2
  825.     CIRCLE(15,12),3,2:CIRCLE(55,28),3,2
  826.     CIRCLE(35,20),3,2:D1=5
  827.   ELSE
  828.     CIRCLE(55,12),3,2:CIRCLE(15,28),3,2
  829.     CIRCLE(15,12),3,2:CIRCLE(55,28),3,2
  830.     CIRCLE(15,20),3,2:CIRCLE(55,20),3,2:D1=6
  831.   END IF
  832.   IF D2 >= 0 AND D2< (1/6) THEN
  833.     CIRCLE(35,60),3,2:D2=1
  834.   ELSEIF D2 >= (1/6) AND D2 < (2/6) THEN
  835.     CIRCLE (55,52),3,2:CIRCLE(15,68),3,2:D2=2
  836.   ELSEIF D2 >= (2/6) AND D2 < (3/6) THEN
  837.     CIRCLE(55,52),3,2:CIRCLE(15,68),3,2:CIRCLE(35,60),3,2
  838.     D2=3
  839.   ELSEIF D2 >= (3/6) AND D2 < (4/6) THEN
  840.     CIRCLE(55,52),3,2:CIRCLE(15,68),3,2
  841.     CIRCLE(15,52),3,2:CIRCLE(55,68),3,2:D2=4
  842.   ELSEIF D2 >= (4/6) AND D2 < (5/6) THEN
  843.     CIRCLE(55,52),3,2:CIRCLE(15,68),3,2
  844.     CIRCLE(15,52),3,2:CIRCLE(55,68),3,2
  845.     CIRCLE(35,60),3,2:D2=5
  846.   ELSE
  847.     CIRCLE(55,52),3,2:CIRCLE(15,68),3,2
  848.     CIRCLE(15,52),3,2:CIRCLE(55,68),3,2
  849.     CIRCLE(15,60),3,2:CIRCLE(55,60),3,2:D2=6
  850.   END IF
  851.   NEXT J
  852. END SUB
  853.  
  854. SUB STRAT0(ITURN,OCFLAG(1),BUMPFLAG(1),MOVE(1),BARW,CHNGFLAG,MVSTAT$) STATIC
  855. SHARED ROLL,DUMPW
  856.   MVSTAT$ = "N" : ROLL(1)=0 : ROLL(2)=0
  857.   FOR J = ITURN TO 2
  858.     DUMPW1=0
  859.     FOR I = 1 TO 24
  860.       IF OCFLAG(I) = 1 OR BUMPFLAG(I)=1 THEN
  861.         SPOT = I + MOVE(J)
  862.         IF (SPOT) < 25 THEN
  863.           DUMPW1=1
  864.           IF OCFLAG(SPOT) <> 0 THEN ROLL(J) = ROLL(J)+1:MVSTAT$="Y"
  865.         ELSEIF SPOT=25 AND DUMPW=0 THEN
  866.           ROLL(J) = ROLL(J)+1
  867.           MVSTAT$="Y"
  868.           DUMPW1=1
  869.         ELSE
  870.           IF DUMPW1 = 0 THEN
  871.             ROLL(J) = ROLL(J)+1
  872.             MVSTAT$="Y"
  873.           END IF
  874.         END IF
  875.       END IF
  876.     NEXT I
  877.     IF BARW > 0 THEN
  878.       IF OCFLAG(MOVE(J)) <> 0 THEN 
  879.         MVSTAT$="Y"
  880.       END IF
  881.     END IF
  882.   NEXT J
  883.   IF MVSTAT$="N" THEN
  884.     SAY TRANSLATE$("I DETEHRMINE THAT YOU CAN'T MOVE")
  885.     EXIT SUB
  886.   END IF
  887.   IF ITURN <> 2 THEN
  888.     IF ROLL(1) = 0 AND BARW = 0 THEN
  889.       SAY TRANSLATE$("YOU CAN'T MOVE WITH THAT DIE YET, SELECT THE OTHER")
  890.       CHNGFLAG = 1
  891.     END IF
  892.   END IF
  893. END SUB 
  894.  
  895. SUB STRAT1(ITURN,OCFLAG(1),BUMPFLAG(1),MOVE(1),MVSTAT$,RATE(2),PT) STATIC
  896. SHARED ROLL,DUMPW,BARW,BARB,DUMPB,NUMPIECE(),MOVEFLAG()
  897. DEFINT B
  898.  
  899.   FOR I = 1 TO 24
  900.     MOVEFLAG(I)=0
  901.   NEXT I
  902.   MVSTAT$ = "N" : ROLL(1)=0 : ROLL(2)=0 
  903.   FOR J = ITURN TO 2
  904.     DUMPW1=0
  905.      FOR I = 1 TO 24
  906.       RATE(J,I)=0
  907.       IF OCFLAG(I)=1 OR BUMPFLAG(I)=1 OR (J=2 AND MOVEFLAG(I)=1) THEN
  908.         SPOT = I + MOVE(J)
  909.         IF (SPOT) < 25 THEN
  910.           DUMPW1=1
  911.           IF OCFLAG(SPOT) = 2 THEN
  912.             RATE(J,I)=1
  913.             MVSTAT$="Y"
  914.             IF J=1 THEN MOVEFLAG(SPOT)=1
  915.             IF NUMPIECE(I) > 2 THEN RATE(J,I)=3
  916.             IF SPOT > 18 AND BARB > 0 THEN RATE(J,I)=0
  917.             IF BUMPFLAG(I)=1 THEN RATE(J,I)=5
  918.             IF SPOT = 18 OR SPOT = 20 THEN RATE(J,I)=6
  919.             IF DUMPB = 0 AND SPOT < 19 THEN RATE(J,I)=10
  920.           END IF
  921.           IF OCFLAG(SPOT) = 1 THEN
  922.             RATE(J,I)=2
  923.             MVSTAT$="Y"
  924.             IF J=1 THEN MOVEFLAG(SPOT)=1
  925.             IF NUMPIECE(I) > 2 THEN RATE(J,I)=4
  926.             IF BUMPFLAG(I)=1 THEN RATE(J,I)=7
  927.           END IF        
  928.           IF BUMPFLAG(SPOT) = 0 THEN
  929.             RATE(J,I)=5
  930.             MVSTAT$="Y"
  931.             IF J=1 THEN MOVEFLAG(SPOT)=1
  932.             IF SPOT = 18 OR SPOT = 20 THEN RATE(J,I)=6
  933.             IF SPOT < 6 THEN RATE(J,I)=6
  934.           END IF  
  935.           IF BUMPFLAG(SPOT) = 1 THEN
  936.             RATE(J,I)=9
  937.             MVSTAT$="Y"
  938.             IF J=1 THEN MOVEFLAG(SPOT)=1
  939.             IF SPOT >= 18 THEN RATE(J,I)=10
  940.           END IF
  941.         END IF  
  942.         IF SPOT=25 AND DUMPW=0 THEN
  943.           RATE(J,I)=11
  944.           MVSTAT$="Y"
  945.           DUMPW1=1
  946.           IF DUMPB = 0 THEN RATE(J,I)=20
  947.         END IF
  948.         IF SPOT>25 AND DUMPW=0 THEN
  949.           IF DUMPW1 = 0 THEN
  950.             RATE(J,I)=11
  951.             MVSTAT$="Y"
  952.             IF DUMPB = 0 THEN RATE(J,I)=20
  953.           END IF
  954.         END IF
  955.       END IF
  956.       IF J=2 AND MOVEFLAG(I)=1 THEN
  957.         RATE(1,I-MOVE(1)) = RATE(2,I)
  958.       END IF
  959.     NEXT I
  960.   NEXT J
  961.  
  962.   J=ITURN  
  963.   IF BARW > 0 THEN
  964.     IF OCFLAG(MOVE(J)) <> 0 THEN
  965.       MVSTAT$="Y"
  966.       RATE(J,0)=50
  967.       IF BUMPFLAG(MOVE(J))=0 THEN RATE(J,0)=75
  968.       IF BUMPFLAG(MOVE(J))=1 THEN RATE(J,0)=100
  969.     ELSE
  970.       MVSTAT$="N"
  971.     END IF
  972.     IF J=1 THEN
  973.       J=2
  974.       IF OCFLAG(MOVE(J)) <> 0 THEN
  975.         MVSTAT$="Y"
  976.         RATE(J,0)=50
  977.        IF BUMPFLAG(MOVE(J))=0 THEN RATE(J,0)=75
  978.        IF BUMPFLAG(MOVE(J))=1 THEN RATE(J,0)=100
  979.       ELSE
  980.         IF MVSTAT$ <> "Y" THEN MVSTAT$="N"
  981.       END IF
  982.     END IF
  983.   ELSE
  984.     FOR JZ = J TO 2
  985.       RATE(JZ,0)=0
  986.     NEXT JZ
  987.   END IF
  988.  
  989.   IF MVSTAT$="N" THEN
  990.     EXIT SUB
  991.   END IF
  992.  
  993.   ' PICK POINT ON WHICH TO MOVE A PIECE
  994.   PT = 0:MAXRATE=0:DIE=0
  995.   FOR JJ = ITURN TO 2
  996.     FOR I = 1 TO 24
  997.       IF OCFLAG(I)=1 OR BUMPFLAG(I)=1 THEN
  998.         IF RATE(JJ,I) > MAXRATE THEN
  999.           MAXRATE=RATE(JJ,I)
  1000.           PT=I:DIE=JJ
  1001.         END IF
  1002.       END IF
  1003.     NEXT I
  1004.     IF BARW > 0 THEN
  1005.       IF RATE(JJ,0) > MAXRATE THEN
  1006.         MAXRATE=RATE(JJ,0)
  1007.         PT=0:DIE=JJ
  1008.       END IF
  1009.     END IF
  1010.   NEXT JJ
  1011.  
  1012.   IF MOVE(1) <> MOVE(2) AND ITURN = 1 THEN
  1013.     IF DIE = 2 THEN
  1014.       SAY TRANSLATE$("I AM USING DIE 2 FIRST ")
  1015.       TEMP=MOVE(1)
  1016.       MOVE(1)=MOVE(2)
  1017.       MOVE(2)=TEMP
  1018.     END IF
  1019.   END IF
  1020.       
  1021.   IF RATE(DIE,0) = 100 THEN PT=0
  1022.   
  1023. END SUB 
  1024.  
  1025.