10 REM Roul7 20 REM by Graham Kendall 30 : 40 GOSUB 120 :REM Init_1 Procedure 50 WHILE NEWGAME% = 0 60 GOSUB 220 :REM Init_2 Routine 70 GOSUB 760 :REM Game Control Routine 80 GOSUB 7000 : REM Ask Question Routine 90 WEND 100 END 110 : 120 REM Init_1 Routine 130 NPSIZE% = 100 140 DIM NOTEPAD%(6,NPSIZE%), NPCTRL%(6,3), COLOURS$(36), MONEY%(6), WINS%(6), LOSSES%(6), LIMITREACHED%(6), DESC$(6), LOSINGSEQ%(6), BIGBET%(6) 150 FOR I% = 0 TO 36: READ COLOURS$(I%): NEXT I% 160 FOR I% = 1 TO 6 170 READ DESC$(I%) 180 DESC$(I%) = LEFT$(DESC$(I%) + STRING$(10," "),10) 190 NEXT I% 200 RETURN 210 : 220 REM Init_2 Routine 230 NOOFSPINS% = 0: TABLELIMIT% = 0: TOTALMONEY% = 0: ZEROTOTAL% = 0 240 FOR INDEX% = 1 TO 6 250 GOSUB 670 :REM Reset Notepad Routine 260 MONEY%(INDEX%) = 0 270 WINS%(INDEX%) = 0 280 LOSSES%(INDEX%) = 0 290 LOSINGSEQ%(INDEX%) = 0 300 BIGBET%(INDEX%) = 0 310 REACHEDLIMIT%(INDEX%) = 0 320 NEXT INDEX% 330 GOSUB 380 :REM Number of Spins Routine 340 GOSUB 470 :REM Table Limit Routine 350 GOSUB 560 :REM Initial Screen Routine 360 RETURN 370 : 380 REM Number of Spins Routine 390 WHILE (NOOFSPINS% < 1) OR (NOOFSPINS% > 5000) 400 CLS:GOSUB 6500 :REM Print Heading Routine 410 TEXT$ = "How many Spins would you like the wheel to make (1 - 5000)" 420 DOWN% = 10:GOSUB 5010 :REM Centre Text Routine 430 INPUT NOOFSPINS% 440 WEND 450 RETURN 460 : 470 REM Table Limit Routine 480 WHILE (TABLELIMIT% < 31) OR (TABLELIMIT% > 1024) 490 CLS:GOSUB 6500 :REM Print Heading Routine 500 TEXT$ = "What would you like the Table Limit to be (31 - 1024)" 510 DOWN% = 10:GOSUB 5010 :REM Centre Text Routine 520 INPUT TABLELIMIT% 530 WEND 540 RETURN 550 : 560 REM Initial Screen Routine 570 CLS:GOSUB 6500 :REM Print Heading Routine 580 TEXT$ = "Table Limit is set at" + STR$(TABLELIMIT%) 590 DOWN% = 4:GOSUB 5010 :REM Centre Text Routine 600 TEXT$ = "" 610 FOR I% = 1 TO 6 620 TEXT$ = TEXT$ + DESC$(I%) 630 NEXT I% 640 DOWN% = 6:ACROSS% = 20:GOSUB 5500 :REM Print Text Routine 650 RETURN 660 : 670 REM Reset Notepad Routine 680 IF NPCTRL%(INDEX%,3) <1 THEN LOSINGSEQ%(INDEX%) = LOSINGSEQ%(INDEX%) +1 690 FOR R% = 1 TO 4:NOTEPAD%(INDEX%,R%) = R%:NEXT R% 700 FOR R% = 5 TO NPSIZE%:NOTEPAD%(INDEX%,R%) = -1:NEXT R% 710 NPCTRL%(INDEX%,1) = 1 :REM Ptr to first Num 720 NPCTRL%(INDEX%,2) = 4 :REM ptr to last Num 730 NPCTRL%(INDEX%,3) = 4 :REM How many uncrossed Nums 740 RETURN 750 : 760 REM Game Control Routine 770 FOR SPINCNT%=1 TO NOOFSPINS% 780 IF SPINCNT% = INT(SPINCNT%/20)*20 THEN TEXT$ = "Up to Spin " + STR$(SPINCNT%): DOWN% = 22: GOSUB 5010 :REM Centre Text Routine 790 GOSUB 7500 :REM Random Number Routine 800 IF NUM% = 0 THEN ZEROTOTAL% = ZEROTOTAL% +1 810 FOR I% = 1 TO 6:BETCTRL%(I%) = -1:NEXT I% 820 IF INT(NUM%/2)*2 = NUM% THEN BETCTRL%(1) = 0 ELSE BETCTRL%(2) = 0 :REM Odd or Even? 830 IF NUM% < 19 THEN BETCTRL%(3) = 0 ELSE BETCTRL%(4) = 0 :REM High or Low? 840 IF COLOURS$(NUM%) = "R" THEN BETCTRL%(5) = 0 ELSE BETCTRL%(6) = 0 :REM Red or Black? 850 IF NUM% = 0 THEN FOR I% = 1 TO 6:BETCTRL%(I%) = -1:NEXT I% 860 FOR INDEX% = 1 TO 6 870 BET% = NOTEPAD%(INDEX%,NPCTRL%(INDEX%,1)) + NOTEPAD%(INDEX%,NPCTRL%(INDEX%,2)) 880 IF BET% > BIGBET%(INDEX%) THEN BIGBET%(INDEX%) = BET% 890 IF BETCTRL%(INDEX%) = 0 THEN GOSUB 960 ELSE GOSUB 1050 :REM Call Win or Lose Routine 900 NEXT INDEX% 910 GOSUB 1230 :REM Update Screen Routine 920 NEXT SPINCNT% 930 GOSUB 6000 :REM Press Space Routine 940 RETURN 950 : 960 REM Win Routine 970 WINS%(INDEX%) = WINS%(INDEX%) +1 980 MONEY%(INDEX%) = MONEY%(INDEX%) + BET% 990 NPCTRL%(INDEX%,2) = NPCTRL%(INDEX%,2) +1 1000 NPCTRL%(INDEX%,3) = NPCTRL%(INDEX%,3) +1 1010 NOTEPAD%(INDEX%,NPCTRL%(INDEX%,2)) = BET% 1020 IF NOTEPAD%(INDEX%,NPCTRL%(INDEX%,1)) + NOTEPAD%(INDEX%,NPCTRL%(INDEX%,2)) > TABLELIMIT% THEN LIMITREACHED%(INDEX%) = LIMITREACHED%(INDEX%) +1:GOSUB 670 :REM Reset Notepad Routine 1030 RETURN 1040 : 1050 REM Lose Routine 1060 LOSSES%(INDEX%) = LOSSES%(INDEX%) +1 1070 MONEY%(INDEX%) = MONEY%(INDEX%) - BET% 1080 NOTEPAD%(INDEX%,NPCTRL%(INDEX%,1)) = 0 1090 NOTEPAD%(INDEX%,NPCTRL%(INDEX%,2)) = 0 1100 NPCTRL%(INDEX%,3) = NPCTRL%(INDEX%,3) -2 1110 IF NPCTRL%(INDEX%,3) <1 THEN GOSUB 670 ELSE GOSUB 1140 :REM Reset Notepad or Work out new Notepad Figures Routine 1120 RETURN 1130 : 1140 REM Work out new Notepad Figures 1150 T% = 1:S% = 1:NPCTRL%(INDEX%,3) = 0 1160 WHILE S% < 3 1170 IF NOTEPAD%(INDEX%,T%) > 0 THEN NPCTRL%(INDEX%,S%) = T% : NPCTRL%(INDEX%,3) = NPCTRL%(INDEX%,3) +1 : S%=2 1180 IF NOTEPAD%(INDEX%,T%) = -1 THEN S% = 3 1190 T% = T% +1 1200 WEND 1210 RETURN 1220 : 1230 REM Update Screen Routine 1240 TEXT$ = LEFT$("Wins" + STRING$(18," "),18) 1250 FOR I% = 1 TO 6 1260 TEXT$ = TEXT$ + LEFT$(STR$(WINS%(I%)) + STRING$(10," "),10) 1270 NEXT I% 1280 DOWN% = 7:ACROSS% = 0:GOSUB 5500 :REM Print Text Routine 1290 TEXT$ = LEFT$("Losses" + STRING$(18," "),18) 1300 FOR I% = 1 TO 6 1310 TEXT$ = TEXT$ + LEFT$(STR$(LOSSES%(I%)) + STRING$(10," "),10) 1320 NEXT I% 1330 DOWN% = 8:ACROSS% = 0:GOSUB 5500 :REM Print Text Routine 1340 TEXT$ = LEFT$("Limit Reached" + STRING$(18," "),18) 1350 FOR I% = 1 TO 6 1360 TEXT$ = TEXT$ + LEFT$(STR$(LIMITREACHED%(I%)) + STRING$(10," "),10) 1370 NEXT I% 1380 DOWN% = 10:ACROSS% = 0:GOSUB 5500 :REM Print Text Routine 1390 TEXT$ = LEFT$("Losing sequences" + STRING$(18," "),18) 1400 FOR I% = 1 TO 6 1410 TEXT$ = TEXT$ + LEFT$(STR$(LOSINGSEQ%(I%)) + STRING$(10," "),10) 1420 NEXT I% 1430 DOWN% = 11:ACROSS% = 0:GOSUB 5500 :REM Print Text Routine 1440 TEXT$ = LEFT$("Largest Bet" + STRING$(18," "),18) 1450 FOR I% = 1 TO 6 1460 TEXT$ = TEXT$ + LEFT$(STR$(BIGBET%(I%)) + STRING$(10," "),10) 1470 NEXT I% 1480 DOWN% = 12:ACROSS% = 0:GOSUB 5500 :REM Print Text Routine 1490 TEXT$ = LEFT$("No's on Notepad" + STRING$(18," "),18) 1500 FOR I% = 1 TO 6 1510 TEXT$ = TEXT$ + LEFT$(STR$(NPCTRL%(I%,3)) + STRING$(10," "),10) 1520 NEXT I% 1530 DOWN% = 13:ACROSS% = 0:GOSUB 5500 :REM Print Text Routine 1540 TEXT$ = LEFT$("Money" + STRING$(18," "),18) 1550 TOTALMONEY% = 0 1560 FOR I% = 1 TO 6 1570 TEXT$ = TEXT$ + LEFT$(STR$(MONEY%(I%)) + STRING$(10," "),10) 1580 TOTALMONEY% = TOTALMONEY% + MONEY%(I%) 1590 NEXT I% 1600 DOWN% = 15:ACROSS% = 0:GOSUB 5500 :REM Print Text Routine 1610 TEXT$ = LEFT$("Next Bet" + STRING$(18," "),18) 1620 FOR I% = 1 TO 6 1630 TEXT$ = TEXT$ + LEFT$(STR$(NOTEPAD%(I%,NPCTRL%(I%,1)) + NOTEPAD%(I%,NPCTRL%(I%,2))) + STRING$(10," "),10) 1640 NEXT I% 1650 DOWN% = 16:ACROSS% = 0:GOSUB 5500 :REM Print Text Routine 1660 TEXT$ = "Overall Bank Total = " + STR$(TOTALMONEY%) + STRING$(4," ") 1670 DOWN% = 18:GOSUB 5010 :REM Centre Text Routine 1680 TEXT$ = "Zero has showed" + STR$(ZEROTOTAL%) + " times" 1690 DOWN% = 20:GOSUB 5010 :REM Centre Text Routine 1700 RETURN 5000 : 5010 REM Print Centred Text Routine 5020 PRINT CHR$(11) 5030 FOR I% = 1 TO DOWN% -1:PRINT CHR$(10);:NEXT 5040 ACROSS% = (79-LEN(TEXT$))/2 5050 PRINT TAB(ACROSS%);TEXT$ 5060 RETURN 5070 : 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 5010 : REM Centre Text Routine 6030 WHILE INKEY$ <> " " 6040 WEND 6050 RETURN 6060 : 6500 REM Print Heading Routine 6510 TEXT$ = "Roulette Program 7" 6520 DOWN% = 2:GOSUB 5010 : 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 5010 :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 DATA X, R, B, R, B, R, B, R, B, R, B, B, R, B, R, B, R, B, R, R, B, R, B, R, B, R, B, R, B, B, R, B, R, B, R, B, R 7560 DATA "Even","Odd","Low","High","Red","Black"