100 REM << Lott-O-Luck >> written by: 105 REM Jim Pietrangelo / CIS 72737,370 110 REM Rev# 012489 115 REM All Rights Reserved 120 REM Released to the Public Domain. 125 ES$=CHR$(27):WB$=ES$+"p":BW$=ES$+"q":RA$=STRING$(6,154) 130 REM * OPENING SCREEN * 135 NM$="<< Lott-O-Luck >>" 140 X=3:MSG$="Music? (y/n)":CLS:GOSUB1190:GOSUB1210 145 KY$=INKEY$:IFKY$=""THEN145ELSEIFKY$="N"ORKY$="n"THENS=1ELSEIFKY$="Y"ORKY$="y"THEN150ELSE145 150 CL$=STRING$(40,32):FX$=STRING$(19,32):BDR$=STRING$(38,36) 155 CLS:PRINT@41,BDR$ 160 B$="$":L=1:R=38 165 FORX=2TO5 170 PRINT@40*X+L,B$:PRINT@40*X+R,B$ 175 NEXTX 180 PRINT@241,BDR$; 185 X=3:MSG$=NM$:GOSUB1190:GOSUB1215 190 X=4:MSG$="* Jim Pietrangelo - 01/23/89 *":GOSUB1190:GOSUB1210:GOSUB1135:IFS=1THENGOSUB1200 195 GOTO200 200 REM * COMPUTE TODAY'S DATE * 205 TM=VAL(LEFT$(DATE$,2)):REM THIS MONTH 210 TD=VAL(MID$(DATE$,4,2)):REM TODAY 215 TY=VAL(RIGHT$(DATE$,2)):REM THIS YEAR 220 MNTH$="JanFebMarAprMayJunJlyAugSepOctNovDec" 225 NOW$=MID$(MNTH$,((TM*3)-2),3) 230 TD$=STR$(TD) 235 REM * DOES STATE.DO EXIST * 240 GOSUB900 245 REM * BIRTH DATE INFO * 250 CLS:X=0:MSG$=NM$:GOSUB385 255 X=1:MSG$="<< Birth Date Information >>":GOSUB1190:GOSUB1215 260 X=2:MSG$="* Press after EACH entry *":GOSUB385 265 X=7:MSG$=" Enter New State Info":GOSUB385 270 BEEP:PRINT@180,FX$;:PRINT@ 168,;:INPUT "Month:[1-12]";BM$:IFBM$=CHR$(83)ORBM$=CHR$(115)THEN925ELSEIFVAL(BM$)=0THENGOSUB1230:GOTO265 275 BM=VAL(BM$) 280 IFBM>=1ANDBM<=12THEN285ELSEGOSUB360:GOTO255 285 BEEP:PRINT@288," ";:PRINT@220,FX$,:PRINT@ 208,;:INPUT "Day :[1-31]";BD$:IFVAL(BD$)=0THENGOSUB1230:GOTO285 290 BD=VAL(BD$) 295 IFBD=31AND(BM=1ORBM=3ORBM=5ORBM=7ORBM=8ORBM=10ORBM=12)THEN300ELSEIFBD=30AND(BM=4ORBM=6ORBM=9ORBM=11)THEN300ELSEIFBD>=1ANDBD<=30THEN300ELSE365 300 BEEP:PRINT@260,FX$;:PRINT@ 248,;"Year :";RA$;:INPUTBY$:IFVAL(BY$)=0THENGOSUB1230:GOTO300 305 BY=VAL(BY$) 310 REM * BIRTH YEAR A PAST DATE? * 315 IFBY>(1900+TY)OR(BY>TYANDBY<=99)OR((BY=TYORBY=(1900+TY))AND((BM>TM)OR(BM=TMANDBD>TD)))THEN370 320 REM * CHECK FOR LEAP YEAR * 325 IFBD=29ANDBM=2ANDBYMOD4=0ANDBYMOD100<>0THEN335ELSEIFBM=1ORBM>2ANDBM<13THEN335ELSEIF(BD>=1ANDBD<=28)ANDBM=2THEN335ELSE365 330 REM * BIRTH YEAR VALID DATES * 335 IFBY>0ANDBY<99THEN350 340 IFBY>0ANDTY>=BY-1900THENBY=BY-1900 345 REM * TODAY YOUR BIRTHDAY? * 350 IFBM=TMANDBD=TDTHENGOSUB375 355 GOTO390 360 X=4:MSG$=" 1 thru 12 ONLY! ":GOSUB385:GOSUB1200:MSG$=CL$:GOSUB385:RETURN 365 X=5:MSG$="Day INVALID for Month Selected":GOSUB385:GOSUB1200:MSG$=CL$:GOSUB385:X=X+1:GOSUB385:GOTO265 370 X=6:MSG$="----- IMPOSSIBLE! -----":GOSUB 385:GOSUB1200:MSG$=CL$:GOSUB385:X=X-1:GOSUB385:GOTO 265 375 CLS:PRINT"y Birthday * ";:FORX=1TO18:PRINT"Happy Birthday * ";:NEXTX:GOSUB1155 380 GOTO355 385 GOSUB1190:GOSUB1210:RETURN 390 REM * ENTER SEX * 395 CLS:X=0:MSG$=NM$:GOSUB430 400 X=2:MSG$=" * Select <1> OR <2> * ":GOSUB1190:GOSUB1215 405 PRINT@164,"<1> =";WB$;" MALE ";BW$;" -or- <2> = ";WB$;" FEMALE ";BW$;:BEEP 410 KY$=INKEY$ 415 IFKY$="1"THENSEX=149 420 IFKY$="2"THENSEX=150 425 IFKY$="1"ORKY$="2"THEN435ELSE410 430 GOSUB1190:GOSUB1210:RETURN 435 REM * ENTER DATE FOR LOTTERY #'S * 440 REM * READ "STATE.DO" FILE * 445 OPEN"RAM:STATE.DO"FORINPUTAS1:IFEOF(1)THEN475 450 INPUT#1,ST$,L3,L4,L5,L6,L7 455 IFL5>0ANDL5<5THENKILL"STATE.DO":RUN 460 IFL6>0ANDL6<6THENKILL"STATE.DO":RUN 465 IFL7>0ANDL7<7THEN KILL"STATE.DO":RUN 470 IF(L3*L4*L5*L6*L7)<0THENKILL"STATE.DO":RUN 475 CLOSE#1: 480 REM * TODAY'S NUMBERS? * 485 CLS:X=0:MSG$=NM$:GOSUB505:X=1:MSG$=" * Select <1> or <2> * ":GOSUB1190:GOSUB1215 490 PRINT@128,"< 1 >";:PRINT@166,WB$;" TODAY's ";BW$;:PRINT@204,"Lucky Numbers" 495 X=4:MSG$="- OR -":GOSUB505 500 PRINT@147,"< 2 >";:PRINT@185,WB$;" FUTUREš ";BW$;:PRINT@223,"Lucky Numbers":BEEP:GOTO510 505 GOSUB1190:GOSUB1220:RETURN 510 KY$=INKEY$ 515 IF KY$="1"THEN520ELSEIFKY$="2"THEN525ELSE510 520 LM=TM:LD=TD:LY=1900+TY:GOTO665 525 CLS:X=0:MSG$=NM$:GOSUB575 530 PRINT@287,;"Today's Date: ";NOW$;TD$+CHR$(44);1900+TY; 535 X=1:MSG$="<< Date for Lucky Lottery Numbers >>":GOSUB1190:GOSUB1215 540 X=2:MSG$="* Press after EACH entry *":GOSUB575 545 BEEP:PRINT@180,FX$;:PRINT@ 167,;:INPUT"Month:[1-12]";LM$:IFVAL(LM$)=0THENGOSUB1230:GOTO545 550 LM=VAL(LM$):GOSUB580 555 BEEP:PRINT@220,FX$;:PRINT@207,;:INPUT"Day :[1-31]";LD$:IFVAL(LD$)=0THENGOSUB1230:GOTO555 560 LD=VAL(LD$):GOSUB585 565 BEEP:PRINT@260,FX$;:PRINT@247,;"Year :";RA$;:INPUTLY$:IFVAL(LY$)=0THENGOSUB1230:GOTO565 570 LY=VAL(LY$):GOSUB 590:GOTO665 575 GOSUB1190:GOSUB1210:RETURN 580 IF LM>=1ANDLM<=12THENRETURNELSE640 585 IFLD=31AND(LM=1ORLM=3ORLM=5ORLM=7ORLM=8ORLM=10ORLM=12)THENRETURNELSEIFLD=30AND(LM=4ORLM=6ORLM=9ORLM=11)THENRETURNELSEIFLD>=1ANDLD<=30THENRETURNELSE645 590 IFLY=1900ANDLY<(TY+1900)THEN650 600 IFLD=29ANDLM=2ANDLYMOD4=0ANDLYMOD100<>0THEN605ELSEIFLM=1ORLM>2ANDLM<13THEN605ELSEIF(LD>=1ANDLD<=28)ANDLM=2THEN605ELSE645 605 IFLY=TY+1900THENLY=LY-1900 610 IF(LM>=TMANDLD>=TDANDLY>=TYANDLY<=99)THENLY=1900+LY:RETURN 615 IF(LM<=TMANDLD<=TDANDLY=TY)THEN650 620 IF(LY>=TYANDLY<=99)THENLY=1900+LY:RETURN 625 IFLY>TY+1900ANDLY<=1999THENRETURN 630 IFLY<1900THENGOTO650 635 GOTO655 640 X=4:MSG$=" 1 thru 12 ONLY! ":GOSUB660:GOSUB1200:MSG$=CL$:GOSUB660:GOTO545 645 X=5:MSG$="Day INVALID for Month Selected":GOSUB660:GOSUB1200:MSG$=CL$:GOSUB660:X=X+1:GOSUB660:GOTO 545 650 X=6:MSG$="<<< FUTURE DATES ONLY >>>":GOSUB660:GOSUB1200:MSG$=CL$:GOSUB660:X=X-1:GOSUB660:GOTO545 655 X=6:MSG$="< Before 2000 A.D. Only >":GOSUB660:GOSUB1200:MSG$=CL$:GOSUB660:X=X-1:GOSUB660:GOTO 545 660 GOSUB1190:GOSUB1210:RETURN 665 REM * SELECT LUCKY NUMBERS * 670 CLS:X=3:MSG$="Computing":GOSUB1190:GOSUB1210:X=4:MSG$="Lucky Numbers...":GOSUB1190:GOSUB1210 675 FORMU=1TO30:SOUND3321,1:SOUND2793,1:NEXTMU 680 X1=0:Y1=0:X2=239:Y2=63:FORBOX=1TO4:LINE(X1,Y1)-(X2,Y2),1,B:X1=X1+6:Y1=Y1+6:X2=X2-6:Y2=Y2-6:FORSND=1TO8:SOUND2793,1:SOUND2092,1:NEXTSND:NEXTBOX 685 SEED=ABS((RND(-((BM+BD+BY)/(LM+LD+LY))*SEX))*SEX) 690 IF L3=0THEN710 695 A3=INT(RND(SEED)*10) 700 B3=INT(RND(SEED)*10) 705 C3=INT(RND(SEED)*10) 710 IF L4=0THEN735 715 A4=INT(RND(SEED)*10) 720 B4=INT(RND(SEED)*10) 725 C4=INT(RND(SEED)*10) 730 D4=INT(RND(SEED)*10) 735 X=5:L=L5:GOSUB750 740 X=6:L=L6:GOSUB750 745 X=7:L=L7 750 A(X)=INT(RND(SEED)*L)+1 755 B(X)=INT(RND(SEED)*L)+1 760 IFA(X)=B(X)THEN755 765 C(X)=INT(RND(SEED)*L)+1 770 IFB(X)=C(X)ORA(X)=C(X)THEN765 775 D(X)=INT(RND(SEED)*L)+1 780 IFC(X)=D(X)ORD(X)=B(X)ORD(X)=A(X)THEN775 785 E(X)=INT(RND(SEED)*L)+1 790 IFD(X)=E(X)ORE(X)=C(X)ORE(X)=B(X)ORE(X)=A(X)THEN785 795 F(X)=INT(RND(SEED)*L)+1 800 IFF(X)=E(X)ORF(X)=D(X)ORF(X)=C(X)ORF(X)=B(X)ORF(X)=A(X)THEN795 805 G(X)=INT(RND(SEED)*L)+1 810 IFF(X)=G(X)ORG(X)=E(X)ORG(X)=D(X)ORG(X)=C(X)ORG(X)=B(X)ORG(X)=A(X)THEN805 815 IFX=5ORX=6THENRETURN 820 CLS:LINE(69,20)-(164,43),1,BF:X=3:MSG$=" Lucky Numbers ":GOSUB1190:GOSUB1220:X=4:MSG$=" Computed... ":GOSUB1190:GOSUB1210 825 FORMU=1TO25:SOUND1660,1:SOUND1396,1:NEXTMU 830 CLS:MSG$=NM$:X=0:GOSUB1190:GOSUB1210 835 FUTR$=MID$(MNTH$,((LM*3)-2),3) 840 LD$=STR$(LD) 845 IFLY>99THENLY=LY-1900 850 PRINT@43,WB$;" Lucky ";ST$;" Numbers for ";FUTR$;LD$+CHR$(44);1900+LY;BW$ 855 PRINT" Three: ";:IFL3=0THENGOSUB895ELSEPRINTA3;B3;C3 860 PRINT" Four : ";:IFL4=0THENGOSUB895ELSEPRINTA4;B4;C4;D4 865 X=5:PRINT" Five : ";:IFL5=10THENGOSUB895ELSEPRINTA(X);B(X);C(X);D(X);E(X) 870 X=6:PRINT" Six : ";:IFL6=10THENGOSUB895ELSEPRINTA(X);B(X);C(X);D(X);E(X);F(X) 875 X=7:PRINT" Seven: ";:IFL7=10THENGOSUB895ELSEPRINTA(X);B(X);C(X);D(X);E(X);F(X);G(X) 880 GOSUB1145 885 MSG$="=Quit -or- =Again":X=7:GOSUB1190:GOSUB1210 890 KY$=INKEY$:IFKY$=""THEN890ELSEIFKY$=CHR$(32)THEN245ELSEIFKY$=ES$THENMENUELSEGOSUB1230:GOTO890 895 PRINT" * Not Available In ";ST$;" *":RETURN 900 REM * DOES "STATE.DO" EXIST? * 905 CLS:ONERRORGOTO920 910 OPEN"STATE.DO"FORINPUTAS1:CLOSE#1 915 GOTO245:REM "STATE.DO" EXISTS GO TO BIRTH DATE SECTION 920 IFERR=52THEN925:REM "STATE.DO" DOESN'T EXIST, INITIALIZE 925 REM * INIT "STATE.DO" FILE * 930 CLS:PRINT@40,"The next few screens are used to teach << Lott-O-Luck >> how many different lottery games your state has as well as how many numbers are in each game." 935 PRINT@288,;"PRESS ANY KEY TO PROCEED"; 940 KY$=INKEY$:IFKY$=""THEN940 945 CLS:PRINT"Your state's lottery information will bestored in a file named 'STATE.DO'." 950 PRINT:PRINT"<< Lott-O-Luck >> will read from this file each time it is run until you KILL 'STATE.DO'." 955 PRINT@288,;"PRESS ANY KEY TO PROCEED"; 960 KY$=INKEY$:IF KY$=""THEN960 965 CLS:X=0:MSG$=NM$:GOSUB1190:GOSUB1220:BEEP:PRINT@83,;:INPUT"State Name: [XX]";STATE$ 970 IFLEN(STATE$)>2THENMSG$="2 Letters Only":GOSUB1105:GOTO965 975 CLS:MSG$=NM$:GOSUB1190:GOSUB1210:PRINT@80,"Does ";STATE$; 980 INPUT" have a <3> number lottery game? [ y/n]";Q1$ 985 IFQ1$="Y"OR Q1$="y"THENQ1=1:GOTO1000 990 IFQ1$="N"OR Q1$="n"THEN Q1=0:GOTO1000 995 GOTO975 1000 BEEP:PRINT@200,"Does ";STATE$; 1005 INPUT" have a <4> number lottery game? [ y/n]";Q2$ 1010 IFQ2$="Y"ORQ2$="y"THENQ2=1:GOTO1025 1015 IFQ2$="N"ORQ2$="n"THENQ2=0:GOTO1025 1020 GOTO1000 1025 CLS:X=0:MSG$=NM$:GOSUB1190:GOSUB1210:BEEP:PRINT@80,"Does ";STATE$; 1030 INPUT" have a <5> number lottery game? [ y/n]";Q3$ 1035 IFQ3$="Y"ORQ3$="y"THEN:PRINT:PRINT"Play 5 numbers (1 thru [?]):":BEEP:INPUT" Number Here:";Q3:GOTO1050 1040 IFQ3$="N"ORQ3$="n"THENQ3=10:GOTO1050 1045 GOTO1025 1050 CLS:X=0:MSG$=NM$:GOSUB1190:GOSUB1210:BEEP:PRINT@80,"Does ";STATE$; 1055 INPUT" have a <6> number lottery game? [ y/n]";Q4$ 1060 IFQ4$="Y"ORQ4$="y"THENPRINT:PRINT"Play 6 numbers (1 thru [?]):":BEEP:INPUT " Number Here:";Q4:GOTO1075 1065 IFQ4$="N"ORQ4$="n"THENQ4=10:GOTO1075 1070 GOTO1050 1075 CLS:X=0:MSG$=NM$:GOSUB1190:GOSUB1210:BEEP:PRINT@80,"Does ";STATE$; 1080 INPUT" have a <7> number lottery game? [ y/n]";Q5$ 1085 IFQ5$="Y"ORQ5$="y"THEN PRINT:PRINT"Play 7 numbers (1 thru [?]):":BEEP:INPUT " Number Here:";Q5:GOTO1100 1090 IFQ5$="N"ORQ5$="n"THENQ5=10:GOTO1100 1095 GOTO1075 1100 X=3:MSG$="Initializing 'STATE.DO' file...":CLS:GOSUB1105:GOTO1110 1105 GOSUB1190:GOSUB1220:GOSUB1200:RETURN 1110 CLOSE#1:OPEN"STATE.DO"FOROUTPUTAS1 1115 PRINT#1,STATE$ 1120 PRINT#1,Q1;Q2;Q3;Q4;Q5 1125 CLOSE#1 1130 GOTO245 1135 IFS=1THENRETURNELSERESTORE:FORMU=0TO24:READSNG,DUR:NEXTMU 1140 FORMU=25TO46:READSNG,DUR:SOUNDSNG,DUR:NEXTMU:RETURN 1145 IFS=1THENRETURNELSERESTORE:FORMU=0TO46:READSNG,DUR:NEXTMU 1150 FORMU=47TO81:READSNG,DUR:SOUNDSNG,DUR:NEXTMU:RETURN 1155 IFS=1THENGOSUB1200:IFS=1THENRETURN 1160 RESTORE:FORMU=0TO24:READSNG,DUR:SOUNDSNG,DUR 1165 DATA2092,9,2092,9,1864,18,2092,18,1567,18,1660,30,2092,9,2091,9,1864,18,2092,18,1396,18,1567,30,2092,9,2092,9,1046,18,1244,18,1567,18,1660,18,1864,30,1174,9,1174,9,1244,18,1567,18,1396,18,1567,45 1170 DATA2092,12,1758,18,2092,6,1975,6,1758,30,2092,12,1758,18,2092,6,1975,6,1758,30,1046,12,1046,12,1318,12,1174,12,1318,12,1174,12,1318,12,1046,12,1318,12,1318,12,1174,12,1318,24 1175 DATA2348,18,1864,9,1864,18,1567,9,1660,9,1567,18,1175,9,1174,18,932,9,987,9,932,18,1174,9,1174,18,1567,9,1660,9,1567,18,1864,9,1864,24,932,9,1046,9,1046,18,1244,9,1244,18 1180 DATA1567,9,1660,9,1567,18,1758,9,1758,18,1046,9,932,9,1174,18,1174,18,1174,18,1174,18,1174,24 1185 NEXTMU:RETURN 1190 REM * CENTERING ROUTINE * 1195 C=20-LEN(MSG$)/2:RETURN 1200 REM * DELAY ROUTINE * 1205 FORDE=1TO400:NEXTDE:RETURN 1210 PRINT@40*X+C,MSG$;:RETURN 1215 PRINT@40*X+C,WB$;MSG$;BW$;:RETURN 1220 PRINT@40*X+C,MSG$:RETURN 1225 PRINT@40*X+C,WB$;MSG$;BW$:RETURN 1230 REM * ERROR SOUND * 1235 SOUND1244,5:RETURN