home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / games / darts.zip / DARTS.BAS next >
BASIC Source File  |  1987-02-16  |  31KB  |  987 lines

  1. ' $LINESIZE:132
  2. DARTS:
  3.     DIM PLAYER$(18),SCORE(18,20),NR.TURNS(18),NR.HITS(18),TEAM(18)
  4.     DIM STATUS$(20),TOTAL(10)
  5.     MASK1$="&'S DARTS SCORED ##.##% OF THE TIME."
  6.     MASK2$="& AVERAGED ##.# POINTS PER DART."
  7.     MASK3$="& AVERAGED #.# RUNS PER INNING."
  8.     MASK4$="YOU HIT #.## TARGETS PER TURN."
  9.     MASK5$="YOU AVERAGED ##.# DARTS FOR EACH TARGET."
  10.     MASK6$="YOUR AVERAGE FOR TODAY IS ###.##"
  11.     MASK7$="YOUR TOTAL FOR THIS ROUND IS ###.##"
  12.     MASK8$="YOUR TOTAL FOR ROUND ## WAS ###.##"
  13.     MASK9$="&'S CURRENT SCORE IS ##/51"
  14.     MASKA1$="┌────"
  15.     MASKA2$="┬───"
  16.     MASKB1$="│\  \│"
  17.     MASKB2$=" ! │"
  18.     MASKC1$="├────"
  19.     MASKC2$="┼───"
  20.     MASKD1$="└────"
  21.     MASKD2$="┴───"
  22.     MASKE$="       NR. STATUS    NR. STATUS"
  23.     MASKF$="       ##: \    \    ##: \    \"
  24.     MASKG$="        AND BULLS ARE: \    \"
  25. '          "....V....1....V....2....V....3....V....4"
  26. '            PRINT MASKS USED IN BASEBALL & SHOVE YA' A PENNY
  27.     MASKH$="   ┌───┬───┬───┬───┬───┬───┬───┬───┬───┐"
  28.     MASKI$="   │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │"
  29.     MASKJ$="┌──┼───┼───┼───┼───┼───┼───┼───┼───┼───┤"
  30.     MASKK$="│_##│ # │ # │ # │ # │ # │ # │ # │ # │ # │"
  31.     MASKL$="├──┼───┼───┼───┼───┼───┼───┼───┼───┼───┤"
  32.     MASKM$="└──┴───┴───┴───┴───┴───┴───┴───┴───┴───┘"
  33. '            PRINT MASKS USED IN DOUBLE-DOWN
  34.     MASKN$="   ┌───┬───┬───┬───┬───┬───┬───┬───┬───┐"
  35.     MASKO$="   │ 1 │ 1 │ D │ 1 │ 1 │ T │ 1 │ 2 │ B │"
  36.     MASKP$="   │ 5 │ 6 │ O │ 7 │ 8 │ R │ 9 │ 0 │ U │"
  37.     MASKQ$="┌──┼───┼───┼───┼───┼───┼───┼───┼───┼───┤"
  38.     MASKR$="│_##│###│###│###│###│###│###│###│###│###│"
  39.     MASKS$="├──┼───┼───┼───┼───┼───┼───┼───┼───┼───┤"
  40.     MASKT$="└──┴───┴───┴───┴───┴───┴───┴───┴───┴───┘"
  41. '            PRINT MASK USED IN SHOVE YA' A PENNY
  42.     MASKU$="│_##│ ! │ ! │ ! │ ! │ ! │ ! │ ! │ ! │ ! │"
  43. '
  44. ' $PAGE
  45. '
  46.     WIDTH 40
  47. MAIN.MENU:
  48.     CLS
  49.     PRINT
  50.     PRINT "BOB'S SCOREKEEPER FOR DARTS"
  51.     PRINT
  52.     PRINT " 1. PLAY SOLITAIR"
  53.     PRINT " 2. PLAY RANDOM SOL."
  54.     PRINT " 3. PRACTICE"
  55.     PRINT " 4. PLAY 301"
  56.     PRINT " 5. PLAY CRICKET"
  57.     PRINT " 6. PLAY BASEBALL"
  58.     PRINT " 7. PLAY FIVES"
  59.     PRINT " 8. PLAY SHUTOUT"
  60.     PRINT " 9. PLAY KILLER"
  61.     PRINT "10. PLAY DOUBLE-DOWN"
  62.     PRINT "11. PLAY SHOVE YA' A PENNY"
  63.     PRINT
  64.     PRINT "99. EXIT PROGRAM"
  65.     PRINT
  66.     INPUT "ENTER YOUR SELECTION: ",SEL
  67.     ON SEL GOTO START.SOLITAIR, _
  68.                 START.RANDOM, _
  69.                 START.PRACTICE, _
  70.                 START.301, _
  71.                 START.CRICKET, _
  72.                 START.BASEBALL, _
  73.                 START.FIVES, _
  74.                 START.SHUTOUT, _
  75.                 START.KILLER, _
  76.                 START.DBLDOWN, _
  77.                 START.PENNY
  78.     IF SEL=99 THEN WIDTH 80: END
  79.     BEEP
  80.     GOTO MAIN.MENU
  81. '
  82. '------------------------------------------------------------------
  83. '
  84. ' $PAGE
  85. '
  86. START.SOLITAIR:
  87.     STATUS$(1)="BEHIND": STATUS$(2)="RIGHT ON ": STATUS$(3)="AHEAD"
  88.     SCORE=0
  89.     TOTAL=0
  90.     NUMBER=1
  91. '
  92.     PRINT
  93.     INPUT "ENTER YOUR GOAL (0-3) ",GOAL
  94.     IF GOAL < 0 OR GOAL > 3 THEN BEEP: GOTO START.SOLITAIR
  95.     PRINT
  96. '
  97. ENTER.SOL.HITS:
  98.     INPUT "HOW MANY HITS? ",HITS
  99.     PRINT
  100.     IF HITS > 3 THEN BEEP: GOTO ENTER.SOL.HITS
  101.     NUMBER=NUMBER+HITS
  102.     TOTAL=TOTAL+1
  103.     SCORE=SCORE+HITS-GOAL
  104.     IF NUMBER > 20 THEN GOTO END.SOLITAIR
  105.     PRINT "YOU ARE ";STATUS$(SGN(SCORE)+2);
  106.     IF SCORE <> 0 THEN PRINT " BY";ABS(SCORE) ELSE PRINT
  107.     PRINT
  108.     PRINT NUMBER;"IS THE NEXT TARGET."
  109.     PRINT
  110.     GOTO ENTER.SOL.HITS
  111. '
  112. END.SOLITAIR:
  113.     PRINT "YOU WERE ";STATUS$(SGN(SCORE)+2);
  114.     IF SCORE <> 0 THEN PRINT " BY";ABS(SCORE);
  115.     PRINT "AT THE END."
  116.     PRINT
  117.     PRINT USING MASK4$;NUMBER/TOTAL
  118.     PRINT
  119.     INPUT "ANOTHER GAME? (Y/N) ",ANS$
  120.     IF ANS$="Y" OR ANS$="y" THEN GOTO START.SOLITAIR
  121.     GOTO MAIN.MENU
  122. '
  123. '------------------------------------------------------------------
  124. '
  125. ' $PAGE
  126. '
  127. START.RANDOM:
  128.     STATUS$(1)="BEHIND": STATUS$(2)="RIGHT ON ": STATUS$(3)="AHEAD"
  129.     SCORE=0
  130.     TOTAL=0
  131.     LAST.TARGET=99
  132. '
  133.     PRINT
  134.     INPUT "ENTER YOUR GOAL (DARTS-PER-TARGET) ",GOAL
  135.     PRINT
  136. '
  137.     FOR ROUND=1 TO 20
  138. SELECT.TARGET:
  139.     RANDOMIZE TIMER
  140.     TARGET=INT(RND*20)
  141.     IF TARGET=LAST.TARGET THEN GOTO SELECT.TARGET
  142.     LAST.TARGET=TARGET
  143.     IF TARGET=0 THEN TARGET$=" A BULL" ELSE TARGET$=STR$(TARGET)
  144.     PRINT "YOUR TARGET IS NOW";TARGET$
  145. ENTER.RANDOM:
  146.     PRINT
  147.     INPUT "HOW MANY DARTS DID IT TAKE? ",SHOTS$
  148.     IF SHOTS$="" THEN BEEP: _
  149.        PRINT "YOU MUST ENTER A NUMBER!": _
  150.        GOTO ENTER.RANDOM
  151.     NUMBER=0
  152.     FOR COL=1 TO LEN(SHOTS$)
  153.         IF MID$(SHOTS$,COL,1)="0" THEN _
  154.            NUMBER=NUMBER+3 _
  155.           ELSE COL=LEN(SHOTS$)
  156.     NEXT COL
  157.     NUMBER=NUMBER+VAL(SHOTS$)
  158.     SCORE=SCORE+GOAL-NUMBER
  159.     TOTAL=TOTAL+NUMBER
  160.     PRINT
  161.     PRINT "YOU ARE ";STATUS$(SGN(SCORE)+2);
  162.     IF SCORE <> 0 THEN PRINT " BY";ABS(SCORE) ELSE PRINT
  163.     PRINT
  164.     NEXT ROUND
  165. '
  166. END.RANDOM:
  167.     PRINT
  168.     PRINT USING MASK5$;TOTAL/20
  169.     PRINT
  170.     INPUT "ANOTHER GAME? (Y/N) ",ANS$
  171.     IF ANS$="Y" OR ANS$="y" THEN GOTO START.RANDOM
  172.     GOTO MAIN.MENU
  173. '
  174. '------------------------------------------------------------------
  175. '
  176. ' $PAGE
  177. '
  178. START.PRACTICE:
  179.     FOR ROUND=1 TO 10
  180.         FOR DART=1 TO 5
  181.             SCORE(ROUND,DART)=0
  182.         NEXT DART
  183.         TOTAL(ROUND)=0
  184.     NEXT ROUND
  185.     '
  186.     FOR ROUND=1 TO 10
  187.       PRINT
  188.       PRINT "ROUND";ROUND
  189.       FOR DART=1 TO 5
  190.         INPUT "HOW MANY POINTS DID YOU SCORE? ",SCORE(ROUND,DART)
  191.       NEXT DART
  192.       FOR DART=1 TO 5
  193.         TOTAL(ROUND)=TOTAL(ROUND)+SCORE(ROUND,DART)
  194.       NEXT DART
  195.       PRINT USING MASK7$;TOTAL(ROUND)
  196.     NEXT ROUND
  197.     '
  198.     PRINT
  199.     TOTAL=0
  200.     FOR ROUND=1 TO 10
  201.       PRINT USING MASK8$;ROUND,TOTAL(ROUND)
  202.       TOTAL=TOTAL+TOTAL(ROUND)
  203.     NEXT ROUND
  204.     '
  205.     PRINT
  206.     PRINT USING MASK6$;TOTAL/10
  207.     PRINT
  208.     INPUT "PRESS RETURN FOR MAIN MENU...",RET$
  209.     GOTO MAIN.MENU
  210. '
  211. '------------------------------------------------------------------
  212. '
  213. ' $PAGE
  214. '
  215. START.301:
  216.     GOSUB GET.NAMES
  217.     FOR PLAYER=1 TO 18
  218.         SCORE(PLAYER,0)=301
  219.     NEXT PLAYER
  220.     TURN=0
  221. NEW.ROUND:
  222.     TURN=TURN+1
  223.     FOR PLAYER=1 TO NR.PLAYERS
  224.         GOSUB CHECK.FOR.TEAM
  225.         PRINT TEAM$;", YOU NEED";SCORE(TEAM,0);
  226.         IF  SCORE(TEAM,0) < 41 _
  227.         AND SCORE(TEAM,0)/2 = INT(SCORE(TEAM,0)/2) THEN _
  228.             PRINT " ( DOUBLE";SCORE(TEAM,0)/2;")" _
  229.           ELSE _
  230.             PRINT
  231.     NEXT PLAYER
  232.     PRINT
  233.     FOR PLAYER=1 TO 18
  234.         IF PLAYER$(PLAYER)="" THEN GOTO NEXT.301.PLAYER
  235.         GOSUB CHECK.FOR.TEAM
  236.         PRINT PLAYER$(PLAYER);
  237.         INPUT ", HOW MANY DID YOU GET? ",HITS
  238.         IF SCORE(TEAM,0)<HITS THEN _
  239.             PRINT PLAYER$(PLAYER);" BUSTS!": HITS=0
  240.         SCORE(TEAM,0)=SCORE(TEAM,0)-HITS
  241.         NR.HITS(PLAYER)=NR.HITS(PLAYER)+HITS
  242.         NR.TURNS(PLAYER)=NR.TURNS(PLAYER)+3
  243.         IF SCORE(TEAM,0)=0 THEN GOTO END.301
  244.         PRINT PLAYER$(PLAYER);", YOUR NEW SCORE IS";SCORE(TEAM,0)
  245.         PRINT
  246. NEXT.301.PLAYER:
  247.     NEXT PLAYER
  248.     GOTO NEW.ROUND
  249. '
  250. END.301:
  251.     PRINT
  252.     PRINT TEAM$;" WINS THE GAME IN";TURN;"TURNS!"
  253.     PRINT
  254.     FOR PLAYER=1 TO 18
  255.         IF PLAYER$(PLAYER)<>"" AND NR.HITS(PLAYER)<>0 THEN _
  256.         PRINT USING MASK2$; _
  257.                     PLAYER$(PLAYER);NR.HITS(PLAYER)/NR.TURNS(PLAYER)
  258.     NEXT PLAYER
  259.     PRINT
  260.     INPUT "ANOTHER GAME? (Y/N) ",ANS$
  261.     IF ANS$="Y" OR ANS$="y" THEN GOTO START.301
  262.     GOTO MAIN.MENU
  263. '
  264. '------------------------------------------------------------------
  265. '
  266. ' $PAGE
  267. '
  268. START.CRICKET:
  269.     GOSUB GET.NAMES
  270.     FOR PLAYER=1 TO 18
  271.         SCORE(PLAYER,0)=0
  272.         FOR NUMBER=15 TO 20
  273.             SCORE(PLAYER,NUMBER)=0
  274.         NEXT NUMBER
  275.     NEXT PLAYER
  276.     MASKA$=MASKA1$
  277.     MASKC$=MASKC1$
  278.     MASKD$=MASKD1$
  279.     FOR PLAYER=1 TO NR.PLAYERS
  280.         MASKA$=MASKA$+MASKA2$
  281.         MASKC$=MASKC$+MASKC2$
  282.         MASKD$=MASKD$+MASKD2$
  283.     NEXT PLAYER
  284.     MASKA$=MASKA$+"┐"
  285.     MASKC$=MASKC$+"┤"
  286.     MASKD$=MASKD$+"┘"
  287.     PADDING=(40-LEN(MASKA$))\2
  288.     MASKA$=STRING$(PADDING," ")+MASKA$
  289.     MASKB$=STRING$(PADDING," ")+MASKB1$
  290.     MASKC$=STRING$(PADDING," ")+MASKC$
  291.     MASKD$=STRING$(PADDING," ")+MASKD$
  292. NEW.ROUND.CRICKET:
  293.     FOR PLAYER=1 TO 18
  294.         IF PLAYER$(PLAYER)="" THEN GOTO NEXT.CRICKET.PLAYER
  295.         GOSUB CHECK.FOR.TEAM
  296.         GOSUB DISPLAY.CRICKET.BOARD
  297.         PRINT PLAYER$(PLAYER);", ";
  298.         LINE INPUT "WHAT DID YOU SHOOT? ",SHOTS$
  299.         NR.TURNS(PLAYER)=NR.TURNS(PLAYER)+3
  300.         PRINT
  301.         IF SHOTS$="" THEN GOTO NEXT.CRICKET.PLAYER
  302. GET.NEXT.CRICKET.SHOT:
  303.         COL=INSTR(SHOTS$,",")
  304.         IF COL=0 THEN SHOT$=SHOTS$: GOTO ADD.TO.CRICKET
  305.         SHOT$=LEFT$(SHOTS$,COL-1)
  306.         SHOTS$=MID$(SHOTS$,COL+1)
  307. ADD.TO.CRICKET:
  308.         IF LEFT$(SHOT$,1)="D" THEN HITS=2: SHOT$=MID$(SHOT$,2) _
  309.         ELSE _
  310.         IF LEFT$(SHOT$,1)="T" THEN HITS=3: SHOT$=MID$(SHOT$,2) _
  311.         ELSE HITS=1
  312.         NUMBER=VAL(SHOT$)
  313.         IF NUMBER > 14 AND NUMBER < 21 OR SHOT$="B" THEN _
  314.             GOTO VALID.CRICKET.SHOT
  315.         BEEP
  316.         PRINT "'";SHOT$;"' HAS BEEN DISCARDED, WHAT"
  317.         INPUT "SHOULD IT HAVE BEEN? ",SHOT$
  318.         PRINT
  319.         IF SHOT$="" THEN GOTO CHECK.CRICKET.COL
  320.         GOTO ADD.TO.CRICKET
  321. '
  322. VALID.CRICKET.SHOT:
  323.         SCORE(TEAM,NUMBER)=SCORE(TEAM,NUMBER)+HITS
  324.         IF SCORE(TEAM,NUMBER)>3 THEN SCORE(TEAM,NUMBER)=3
  325.         NR.HITS(PLAYER)=NR.HITS(PLAYER)+1
  326. '
  327. CHECK.CRICKET.COL:
  328.         IF COL <> 0 THEN GOTO GET.NEXT.CRICKET.SHOT
  329.         SCORE=0
  330.         FOR NUMBER=15 TO 20
  331.             SCORE=SCORE+SCORE(TEAM,NUMBER)
  332.         NEXT NUMBER
  333.         IF SCORE+SCORE(TEAM,0)=21 THEN GOTO END.CRICKET
  334. NEXT.CRICKET.PLAYER:
  335.     NEXT PLAYER
  336.     GOTO NEW.ROUND.CRICKET
  337. '
  338. END.CRICKET:
  339.     GOSUB DISPLAY.CRICKET.BOARD
  340.     IF INSTR(TEAM$,"&")=0 THEN WIN$="S" ELSE WIN$=""
  341.     PRINT
  342.     PRINT TEAM$;" WIN";WIN$;" THE GAME!"
  343.     PRINT
  344.     FOR PLAYER=1 TO 18
  345.         IF PLAYER$(PLAYER)<>"" AND NR.HITS(PLAYER)<>0 THEN _
  346.         PRINT USING MASK1$;PLAYER$(PLAYER); _
  347.               (NR.HITS(PLAYER)/NR.TURNS(PLAYER))*100
  348.     NEXT PLAYER
  349.     PRINT
  350.     INPUT "ANOTHER GAME? (Y/N) ",ANS$
  351.     IF ANS$="Y" OR ANS$="y" THEN GOTO START.CRICKET
  352.     GOTO MAIN.MENU
  353. '
  354. DISPLAY.CRICKET.BOARD:
  355.         CLS
  356.         PRINT
  357.         FOR PLAYER2=1 TO NR.PLAYERS
  358.             GOSUB CHECK.FOR.TEAM2
  359.             PRINT USING "_## IS &";PLAYER2;TEAM2$
  360.         NEXT PLAYER2
  361.         PRINT STRING$(PADDING+6," ");
  362.         FOR PLAYER2=1 TO NR.PLAYERS
  363.             PRINT PLAYER2;" ";
  364.         NEXT PLAYER2
  365.         PRINT MASKA$
  366.         FOR NUMBER=20 TO 15 STEP -1
  367.             PRINT USING MASKB$;STR$(NUMBER);
  368.             FOR PLAYER2=1 TO NR.PLAYERS
  369.                 PRINT USING MASKB2$; _
  370.                        MID$(" /X0",SCORE(PLAYER2,NUMBER)+1,1);
  371.             NEXT PLAYER2
  372.             PRINT
  373.             PRINT MASKC$
  374.         NEXT NUMBER
  375.             PRINT USING MASKB$;"BULL";
  376.             FOR PLAYER2=1 TO NR.PLAYERS
  377.                 PRINT USING MASKB2$;MID$(" /X0",SCORE(PLAYER2,0)+1,1);
  378.             NEXT PLAYER2
  379.             PRINT
  380.         PRINT MASKD$
  381.         RETURN
  382. '
  383. '------------------------------------------------------------------
  384. '
  385. ' $PAGE
  386. '
  387. START.BASEBALL:
  388.     HIGH.SCORE=0
  389.     GOSUB GET.NAMES
  390.     FOR INNING=1 TO 9
  391.         FOR PLAYER=1 TO NR.PLAYERS
  392.             SCORE(PLAYER,INNING)=0
  393.         NEXT PLAYER
  394.     NEXT INNING
  395.     FOR INNING=1 TO 9
  396.         GOSUB DISPLAY.BASEBALL.BOARD
  397.         PRINT
  398.         FOR PLAYER=1 TO NR.PLAYERS
  399.             PRINT PLAYER$(PLAYER);", YOU NOW HAVE";NR.HITS(PLAYER)
  400.             PRINT PLAYER$(PLAYER);
  401.             INPUT ", HOW MANY RUNS DID YOU GET? ",HITS
  402.             NR.TURNS(PLAYER)=NR.TURNS(PLAYER)+3
  403.             NR.HITS(PLAYER)=NR.HITS(PLAYER)+HITS
  404.             SCORE(PLAYER,INNING)=HITS
  405.             IF NR.HITS(PLAYER) > HIGH.SCORE THEN _
  406.                HIGH.PLAYER=PLAYER: HIGH.SCORE=NR.HITS(PLAYER)
  407.             PRINT
  408.         NEXT PLAYER
  409.     NEXT INNING
  410. '
  411. END.BASEBALL:
  412.     GOSUB DISPLAY.BASEBALL.BOARD
  413.     PRINT
  414.     PRINT PLAYER$(HIGH.PLAYER);" WINS THE GAME!"
  415.     PRINT
  416.     FOR PLAYER=1 TO NR.PLAYERS
  417.         PRINT USING MASK3$;PLAYER$(PLAYER);NR.HITS(PLAYER)/9
  418.     NEXT PLAYER
  419.     PRINT
  420.     INPUT "ANOTHER GAME? (Y/N) ",ANS$
  421.     IF ANS$="Y" OR ANS$="y" THEN GOTO START.BASEBALL
  422.     GOTO MAIN.MENU
  423. '
  424. DISPLAY.BASEBALL.BOARD:
  425.         CLS
  426.         PRINT "INNING:";INNING
  427.         PRINT
  428.         FOR PLAYER2=1 TO NR.PLAYERS
  429.             GOSUB CHECK.FOR.TEAM2
  430.             PRINT USING "_## IS &";PLAYER2;TEAM2$
  431.         NEXT PLAYER2
  432.         PRINT
  433.         PRINT MASKH$
  434.         PRINT MASKI$
  435.         PRINT MASKJ$
  436.         FOR PLAYER2=1 TO NR.PLAYERS
  437.             PRINT USING MASKK$;PLAYER2;SCORE(PLAYER2,1); _
  438.                         SCORE(PLAYER2,2);SCORE(PLAYER2,3); _
  439.                         SCORE(PLAYER2,4);SCORE(PLAYER2,5); _
  440.                         SCORE(PLAYER2,6);SCORE(PLAYER2,7); _
  441.                         SCORE(PLAYER2,8);SCORE(PLAYER2,9)
  442.             IF PLAYER2=NR.PLAYERS THEN _
  443.                PRINT MASKM$ ELSE PRINT MASKL$
  444.         NEXT PLAYER2
  445.         RETURN
  446. '
  447. '------------------------------------------------------------------
  448. '
  449. ' $PAGE
  450. '
  451. START.FIVES:
  452.     GOSUB GET.NAMES
  453. PLAY.FIVES:
  454.     CLS
  455.     PRINT
  456.     FOR PLAYER=1 TO NR.PLAYERS
  457.         GOSUB CHECK.FOR.TEAM
  458.         PRINT USING MASK9$;TEAM$;NR.HITS(PLAYER)
  459.     NEXT PLAYER
  460.     PRINT
  461.     FOR PLAYER=1 TO NR.PLAYERS
  462.         IF NR.HITS(PLAYER) > 38 THEN _
  463.            PRINT PLAYER$(PLAYER);", YOU NEED"; _
  464.                  (51-NR.HITS(PLAYER))*5;" POINTS."
  465.         PRINT PLAYER$(PLAYER);
  466.         INPUT ", HOW MANY POINTS DID YOU GET? ",SCORE
  467.         NR.TURNS(PLAYER)=NR.TURNS(PLAYER)+3
  468.         IF (SCORE MOD 5) <> 0 THEN _
  469.             PRINT "THAT IS NOT A MULTIPLE OF 5! NO SCORE.": _
  470.             GOTO NO.FIVES
  471.         IF NR.HITS(PLAYER)+(SCORE/5) > 51 THEN _
  472.             PRINT "THATS TOO MANY!": GOTO NO.FIVES
  473.         NR.HITS(PLAYER)=NR.HITS(PLAYER)+(SCORE/5)
  474.         IF NR.HITS(PLAYER)=51 THEN GOTO END.FIVES
  475. NO.FIVES:
  476.         PRINT PLAYER$(PLAYER);", YOU NOW HAVE";NR.HITS(PLAYER)
  477.         PRINT
  478.     NEXT PLAYER
  479.     GOTO PLAY.FIVES
  480. '
  481. END.FIVES:
  482.     PRINT
  483.     PRINT PLAYER$(PLAYER);" WINS THE GAME!"
  484.     PRINT
  485.     FOR PLAYER=1 TO NR.PLAYERS
  486.         PRINT USING MASK2$;PLAYER$(PLAYER); _
  487.                            (NR.HITS(PLAYER)*5)/NR.TURNS(PLAYER)
  488.     NEXT PLAYER
  489.     PRINT
  490.     INPUT "ANOTHER GAME? (Y/N) ",ANS$
  491.     IF ANS$="Y" OR ANS$="y" THEN GOTO START.FIVES
  492.     GOTO MAIN.MENU
  493. '
  494. '------------------------------------------------------------------
  495. '
  496. ' $PAGE
  497. '
  498. START.SHUTOUT:
  499.     PRINT
  500.     PRINT "'STOPPER(S)' GO FIRST,"
  501.     PRINT "'SCORER(S)' GO NEXT."
  502.     GOSUB GET.NAMES
  503.     FOR PLAYER=1 TO 18
  504.         STATUS$(0)="OPEN"
  505.         SCORE(PLAYER,0)=0
  506.         FOR NUMBER=1 TO 20
  507.             STATUS$(NUMBER)="OPEN"
  508.         NEXT NUMBER
  509.     NEXT PLAYER
  510. NEW.ROUND.SHUTOUT:
  511.     FOR PLAYER=1 TO 18
  512.         IF PLAYER$(PLAYER)="" THEN GOTO NEXT.SHUTOUT.PLAYER
  513.         GOSUB CHECK.FOR.TEAM
  514.         CLS
  515.         PRINT "      THE CURRENT STANDINGS ARE:"
  516.         PRINT MASKE$
  517.         FOR NUMBER=1 TO 10
  518.             PRINT USING MASKF$;NUMBER,STATUS$(NUMBER), _
  519.                             NUMBER+10,STATUS$(NUMBER+10)
  520.         NEXT NUMBER
  521.         PRINT USING MASKG$;STATUS$(0)
  522.         PRINT
  523.         IF INSTR(TEAM$,"&")=0 THEN HAVE$=" HAS" ELSE HAVE$=" HAVE"
  524.         IF (PLAYER MOD 2)=1 THEN _
  525.            PRINT TEAM$;HAVE$;NR.HITS(TEAM);"SHUTOUTS." _
  526.          ELSE _
  527.            PRINT TEAM$;HAVE$;NR.HITS(TEAM);"POINTS."
  528.         PRINT
  529.         PRINT PLAYER$(PLAYER);", ";
  530.         LINE INPUT "WHAT DID YOU SHOOT? ",SHOTS$
  531.         NR.TURNS(PLAYER)=NR.TURNS(PLAYER)+3
  532.         PRINT
  533.         IF SHOTS$="" THEN GOTO NEXT.SHUTOUT.PLAYER
  534. GET.NEXT.SHUTOUT.SHOT:
  535.         COL=INSTR(SHOTS$,",")
  536.         IF COL=0 THEN SHOT$=SHOTS$: GOTO ADD.TO.SHUTOUT
  537.         SHOT$=LEFT$(SHOTS$,COL-1)
  538.         SHOTS$=MID$(SHOTS$,COL+1)
  539. ADD.TO.SHUTOUT:
  540.         IF LEFT$(SHOT$,1)="D" THEN HITS=2: SHOT$=MID$(SHOT$,2) _
  541.         ELSE _
  542.         IF LEFT$(SHOT$,1)="T" THEN HITS=3: SHOT$=MID$(SHOT$,2) _
  543.         ELSE HITS=1
  544.         NUMBER=VAL(SHOT$)
  545.         IF NUMBER > 0 AND NUMBER < 21 OR SHOT$="B" THEN _
  546.             GOTO VALID.SHUTOUT.SHOT
  547.         BEEP
  548.         PRINT "'";SHOT$;"' HAS BEEN DISCARDED, WHAT"
  549.         INPUT "SHOULD IT HAVE BEEN? ",SHOT$
  550.         PRINT
  551.         IF SHOT$="" THEN GOTO CHECK.SHUTOUT.COL
  552.         GOTO ADD.TO.SHUTOUT
  553. '
  554. VALID.SHUTOUT.SHOT:
  555.         IF (PLAYER MOD 2)=1 THEN STATUS$(NUMBER)="CLOSED": _
  556.            NR.HITS(TEAM)=NR.HITS(TEAM)+1: _
  557.            SCORE(PLAYER,0)=SCORE(PLAYER,0)+1: _
  558.            GOTO CHECK.SHUTOUT.COL
  559.         IF STATUS$(NUMBER)="CLOSED" THEN _
  560.            GOTO CHECK.SHUTOUT.COL
  561.         IF NUMBER=0 THEN NUMBER=25
  562.         NR.HITS(TEAM)=NR.HITS(TEAM)+NUMBER*HITS
  563.         SCORE(PLAYER,0)=SCORE(PLAYER,0)+NUMBER*HITS
  564. CHECK.SHUTOUT.COL:
  565.         IF COL <> 0 THEN GOTO GET.NEXT.SHUTOUT.SHOT
  566.         FOR NUMBER=0 TO 20
  567.             IF STATUS$(NUMBER)="OPEN" THEN GOTO NEXT.SHUTOUT.PLAYER
  568.         NEXT NUMBER
  569.         GOTO END.SHUTOUT
  570. NEXT.SHUTOUT.PLAYER:
  571.     NEXT PLAYER
  572.     GOTO NEW.ROUND.SHUTOUT
  573. '
  574. END.SHUTOUT:
  575.         IF INSTR(TEAM$,"&")=0 THEN HAVE$=" HAS" ELSE HAVE$=" HAVE"
  576.     PRINT
  577.     PRINT TEAM$;HAVE$;" CLOSED THE BOARD!"
  578.     PRINT
  579.     FOR PLAYER=1 TO 18
  580.         TEAM=PLAYER: IF TEAM > NR.PLAYERS THEN TEAM=TEAM-NR.PLAYERS
  581.         IF PLAYER$(PLAYER)<>"" THEN _
  582.         IF (PLAYER MOD 2)=1 THEN _
  583.            PRINT USING MASK1$;PLAYER$(PLAYER); _
  584.                  (SCORE(PLAYER,0)/NR.TURNS(PLAYER))*100 _
  585.          ELSE _
  586.            PRINT USING MASK2$;PLAYER$(PLAYER); _
  587.                  SCORE(PLAYER,0)/(NR.TURNS(PLAYER)/3)
  588.     NEXT PLAYER
  589.     PRINT
  590.     INPUT "ANOTHER GAME? (Y/N) ",ANS$
  591.     IF ANS$="Y" OR ANS$="y" THEN GOTO START.SHUTOUT
  592.     GOTO MAIN.MENU
  593. '
  594. '------------------------------------------------------------------
  595. '
  596. ' $PAGE
  597. '
  598. START.KILLER:
  599.     GOSUB GET.NAMES
  600.     PRINT "ENTER THE NUMBER OF LIVES"
  601.     INPUT "FOR EACH PLAYER/TEAM: ",NR.LIVES
  602.     PRINT
  603.     FOR PLAYER=1 TO 18
  604.         SCORE(PLAYER,0)=0
  605.         FOR NUMBER=1 TO 20
  606.             SCORE(PLAYER,NUMBER)=NR.LIVES
  607.         NEXT NUMBER
  608.     NEXT PLAYER
  609. SHOOT.KILLER.TARGETS:
  610.     FOR PLAYER=1 TO NR.PLAYERS
  611.         GOSUB CHECK.FOR.TEAM
  612.         PRINT TEAM$;", ";
  613.         INPUT "WHAT IS YOUR TARGET? ",TARGET
  614.         PRINT
  615.         SCORE(TEAM,0)=TARGET
  616.     NEXT PLAYER
  617. NEW.ROUND.KILLER:
  618.     FOR PLAYER=1 TO 18
  619.         IF PLAYER$(PLAYER)="" THEN GOTO NEXT.KILLER.PLAYER
  620.         GOSUB CHECK.FOR.TEAM
  621.         TARGET=SCORE(TEAM,0)
  622.         IF SCORE(TEAM,TARGET)=0 THEN GOTO NEXT.KILLER.PLAYER
  623.         PRINT
  624.         FOR PLAYER2=1 TO NR.PLAYERS
  625.             GOSUB CHECK.FOR.TEAM2
  626.             NUMBER=SCORE(TEAM2,0)
  627.             IF SCORE(TEAM2,NUMBER)=0 THEN _
  628.                GOTO DISPLAY.NEXT.KILLER.PLAYER2
  629.             IF INSTR(TEAM2$,"&")=0 THEN HAVE$=" HAS" ELSE HAVE$=" HAVE"
  630.             IF SCORE(TEAM2,NUMBER)=1 THEN _
  631.                ONLY$=" ONLY": LIVES$="LIFE" _
  632.                ELSE ONLY$="": LIVES$="LIVES"
  633.             PRINT TEAM2$;" (";NUMBER;")"; _
  634.                   HAVE$;ONLY$;SCORE(TEAM2,NUMBER);LIVES$;" LEFT."
  635. DISPLAY.NEXT.KILLER.PLAYER2:
  636.         NEXT PLAYER2
  637.         PRINT
  638.         PRINT PLAYER$(PLAYER);", ";
  639.         LINE INPUT "WHAT DID YOU SHOOT? ",SHOTS$
  640.         NR.TURNS(PLAYER)=NR.TURNS(PLAYER)+3
  641.         PRINT
  642.         IF SHOTS$="" THEN GOTO NEXT.KILLER.PLAYER
  643. GET.NEXT.KILLER.SHOT:
  644.         COL=INSTR(SHOTS$,",")
  645.         IF COL=0 THEN SHOT$=SHOTS$: GOTO ADD.TO.KILLER
  646.         SHOT$=LEFT$(SHOTS$,COL-1)
  647.         SHOTS$=MID$(SHOTS$,COL+1)
  648. ADD.TO.KILLER:
  649.         IF LEFT$(SHOT$,1)="D" THEN HITS=2: SHOT$=MID$(SHOT$,2) _
  650.         ELSE _
  651.         IF LEFT$(SHOT$,1)="T" THEN HITS=3: SHOT$=MID$(SHOT$,2) _
  652.         ELSE HITS=1
  653.         NUMBER=VAL(SHOT$)
  654.         IF NUMBER > 0 AND NUMBER < 21 OR SHOT$="B" THEN _
  655.             GOTO VALID.KILLER.SHOT
  656.         BEEP
  657.         PRINT "'";SHOT$;"' HAS BEEN DISCARDED, WHAT"
  658.         INPUT "SHOULD IT HAVE BEEN? ",SHOT$
  659.         PRINT
  660.         IF SHOT$="" THEN GOTO CHECK.KILLER.COL
  661.         GOTO ADD.TO.KILLER
  662. '
  663. VALID.KILLER.SHOT:
  664.         FOR PLAYER2=1 TO NR.PLAYERS
  665.             IF SCORE(PLAYER2,0) <> NUMBER THEN GOTO NEXT.KILLER.PLAYER2
  666.             SCORE(PLAYER2,NUMBER)=SCORE(PLAYER2,NUMBER)-HITS
  667.             IF SCORE(PLAYER2,NUMBER)<0 THEN SCORE(PLAYER2,NUMBER)=0
  668.             NR.HITS(PLAYER)=NR.HITS(PLAYER)+1
  669. NEXT.KILLER.PLAYER2:
  670.         NEXT PLAYER2
  671. CHECK.KILLER.COL:
  672.         IF COL <> 0 THEN GOTO GET.NEXT.KILLER.SHOT
  673.         SCORE=0
  674.         FOR PLAYER2=1 TO NR.PLAYERS
  675.             NUMBER=SCORE(PLAYER2,0)
  676.             SCORE=SCORE+SCORE(PLAYER2,NUMBER)
  677.         NEXT PLAYER2
  678.         FOR PLAYER2=1 TO NR.PLAYERS
  679.             NUMBER=SCORE(PLAYER2,0)
  680.             IF SCORE(PLAYER2,NUMBER)=SCORE THEN _
  681.                PLAYER=PLAYER2: GOSUB CHECK.FOR.TEAM: _
  682.                GOTO END.KILLER
  683.         NEXT PLAYER2
  684. NEXT.KILLER.PLAYER:
  685.     NEXT PLAYER
  686.     GOTO NEW.ROUND.KILLER
  687. '
  688. END.KILLER:
  689.     IF INSTR(TEAM$,"&")=0 THEN WIN$="S" ELSE WIN$=""
  690.     PRINT
  691.     PRINT TEAM$;" WIN";WIN$;" THE GAME!"
  692.     PRINT
  693.     FOR PLAYER=1 TO 18
  694.         IF PLAYER$(PLAYER)<>"" AND NR.TURNS(PLAYER)<>0 THEN _
  695.         PRINT USING MASK1$;PLAYER$(PLAYER); _
  696.               (NR.HITS(PLAYER)/NR.TURNS(PLAYER))*100
  697.     NEXT PLAYER
  698.     PRINT
  699.     INPUT "ANOTHER GAME? (Y/N) ",ANS$
  700.     IF ANS$="Y" OR ANS$="y" THEN GOTO START.KILLER
  701.     GOTO MAIN.MENU
  702. '
  703. '------------------------------------------------------------------
  704. '
  705. ' $PAGE
  706. '
  707. START.DBLDOWN:
  708.     RESTORE
  709.     DATA "15's","16's","ANY DOUBLES","17's","18's"
  710.     DATA "ANY TRIPLES","19's","20's","BULLS"
  711. '
  712.     PRINT
  713.     GOSUB GET.NAMES
  714.     FOR PLAYER=1 TO 18
  715.         NR.HITS(PLAYER)=40
  716.         FOR NUMBER=0 TO 9
  717.             SCORE(PLAYER,NUMBER)=0
  718.         NEXT NUMBER
  719.     NEXT PLAYER
  720. NEW.ROUND.DBLDOWN:
  721.     FOR ROUND=1 TO 9
  722.         READ TARGET$
  723.         FOR PLAYER=1 TO 18
  724.             IF PLAYER$(PLAYER)="" THEN GOTO NEXT.DBLDOWN.PLAYER
  725.             GOSUB DISPLAY.DBLDOWN.BOARD
  726.             GOSUB CHECK.FOR.TEAM
  727.             PRINT
  728.             IF INSTR(TEAM$,"&")=0 THEN HAVE$=" HAS" ELSE HAVE$=" HAVE"
  729.             PRINT TEAM$;HAVE$;NR.HITS(TEAM);"POINTS."
  730.             PRINT PLAYER$(PLAYER);", ";
  731.             LINE INPUT "WHAT DID YOU SHOOT? ",SHOTS$
  732.             NR.TURNS(PLAYER)=NR.TURNS(PLAYER)+3
  733.             PRINT
  734.             IF SHOTS$ <> "" THEN GOTO GET.NEXT.DBLDOWN.SHOT
  735. '
  736.             HITS=NR.HITS(TEAM)/2
  737.             NR.HITS(TEAM)=NR.HITS(TEAM)\2
  738.             IF HITS <> NR.HITS(TEAM) THEN _
  739.                NR.HITS(TEAM)=NR.HITS(TEAM)+1
  740.             SCORE(PLAYER,ROUND)=NR.HITS(TEAM)
  741.             GOTO NEXT.DBLDOWN.PLAYER
  742. '
  743. GET.NEXT.DBLDOWN.SHOT:
  744.             COL=INSTR(SHOTS$,",")
  745.             IF COL=0 THEN SHOT$=SHOTS$: GOTO ADD.TO.DBLDOWN
  746.             SHOT$=LEFT$(SHOTS$,COL-1)
  747.             SHOTS$=MID$(SHOTS$,COL+1)
  748. ADD.TO.DBLDOWN:
  749.             IF LEFT$(SHOT$,1)="D" THEN HITS=2: SHOT$=MID$(SHOT$,2) _
  750.             ELSE _
  751.             IF LEFT$(SHOT$,1)="T" THEN HITS=3: SHOT$=MID$(SHOT$,2) _
  752.             ELSE HITS=1
  753.             NUMBER=VAL(SHOT$)
  754.             IF NUMBER > 0 AND NUMBER < 21 OR SHOT$="B" THEN _
  755.                 GOTO VALID.DBLDOWN.SHOT
  756.             BEEP
  757.             PRINT "'";SHOT$;"' HAS BEEN DISCARDED, WHAT"
  758.             INPUT "SHOULD IT HAVE BEEN? ",SHOT$
  759.             PRINT
  760.             IF SHOT$="" THEN GOTO CHECK.DBLDOWN.COL
  761.             GOTO ADD.TO.DBLDOWN
  762. '
  763. VALID.DBLDOWN.SHOT:
  764.             IF ROUND=3 AND HITS=2 THEN GOTO SCORE.DBLDOWN
  765.             IF ROUND=6 AND HITS=3 THEN GOTO SCORE.DBLDOWN
  766.             IF ROUND=9 AND NUMBER=0 THEN GOTO SCORE.DBLDOWN
  767.             IF NUMBER=VAL(TARGET$) THEN GOTO SCORE.DBLDOWN
  768.             GOTO CHECK.DBLDOWN.COL
  769. SCORE.DBLDOWN:
  770.             IF NUMBER=0 THEN NUMBER=25
  771.             NR.HITS(TEAM)=NR.HITS(TEAM)+NUMBER*HITS
  772.             SCORE(TEAM,ROUND)=NR.HITS(TEAM)
  773.             SCORE(PLAYER,0)=SCORE(PLAYER,0)+1
  774. CHECK.DBLDOWN.COL:
  775.             IF COL <> 0 THEN GOTO GET.NEXT.DBLDOWN.SHOT
  776. NEXT.DBLDOWN.PLAYER:
  777.         NEXT PLAYER
  778.     NEXT ROUND
  779. '
  780. END.DBLDOWN:
  781.     GOSUB DISPLAY.DBLDOWN.BOARD
  782.     PRINT
  783.     FOR PLAYER=1 TO 18
  784.         TEAM=PLAYER: IF TEAM > NR.PLAYERS THEN TEAM=TEAM-NR.PLAYERS
  785.         IF PLAYER$(PLAYER)<>"" THEN _
  786.            PRINT USING MASK1$;PLAYER$(PLAYER); _
  787.                  (SCORE(PLAYER,0)/NR.TURNS(PLAYER))*100
  788.     NEXT PLAYER
  789.     PRINT
  790.     INPUT "ANOTHER GAME? (Y/N) ",ANS$
  791.     IF ANS$="Y" OR ANS$="y" THEN GOTO START.DBLDOWN
  792.     GOTO MAIN.MENU
  793. '
  794. DISPLAY.DBLDOWN.BOARD:
  795.             CLS
  796.             PRINT "THE CURRENT TARGETS ARE ";TARGET$
  797.             PRINT
  798.             FOR PLAYER2=1 TO NR.PLAYERS
  799.                 GOSUB CHECK.FOR.TEAM2
  800.                 PRINT USING "_## IS &";PLAYER2;TEAM2$
  801.             NEXT PLAYER2
  802.             PRINT
  803.             PRINT MASKN$
  804.             PRINT MASKO$
  805.             PRINT MASKP$
  806.             PRINT MASKQ$
  807.             FOR PLAYER2=1 TO NR.PLAYERS
  808.                 PRINT USING MASKR$;PLAYER2;SCORE(PLAYER2,1); _
  809.                         SCORE(PLAYER2,2);SCORE(PLAYER2,3); _
  810.                         SCORE(PLAYER2,4);SCORE(PLAYER2,5); _
  811.                         SCORE(PLAYER2,6);SCORE(PLAYER2,7); _
  812.                         SCORE(PLAYER2,8);SCORE(PLAYER2,9)
  813.             IF PLAYER2=NR.PLAYERS THEN _
  814.                PRINT MASKT$ ELSE PRINT MASKS$
  815.             NEXT PLAYER2
  816.             RETURN
  817. '
  818. '------------------------------------------------------------------
  819. '
  820. ' $PAGE
  821. '
  822. START.PENNY:
  823.     GOSUB GET.NAMES
  824.     FOR PLAYER=1 TO 18
  825.         FOR NUMBER=0 TO 9
  826.             SCORE(PLAYER,NUMBER)=0
  827.         NEXT NUMBER
  828.     NEXT PLAYER
  829. NEW.ROUND.PENNY:
  830.     FOR PLAYER=1 TO 18
  831.         IF PLAYER$(PLAYER)="" THEN GOTO NEXT.PENNY.PLAYER
  832.         GOSUB CHECK.FOR.TEAM
  833.         GOSUB DISPLAY.PENNY.BOARD
  834.         PRINT
  835.         PRINT PLAYER$(PLAYER);", ";
  836.         LINE INPUT "WHAT DID YOU SHOOT? ",SHOTS$
  837.         NR.TURNS(PLAYER)=NR.TURNS(PLAYER)+3
  838.         PRINT
  839.         IF SHOTS$="" THEN GOTO NEXT.PENNY.PLAYER
  840. GET.NEXT.PENNY.SHOT:
  841.         COL=INSTR(SHOTS$,",")
  842.         IF COL=0 THEN SHOT$=SHOTS$: GOTO ADD.TO.PENNY
  843.         SHOT$=LEFT$(SHOTS$,COL-1)
  844.         SHOTS$=MID$(SHOTS$,COL+1)
  845. ADD.TO.PENNY:
  846.         IF LEFT$(SHOT$,1)="D" THEN HITS=2: SHOT$=MID$(SHOT$,2) _
  847.         ELSE _
  848.         IF LEFT$(SHOT$,1)="T" THEN HITS=3: SHOT$=MID$(SHOT$,2) _
  849.         ELSE HITS=1
  850.         NUMBER=VAL(SHOT$)
  851.         IF NUMBER > 0 AND NUMBER < 10 THEN _
  852.             GOTO VALID.PENNY.SHOT
  853.         BEEP
  854.         PRINT "'";SHOT$;"' HAS BEEN DISCARDED, WHAT"
  855.         INPUT "SHOULD IT HAVE BEEN? ",SHOT$
  856.         PRINT
  857.         IF SHOT$="" THEN GOTO CHECK.PENNY.COL
  858.         GOTO ADD.TO.PENNY
  859. '
  860. VALID.PENNY.SHOT:
  861.         START=TEAM
  862. NEXT.PENNY.LOOP:
  863.         FOR PLAYER2=START TO NR.PLAYERS
  864.             IF SCORE(PLAYER2,NUMBER) < 3 THEN _
  865.                SCORE(PLAYER2,NUMBER)=SCORE(PLAYER2,NUMBER)+HITS: _
  866.                HITS=0
  867.             IF SCORE(PLAYER2,NUMBER) > 3 THEN _
  868.                HITS=SCORE(PLAYER2,NUMBER)-3: _
  869.                SCORE(PLAYER2,NUMBER)=3
  870.             IF HITS=0 THEN _
  871.             NR.HITS(PLAYER)=NR.HITS(PLAYER)+1: _
  872.             GOTO CHECK.PENNY.COL
  873. NEXT.PENNY.PLAYER2:
  874.         NEXT PLAYER2
  875.         IF START <> 1 THEN _
  876.            START=1: GOTO NEXT.PENNY.LOOP
  877. CHECK.PENNY.COL:
  878.         IF COL <> 0 THEN GOTO GET.NEXT.PENNY.SHOT
  879.         SCORE=0
  880.         FOR NUMBER=1 TO 9
  881.             SCORE=SCORE+SCORE(TEAM,NUMBER)
  882.         NEXT NUMBER
  883.         IF SCORE+SCORE(TEAM,0)=27 THEN GOTO END.PENNY
  884. NEXT.PENNY.PLAYER:
  885.     NEXT PLAYER
  886.     GOTO NEW.ROUND.PENNY
  887. '
  888. END.PENNY:
  889.     GOSUB DISPLAY.PENNY.BOARD
  890.     IF INSTR(TEAM$,"&")=0 THEN WIN$="S" ELSE WIN$=""
  891.     PRINT
  892.     PRINT TEAM$;" WIN";WIN$;" THE GAME!"
  893.     PRINT
  894.     FOR PLAYER=1 TO 18
  895.         IF PLAYER$(PLAYER)<>"" THEN _
  896.         PRINT USING MASK1$;PLAYER$(PLAYER); _
  897.               (NR.HITS(PLAYER)/NR.TURNS(PLAYER))*100
  898.     NEXT PLAYER
  899.     PRINT
  900.     INPUT "ANOTHER GAME? (Y/N) ",ANS$
  901.     IF ANS$="Y" OR ANS$="y" THEN GOTO START.PENNY
  902.     GOTO MAIN.MENU
  903. '
  904. DISPLAY.PENNY.BOARD:
  905.         CLS
  906.         PRINT
  907.         FOR PLAYER2=1 TO NR.PLAYERS
  908.             GOSUB CHECK.FOR.TEAM2
  909.             PRINT USING "_## IS &";PLAYER2;TEAM2$
  910.         NEXT PLAYER2
  911.         PRINT
  912.         PRINT MASKH$
  913.         PRINT MASKI$
  914.         PRINT MASKJ$
  915.         FOR PLAYER2=1 TO NR.PLAYERS
  916.             PRINT USING MASKU$;PLAYER2; _
  917.                        MID$(" /X0",SCORE(PLAYER2,1)+1,1); _
  918.                        MID$(" /X0",SCORE(PLAYER2,2)+1,1); _
  919.                        MID$(" /X0",SCORE(PLAYER2,3)+1,1); _
  920.                        MID$(" /X0",SCORE(PLAYER2,4)+1,1); _
  921.                        MID$(" /X0",SCORE(PLAYER2,5)+1,1); _
  922.                        MID$(" /X0",SCORE(PLAYER2,6)+1,1); _
  923.                        MID$(" /X0",SCORE(PLAYER2,7)+1,1); _
  924.                        MID$(" /X0",SCORE(PLAYER2,8)+1,1); _
  925.                        MID$(" /X0",SCORE(PLAYER2,9)+1,1)
  926.             IF PLAYER2=NR.PLAYERS THEN _
  927.                PRINT MASKM$ ELSE PRINT MASKL$
  928.         NEXT PLAYER2
  929. '
  930.         RETURN
  931. '------------------------------------------------------------------
  932. '
  933. ' $PAGE
  934. '
  935. GET.NAMES:
  936.     FOR PLAYER=1 TO 18
  937.         PLAYER$(PLAYER)=""
  938.         NR.TURNS(PLAYER)=0
  939.         NR.HITS(PLAYER)=0
  940.         TEAM(PLAYER)=0
  941.     NEXT PLAYER
  942.     PRINT
  943.     INPUT "HOW MANY PLAYERS? ",NR.PLAYERS
  944.     PRINT
  945.     IF NR.PLAYERS<1 OR NR.PLAYERS>9 THEN GOTO GET.NAMES
  946.     FOR PLAYER=1 TO NR.PLAYERS
  947. ENTER.NAME:
  948.         PRINT "ENTER PLAYER #";MID$(STR$(PLAYER),2);
  949.         INPUT "'S NAME: ",PLAYER$(PLAYER)
  950.         IF PLAYER$(PLAYER)="" THEN BEEP: GOTO ENTER.NAME
  951.         IF INSTR(PLAYER$(PLAYER)," & ") > 0 THEN GOSUB SPLIT.TEAM
  952.         PRINT
  953.     NEXT PLAYER
  954.     RETURN
  955. '
  956. SPLIT.TEAM:
  957.     COL=INSTR(PLAYER$(PLAYER)," & ")
  958.     PLAYER$(NR.PLAYERS+PLAYER)=MID$(PLAYER$(PLAYER),COL+3)
  959.     PLAYER$(PLAYER)=LEFT$(PLAYER$(PLAYER),COL-1)
  960.     TEAM(PLAYER)=1
  961.     TEAM(NR.PLAYERS+PLAYER)=1
  962.     RETURN
  963. '
  964. CHECK.FOR.TEAM:
  965.     TEAM=PLAYER
  966.     TEAM$=PLAYER$(PLAYER)
  967.     IF TEAM(PLAYER)=0 THEN RETURN
  968.     IF PLAYER <= NR.PLAYERS THEN GOTO PLAYER.IS.CAPTAIN
  969.     TEAM=PLAYER-NR.PLAYERS
  970.     TEAM$=PLAYER$(TEAM)+" & "+PLAYER$(PLAYER)
  971.     RETURN
  972. PLAYER.IS.CAPTAIN:
  973.     TEAM$=PLAYER$(PLAYER)+" & "+PLAYER$(NR.PLAYERS+PLAYER)
  974.     RETURN
  975. '
  976. CHECK.FOR.TEAM2:
  977.     TEAM2=PLAYER2
  978.     TEAM2$=PLAYER$(PLAYER2)
  979.     IF TEAM(PLAYER2)=0 THEN RETURN
  980.     IF PLAYER2 <= NR.PLAYERS THEN GOTO PLAYER2.IS.CAPTAIN
  981.     TEAM2=PLAYER2-NR.PLAYERS
  982.     TEAM2$=PLAYER$(TEAM2)+" & "+PLAYER$(PLAYER2)
  983.     RETURN
  984. PLAYER2.IS.CAPTAIN:
  985.     TEAM2$=PLAYER$(PLAYER2)+" & "+PLAYER$(NR.PLAYERS+PLAYER2)
  986.     RETURN
  987.