home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-387-Vol-3of3.iso
/
c
/
comp1188.zip
/
STARS.BAS
< prev
next >
Wrap
BASIC Source File
|
1988-08-05
|
9KB
|
207 lines
5 KEY OFF:SCREEN 1,0:CLS:DEFINT A-Z:COLOR 0,1
40 P!=3.14159:RD!=P!/180:MY=92:MX=139:X2!=MX*100/127:COL=3
50 DIM SX(150),SY(150),SM(200),MO(12),C$(35),CS(35),ET(12),MT(12),B%(35)
100 FOR I=1 TO 12:READ ET(I),MT(I):NEXT
110 FOR I=1 TO 12:READ MO(I):NEXT
120 QZ=0
130 GOSUB 560:LOCATE ,18:PRINT"STARS":XM=10
140 LOCATE 5,1:Z$=""
150 PRINT"1 SIMULATION":PRINT"2 CONSTELLATION STUDY"
160 PRINT"3 CONSTELLATION STUDY WITH QUIZ":PRINT"Q QUIT"
170 Z$=INKEY$:IF Z$="" THEN 170 ELSE AA=VAL(Z$)
180 IF Z$="Q" OR Z$="q" THEN END
190 IF Z$=CHR$(13) THEN AA=2
200 ON AA GOTO 210,250,250
205 GOTO 170
210 M$="HOURLY OR MONTHLY (H OR M)":M1$="H":M2$="M":DF$="H":GOSUB 1571:A$=Z$
220 IF A$="H" THEN HB=1:DM=0:GOTO 250
230 IF A$="M" THEN HB=0:DM=1:GOTO 250
240 GOTO 210
250 GOSUB 1200:GOSUB 600
260 IS=0:LB$="COMPUTING":CX=29:CY=23:GOSUB 850
270 READ RA!:IF RA!>0 THEN 320
280 IF RA!=0 THEN 400
285 IF AA>1 AND IS>0 THEN DELAY(2):COL=3:IS=PIS ELSE 290
287 MG=SM(IS):X=SX(IS):Y=SY(IS):IF MG=0 THEN 290
288 IF MG<5 THEN GOSUB 780
289 IS=IS+1:GOTO 287
290 PIS=IS:READ LB$:CI=RA!*-1:X=949:BH=0:IF LA!>.5 AND CI=20 THEN 400
300 CX=29:CY=24:GOSUB 850
310 SM(IS)=6:SX(IS)=CI:IS=IS+1:C$(CI)=LB$:GOTO 370
320 IF SM(IS)<5 THEN X=SX(IS):Y=SY(IS):MG=SM(IS):COL=0:GOSUB 780:COL=3:BH=0
325 IF AA<>1 THEN COL=1
330 READ DC!,MG:IF BH=1 THEN MG=5:GOTO 360
340 GOSUB 1440:IF AL!<0 THEN MG=5:BH=1:GOTO 360
350 GOSUB 880:GOSUB 780
360 SX(IS)=X:SY(IS)=Y:SM(IS)=MG:IS=IS+1:SM(IS)=0
370 IF ASC(LEFT$(INKEY$+" ",1))=27 THEN GOSUB 510:GOTO 130
390 GOTO 270
400 SM(IS)=255:IF AA=4 THEN AA=1
410 GOSUB 520:IF A$<>" " THEN GOSUB 510:GOTO 130
420 ON AA GOTO 430,500,910
430 A2!=A2!+HB:IF A2!>24 THEN A2!=A2!-24:DD=DD+1:JD!=JD!+1
440 MM=MM+DM:IF MM>12 THEN MM=1
445 IF DM>0 THEN DD=D1:IF DD>MO(MM) THEN DD=MO(MM)
450 IF DD>MO(MM) THEN DD=DD-MO(MM):MM=MM+1:IF MM>12 THEN MM=1
460 IF DD>MO(MM) THEN 450
470 TM!=INT(A2!)+AN!/60
480 GOSUB 510:GOSUB 1432
490 GOSUB 1330:GOSUB 650:GOTO 260
500 GOSUB 510:GOTO 130
510 RESTORE 1620:RETURN
520 LB$="SPACE BAR":CX=29:CY=23:GOSUB 850
530 LB$="TO CONTINUE":CX=28:CY=24:GOSUB 850
540 A$="":WHILE A$<>" " AND ASC(LEFT$(A$+" ",1))<>27:A$=INKEY$:WEND:LB$=" ":GOSUB 850:RETURN
560 CLS:RETURN
580 PSET(X0+8,Y0+8),COL
590 RETURN
600 CLS
620 FOR I=1 TO 180 STEP 2:X0=MX*SIN(2*I*RD!)+MX+8:Y0=MY*COS(2*I*RD!)+MY+8:PSET(X0,Y0),2:NEXT
630 LOCATE 1,19:PRINT"N":LOCATE 13,1:PRINT"E";:LOCATE ,37:PRINT"W";
640 LOCATE 25,19:PRINT"S";
650 LB$=" ":IF TM!>MT(MM) AND TM!<ET(MM) THEN COLOR 1 ELSE COLOR 0
670 LOCATE 2,29:PRINT" ";:LOCATE ,29:PRINT"DATE: ";RIGHT$(STR$(MM),LEN(STR$(MM))-1);"/";RIGHT$(STR$(DD),LEN(STR$(DD))-1)
672 A4=INT(A2!):IF A4=12 THEN TD$="NOON":GOTO 690
674 IF A4=24 THEN TD$="MID":A4=12:GOTO 690
680 A4=INT(A2!):TD$="AM":IF A4>=12 THEN TD$="PM":IF A4>12 THEN A4=A4-12
690 LOCATE ,30:PRINT" ";:LOCATE ,31:PRINT STR$(A4)" ";TD$
700 A4=INT(AN!)
710 LOCATE 23,2:PRINT"LATITUDE":PRINT" ";:LOCATE ,5:PRINT LA$;
720 RETURN
730 IS=0
740 MG=SM(IS):X=SX(IS):Y=SY(IS):IF MG=255 THEN RETURN
750 IF X=0 THEN 770
760 GOSUB 780
770 IS=IS+1:GOTO 740
780 ON MG GOTO 790,820,830,830,840,840
790 X0=X:Y0=Y+1:GOSUB 580:X0=X+1:Y0=Y:GOSUB 580:X0=X+2:Y0=Y:GOSUB 580
800 X0=X+3:Y0=Y+1:GOSUB 580
810 X0=X+1:Y0=Y+2:GOSUB 580:X0=X+2:Y0=Y+2:GOSUB 580
820 X0=X+1:Y0=Y+1:GOSUB 580
830 X0=X+2:Y0=Y+1:GOSUB 580
840 RETURN
850 LOCATE CY,CX:PRINT SPACE$(40-CX);:LOCATE ,CX:PRINT LB$;:RETURN
880 AZ!=2*P!-AZ!:Q!=SIN(P!/4-AL!/2)/COS(P!/4-AL!/2)
890 X=INT((X2!*Q!*SIN(AZ!)+X2!)*1.27)
900 Y=MY-INT(MY*Q!*COS(AZ!))-1:RETURN
910 IS=1:GOSUB 600:LB$="SORTING":CX=29:CY=23:GOSUB 850
920 I=0
930 BH=0
940 IF SM(I)=255 THEN CS(IS)=0:GOTO 1010
950 CS(IS)=SX(I)
960 IF SM(I+1)>5 THEN I=I+1:GOTO 940
970 I=I+1:IF SM(I)=5 THEN BH=1
980 IF SM(I)<6 THEN 970
990 IF BH=0 THEN IS=IS+1
1000 GOTO 930
1010 NC=IS-1
1020 FOR I=1 TO NC:B%(I)=I:NEXT
1030 FOR J=1 TO 5:FOR K=1 TO NC:L=B%(INT(RND*NC+1)):T9=B%(K):B%(K)=B%(L)
1040 B%(L)=T9:NEXT K,J
1050 FOR KS=1 TO NC:COL=1:GOSUB 1191
1110 LB$="NAME":CX=29:CY=23:GOSUB 850
1120 LB$="":CX=28:CY=24:GOSUB 850:G$="":PRINT">";
1121 K$="":WHILE K$="":K$=UCASE$(INKEY$):WEND:GLEN=LEN(G$):IF K$=CHR$(13) THEN GOTO 1130
1122 IF GLEN<11 AND ((K$>="A" AND K$<="Z") OR K$=" ") THEN G$=G$+K$:LOCATE ,29+GLEN:PRINT K$;:GOTO 1125
1123 IF GLEN>0 AND (K$=CHR$(8) OR K$=CHR$(29)) THEN G$=LEFT$(G$,GLEN-1):LOCATE ,29+GLEN-1:PRINT" ";
1125 GOTO 1121
1130 IF G$=C$(CS(JS)) THEN LB$="CORRECT":CX=29:CY=23:GOSUB 850:QZ=QZ+1:GOTO 1150
1140 LB$=C$(CS(JS)):CY=24:GOSUB 850
1150 DELAY(1):COL=3:GOSUB 1191:NEXT
1160 LINE (8,66)-(285,86),,B
1170 LOCATE 10,3
1180 PRINT"YOU ANSWERED";QZ;"CORRECT OUT OF";LEFT$(STR$(NC),3):QZ=0
1190 GOSUB 510:GOSUB 520:GOTO 130
1191 IS=0:BH=0:JS=B%(KS)
1192 MG=SM(IS):X=SX(IS):Y=SY(IS):IF MG=255 THEN 1197
1193 IF MG=6 THEN CN=X:GOTO 1196
1194 IF CN=CS(JS) THEN BH=1:GOSUB 780
1195 IF CN<>CS(JS) AND BH=1 THEN 1197
1196 IS=IS+1:GOTO 1192
1197 RETURN
1200 IF AA=4 THEN PRINT"STARTING ";
1210 XM=XM+2:PRINT:PRINT"DATE AND TIME OF SKY DISPLAY"
1220 PRINT:M$="MONTH (1-12)":M1=1:M2=12:DF$="1":GOSUB 1580:MM=INT(VAL(Z$))
1230 M$="DAY (1-"+STR$(MO(MM))+")":M1=1:M2=MO(MM):DF$="1":GOSUB 1580:DD=INT(VAL(Z$))
1240 GOSUB 1432:D1=DD
1260 A2!=0:AN!=0:M$="HOUR (1-12)":M1=1:M2=12:DF$="9":GOSUB 1580:A2!=VAL(Z$):B$=" "
1265 A2!=INT(A2!)
1270 M$=" AM OR PM":M1$="AM":M2$="PM":DF$="PM":GOSUB 1571:B$=Z$
1280 IF B$="PM" AND A2!<>12 THEN A2!=A2!+12
1285 IF B$="AM" AND A2!=12 THEN A2!=24
1290 TM!=A2!:AN!=(TM!-INT(TM!))*60
1300 M$="LATITUDE":M1=-90:M2=90:DF$="40":GOSUB 1580:LA!=VAL(Z$):LA$=Z$
1310 IF LA!=0 THEN LA$="0"
1320 LA!=LA!*RD!
1330 FD!=TM!/24+.5:IF FD!=>1 THEN FD!=FD!-1:JD!=JD!+1
1340 DA=DA+FD!:D3=JD!-2451545!
1350 T3!=D3/36525!:T1=INT(T3!)
1360 T2!=(JD!-T1*36525!-2451544.5#)/36525!
1370 S3!=24110.54841#+184.812866#*T1+8640184.812866#*T2!+.093104*T3!*T3!
1380 S3!=(S3!-.0000062*T3!*T3!*T3!)/86400!:S3!=24*(S3!-INT(S3!)+(FD!-.5)*1.002737909#)
1390 IF S3!<0 THEN S3!=S3!+24
1400 IF S3!>24 THEN S3!=S3!-24
1410 H3=INT(S3!):M3=INT(60*(S3!-H3))
1420 TG!=H3+M3/60
1430 RETURN
1432 JD!=2446429.5#:DA=DD:IF MM>1 THEN FOR I=1 TO MM-1:DA=DA+MO(I):NEXT
1434 JD!=JD!+DA:RETURN
1440 DC!=DC!*RD!:RA!=RA!*15*RD!
1450 T5!=TG!*15*RD!-RA!
1460 S1!=SIN(LA!)*SIN(DC!)+COS(LA!)*COS(DC!)*COS(T5!)
1470 C1!=1-S1!*S1!
1480 IF C1!>0 THEN C1!=SQR(C1!)
1490 IF C1!<=0 THEN AL!=SGN(S1!)*P!/2:GOTO 1510
1500 AL!=ATN(S1!/C1!)
1510 C2!=COS(LA!)*SIN(DC!)-SIN(LA!)*COS(DC!)*COS(T5!)
1520 S2!=-COS(DC!)*SIN(T5!)
1530 IF C2!=0 THEN AZ!=SGN(S2!)*P!/2:GOTO 1560
1540 AZ!=ATN(S2!/C2!)
1550 IF C2!<0 THEN AZ!=AZ!+P!
1560 IF AZ!<0 THEN AZ!=AZ!+2*P!
1570 RETURN
1571 XM=XM+1:Q$=""
1572 LOCATE XM:PRINT" ":LOCATE XM:PRINT M$;:INPUT Q$:IF Q$="" THEN Z$=DF$:GOTO 1575
1573 Z$="":FOR I=1 TO LEN(Q$):TE$=MID$(Q$,I,1):IF TE$>="a" AND TE$<="z" THEN Z$=Z$+CHR$(ASC(TE$)-32) ELSE Z$=Z$+TE$
1574 NEXT
1575 IF Z$<>M1$ AND Z$<>M2$ THEN 1572
1576 RETURN
1580 XM=XM+1:Z$=""
1582 LOCATE XM:PRINT" ":LOCATE XM:PRINT M$;:INPUT Z$:IF Z$="" THEN Z$=DF$
1584 IF VAL(Z$)=0 AND Z$<>"0" THEN 1582
1590 IF VAL(Z$)<M1 OR VAL(Z$)>M2 THEN 1582
1592 RETURN
1600 DATA 19,6,19,6,20,5,21,4,21,3,22,3,21,3,20,4,20,4,19,5,18,5,18,6
1610 DATA 31,28,31,30,31,30,31,31,30,31,30,31
1620 DATA -1,"POLARIS",2,89,2
1630 DATA -2,"BIG DIPPER"
1640 DATA 11,57,2,11,63,2,11.8,54,2,12.2,58,3,12.9,57,2,13.4,55,2,13.7,50,2
1650 DATA -3,"ARCTURUS",14.3,19.5,1
1660 DATA -4,"VIRGO",13.4,-11,1,12.6,-1,3,12.9,3,3,13,11,3
1670 DATA -5,"PEGASUS",0.2,15,3,23,14,2,23,28,2,.1,29,2
1680 DATA -6,"AURIGA",5.2,46,1,5.9,45,2,5.9,37,2,4.9,33,3,5.4,29,2
1690 DATA -7,"ORION",5.9,8,1,5.4,7,2,5.75,-2,2,5.6,-1,2,5.45,0,2
1700 DATA 5.6,-5.5,4,5.2,-8.5,1,5.8,-10,2
1710 DATA -8,"VEGA",18.6,39,1,-9,"CYGNUS"
1720 DATA 20.7,45,1,20.3,40,2,19.7,45,3,20.75,34,2,19.5,28,3,19.9,35,4
1730 DATA -10,"CANIS MAJOR",6.7,-17,1,6.4,-18,2
1740 DATA -11,"AQUILA",19.8,9,1,19.1,13.5,3,20.1,-1,3,19.4,3,3,19.1,-5,3
1750 DATA -12,"SCORPIUS",16.5,-26,1,16,-20,2,15.9,-22,2,15.9,-26,3
1760 DATA 17.6,-43,2,16.7,-34,2,17.6,-37,2,16.7,-38,3,17.2,-43,3
1770 DATA -13,"CASSIOPEIA",1.9,63.5,4,1.4,60,3,0.9,60.5,2,0.6,56,2,0.1,59,2
1780 DATA -14,"TAURUS",4.6,16,1,4.2,15,4,4.4,19,3
1790 DATA -15,"CANIS MINOR",7.6,6,1,7.4,9,3
1800 DATA -16,"GEMINI",7.5,32,1,7.7,28,1,6.7,25,3,6.6,16,2,6.3,22,3
1810 DATA -17,"LEO"
1820 DATA 10.1,12.5,1,10.1,17,3,10.3,20,2,10.3,24,3,9.8,26,4,9.7,24,3
1830 DATA 11.2,21,2,11.2,16,3,11.8,15,2
1840 DATA -18,"SAGITTARIUS",18.3,-30,3,18,-30.5,3,18.4,-25,3,18.9,-26,2,19,-30,2
1850 DATA 18.7,-27,3,19.1,-28,3,18.3,-34.5,2
1860 DATA -19,"FOMALHAUT",22.9,-30,1
1870 DATA -20,"CARINA",6.4,-52,1
1880 DATA 8.4,-59,2,9.2,-59,2,9.2,-69,2,9.8,-65,3
1890 DATA -21,"VELA",8.2,-47,2,8.6,-54,2,9.1,-43,2,9.3,-55,2
1900 DATA -22,"CRUX",12.1,-58,2,12.4,-63,1,12.5,-56,1,12.8,-59,1
1910 DATA -23,"CENTAURUS",14.6,-61,1,14,-60,1
1920 DATA -24,"ACHERNAR",1.6,-58,1,0