10 REM Roul3 20 REM by Graham Kendall 30 : 40 GOSUB 150 :REM Init_1 Procedure 50 WHILE NEWGAME% = 0 60 GOSUB 290 :REM Init_2 Routine 70 GOSUB 460 :REM Game Control Routine 80 GOSUB 730 :REM Print Routine 90 GOSUB 1040 :REM Print Stats_1 Routine 100 GOSUB 1340 :REM Print Stats_2 Routine 110 GOSUB 7000 : REM Ask Question Routine 120 WEND 130 END 140 : 150 REM Init_1 Routine 160 DIM TABLE$(36,3), BET$(3), STATS1%(36), STATS2%(36), COLUMNS%(3), DOZENS%(3), SCREEN1$(13) 170 FOR I%=0 TO 36 180 FOR P%=1 TO 3 190 READ TABLE$(I%,P%) 200 NEXT P%,I% 210 FOR I%=1 TO 13 220 READ SCREEN1$(I%) 230 SCREEN1$(I%) = LEFT$(SCREEN1$(I%) + STRING$(40," "),40) 240 NEXT I% 250 HEAD1$ = LEFT$("NO. Times Appeared" + STRING$(27," "),27) 260 HEAD2$ = LEFT$("NO. Times Backed" + STRING$(29," "),29) 270 RETURN 280 : 290 REM Init_2 Routine 300 RED% = 0:BLACK% = 0:NULLBETS% = 0:NOOFBETS% = 0:MONEY% = 0:NOTOBACK% = 0:WINS% = 0:LOSSES% = 0:NOOFSPINS% = -1 310 FOR I% = 0 TO 36:STATS1%(I%) = 0:STATS2%(I%) = 0:NEXT I% 320 FOR I% = 1 TO 3:COLUMNS%(I%) = 0:DOZENS%(I%)=0:NEXT I% 330 GOSUB 360 :REM Number of Spins Routine 340 RETURN 350 : 360 REM Number of Spins Routine 370 WHILE (NOOFSPINS% < 1) OR (NOOFSPINS% > 5000) 380 CLS:GOSUB 6500 :REM Print Heading Routine 390 TEXT$ = "How many Spins would you like the wheel to make (1 - 5000)" 400 DOWN% = 10 410 GOSUB 5000 :REM Centre Text Routine 420 INPUT NOOFSPINS% 430 WEND 440 RETURN 450 : 460 REM Game Control Routine 470 FOR SPINCNT%=1 TO NOOFSPINS% 480 IF SPINCNT% = INT(SPINCNT%/50)*50 THEN TEXT$ = "Up to Spin " + STR$(SPINCNT%):DOWN% =20:GOSUB 5000 :REM Centre Text Routine 490 GOSUB 640 :REM Pick Number Routine 500 IF NOTOBACK%<>-1 THEN MONEY%=MONEY%-10 510 GOSUB 7500 :REM Random Number Routine 520 IF NUM%=NOTOBACK% THEN MONEY%=MONEY%+360:WINS%=WINS%+1 530 IF NOTOBACK%<>-1 AND NUM%<>NOTOBACK% THEN LOSSES%=LOSSES%+1 540 STATS1%(NUM%)=STATS1%(NUM%)+1 550 IF NOTOBACK%<>-1 THEN STATS2%(NOTOBACK%)=STATS2%(NOTOBACK%)+1 560 IF NOTOBACK%=-1 THEN NULLBETS% = NULLBETS%+1 ELSE NOOFBETS%=NOOFBETS%+1 570 IF TABLE$(NUM%,1) = "B" THEN BLACK%=BLACK%+1 580 IF TABLE$(NUM%,1) = "R" THEN RED%=RED%+1 590 COLUMNS%(VAL(TABLE$(NUM%,2))) = COLUMNS%(VAL(TABLE$(NUM%,2))) +1 600 DOZENS%(VAL(TABLE$(NUM%,3))) = DOZENS%(VAL(TABLE$(NUM%,3))) +1 610 NEXT SPINCNT% 620 RETURN 630 : 640 REM Pick Number Routine 650 GOSUB 1620 :REM What Colour Routine 660 GOSUB 1680 :REM What Column Routine 670 GOSUB 1760 :REM What Dozen Routine 680 FOR I%=1 TO 36 690 IF BET$(1) ="" OR BET$(2)="" OR BET$(3)="" THEN I%=36 700 IF TABLE$(I%,1) = BET$(1) AND TABLE$(I%,2) = BET$(2) AND TABLE$(I%,3) = BET$(3) THEN NOTOBACK% = I% ELSE NOTOBACK%=-1 710 IF NOTOBACK%<>-1 THEN I%=36 720 NEXT I%:RETURN 730 : 740 REM Print Routine 750 CLS:GOSUB 6500 :REM Print Heading Routine 760 TEXT$ = "Results":DOWN% = 4 770 GOSUB 5000 :REM Centre Text Routine 780 ACROSS% = 15 :REM Used for rest of o/p in this routine 790 TEXT$ = SCREEN1$(1) + STR$(RED%):DOWN% = 5 800 GOSUB 5500 :REM Print Text Routine 810 TEXT$ = SCREEN1$(2) + STR$(BLACK%):DOWN% = 6 820 GOSUB 5500 :REM Print Text Routine 830 FOR N% = 1 TO 3 840 TEXT$ = SCREEN1$(N%+2) + STR$(COLUMNS%(N%)):DOWN% = N%+7 850 GOSUB 5500 :REM Print Text Routine 860 NEXT N% 870 FOR N% = 1 TO 3 880 TEXT$ = SCREEN1$(N%+5) + STR$(DOZENS%(N%)):DOWN% = N%+11 890 GOSUB 5500 :REM Print Text Routine 900 NEXT N% 910 TEXT$ = SCREEN1$(9) + STR$(NOOFBETS%):DOWN% = 16 920 GOSUB 5500 :REM Print Text Routine 930 TEXT$ = SCREEN1$(10) + STR$(NULLBETS%):DOWN% = 17 940 GOSUB 5500 :REM Print Text Routine 950 TEXT$ = SCREEN1$(11) + STR$(MONEY%):DOWN% = 18 960 GOSUB 5500 :REM Print Text Routine 970 TEXT$ = SCREEN1$(12) + STR$(WINS%):DOWN% = 19 980 GOSUB 5500 :REM Print Text Routine 990 TEXT$ = SCREEN1$(13) + STR$(LOSSES%):DOWN% = 20 1000 GOSUB 5500 :REM Print Text Routine 1010 GOSUB 6000 :REM Press Space Routine 1020 RETURN 1030 : 1040 REM Print Stats_1 Routine 1050 CLS:GOSUB 6500 :REM Print Heading Routine 1060 TEXT$ = "Breakdown of numbers that appeared":DOWN% = 4 1070 GOSUB 5000 :REM Centre Text Routine 1080 TEXT$ = "========= == ======= ==== ========":DOWN% = 5 1090 GOSUB 5000 :REM Centre Text Routine 1100 TEXT$ = "Zero showed " + STR$(STATS1%(0)) + " times":DOWN% = 6 1110 GOSUB 5000 :REM Centre Text Routine 1120 TEXT$ = "" 1130 FOR N% = 1 TO 3 1140 TEXT$ = TEXT$ + HEAD1$ 1150 NEXT N% 1160 DOWN% = 7:ACROSS% = 2 1170 GOSUB 5500 :REM Print Text Routine 1180 M% = 8 1190 ACROSS% = 1 :REM Used for all prints in this routine 1200 FOR N% = 1 TO 36 STEP 3 1210 TEXT$ = "" 1220 M% = M% +1:R% = N% 1230 FOR P% = 1 TO 3 1240 TEXT$ = TEXT$ + LEFT$(STR$(R%) + STRING$(10," "),10) 1250 TEXT$ = TEXT$ + LEFT$(STR$(STATS1%(R%)) + STRING$(17," "),17) 1260 R% = R% +1 1270 NEXT P% 1280 DOWN% = M% 1290 GOSUB 5500 :REM Print Text Routine 1300 NEXT N% 1310 GOSUB 6000 :REM Press Space Routine 1320 RETURN 1330 : 1340 REM Print Stats_2 Routine 1350 CLS:GOSUB 6500 :REM Print Heading Routine 1360 TEXT$ = "Numbers that were bet upon":DOWN% = 4 1370 GOSUB 5000 :REM Centre Text Routine 1380 TEXT$ = "======= ==== ==== === ====":DOWN% = 5 1390 GOSUB 5000 :REM Centre Text Routine 1400 TEXT$ = "" 1410 FOR N% = 1 TO 3 1420 TEXT$ = TEXT$ + HEAD2$ 1430 NEXT N% 1440 DOWN% = 7:ACROSS% = 2 1450 GOSUB 5500 :REM Print Text Routine 1460 M% = 8 1470 ACROSS% = 1 :REM Used for all prints in this routine 1480 FOR N% = 1 TO 36 STEP 3 1490 TEXT$ = "" 1500 M% = M% +1:R% = N% 1510 FOR P% = 1 TO 3 1520 TEXT$ = TEXT$ + LEFT$(STR$(R%) + STRING$(8," "),8) 1530 TEXT$ = TEXT$ + LEFT$(STR$(STATS2%(R%)) + STRING$(21," "),21) 1540 R% = R% +1 1550 NEXT P% 1560 DOWN% = M% 1570 GOSUB 5500 :REM Print Text Routine 1580 NEXT N% 1590 GOSUB 6000 :REM Press Space Routine 1600 RETURN 1610 : 1620 REM What Colour Routine 1630 BET$(1) = "" 1640 IF RED% < BLACK% THEN BET$(1)="R" 1650 IF BLACK% < RED% THEN BET$(1)="B" 1660 RETURN 1670 : 1680 REM What Column Routine 1690 IND%=0 1700 IF COLUMNS%(1) < COLUMNS%(2) AND COLUMNS%(1) < COLUMNS%(3) THEN IND%=1 1710 IF COLUMNS%(2) < COLUMNS%(1) AND COLUMNS%(2) < COLUMNS%(3) THEN IND%=2 1720 IF COLUMNS%(3) < COLUMNS%(1) AND COLUMNS%(3) < COLUMNS%(2) THEN IND%=3 1730 IF IND% = 0 THEN BET$(2) = "" ELSE BET$(2) = RIGHT$(STR$(IND%),1) 1740 RETURN 1750 : 1760 REM What Dozen Routine 1770 IND%=0 1780 IF DOZENS%(1) < DOZENS%(2) AND DOZENS%(1) < DOZENS%(3) THEN IND%=1 1790 IF DOZENS%(2) < DOZENS%(1) AND DOZENS%(2) < DOZENS%(3) THEN IND%=2 1800 IF DOZENS%(3) < DOZENS%(1) AND DOZENS%(3) < DOZENS%(2) THEN IND%=3 1810 IF IND% = 0 THEN BET$(3) = "" ELSE BET$(3) = RIGHT$(STR$(IND%),1) 1820 RETURN 1830 : 5000 REM Print Centred Text Routine 5010 PRINT CHR$(11) 5020 FOR I% = 1 TO DOWN% -1:PRINT CHR$(10);:NEXT 5030 ACROSS% = (79-LEN(TEXT$))/2 5040 PRINT TAB(ACROSS%);TEXT$ 5050 RETURN 5060 : 5500 REM Print Text on Screen Routine 5510 PRINT CHR$(11) 5520 FOR I% = 1 TO DOWN% -1:PRINT CHR$(10);:NEXT 5530 PRINT TAB(ACROSS%);TEXT$ 5540 RETURN 5550 : 6000 REM Press Space Routine 6010 TEXT$ = "Press Space to Continue" 6020 DOWN% = 22:GOSUB 5000 : REM Centre Text Routine 6030 WHILE INKEY$ <> " " 6040 WEND 6050 RETURN 6060 : 6500 REM Print Heading Routine 6510 TEXT$ = "Roulette Program 3" 6520 DOWN% = 2:GOSUB 5000 : REM Centre Text Routine 6530 RETURN 6540 : 7000 REM Ask Question Routine 7010 A% = 0 7020 WHILE A% = 0:CLS:GOSUB 6500 :REM Print Heading Routine 7030 TEXT$ = "Do you want to play again?" 7040 DOWN% = 10:GOSUB 5000 :REM Centre Text Routine 7050 A$ = "" 7060 WHILE INSTR(" YyNn",A$) <2 7070 A$=INKEY$ 7080 WEND 7090 A%=INSTR("YyNn",A$) 7100 WEND 7110 IF A%=3 OR A%=4 THEN NEWGAME% = -1 7120 RETURN 7130 : 7500 REM Random Number Routine 7510 RANDOMIZE TIMER 7520 NUM% = INT(RND*(36+1)) 7530 RETURN 7540 : 7550 REM Data to show colour, column and dozen for each number 7560 DATA 0,0,0 7570 DATA R,1,1,B,2,1,R,3,1,B,1,1,R,2,1,B,3,1 7580 DATA R,1,1,B,2,1,R,3,1,B,1,1,B,2,1,R,3,1 7590 DATA B,1,2,R,2,2,B,3,2,R,1,2,B,2,2,R,3,2 7600 DATA R,1,2,B,2,2,R,3,2,B,1,2,R,2,2,B,3,2 7610 DATA R,1,3,B,2,3,R,3,3,B,1,3,B,2,3,R,3,3 7620 DATA B,1,3,R,2,3,B,3,3,R,1,3,B,2,3,R,3,3 7630 : 7640 REM Headings on first analysis screen 7650 DATA "Reds","Blacks" 7660 DATA "First column","Second column","Third column" 7670 DATA "First dozen","Second dozen","Third dozen" 7680 DATA "Bets placed","Number of times no bet was placed" 7690 DATA "Money won/lost","Wins","Losses"