c64-basic/pi-drop/pi-drop.bas

27 lines
1.1 KiB
QBasic

10 GOSUB 9000
100 R=RND(-TI):N=0:H=0:PRINT CHR$(147)
110 FOR Y=3 TO 22:FOR X=1 TO 38:POKE 1024+Y*40+X,32:NEXT:NEXT
120 X=RND(1)*2-1:Y=RND(1)*2-1:N=N+1:Z=X*X+Y*Y
130 C=1+INT((X+1)*18.5):Q=3+INT((Y+1)*9.5):IF C>38 THEN C=38
140 IF Q>22 THEN Q=22
150 P=1024+Q*40+C:POKE P,46
160 IF Z<=1 THEN H=H+1:POKE P+54272,5:GOTO 180
170 POKE P+54272,10
180 IF N/20<>INT(N/20) THEN 210
190 E=4*H/N:PRINT CHR$(19);"PI DROP SAMPLES";N;" PI";INT(E*10000)/10000
200 PRINT "GREEN=INSIDE RED=OUTSIDE"
210 GET A$:IF A$=" " THEN 100
220 IF A$<>"Q" THEN 120
230 GOTO 9900
9000 POKE 53280,0:POKE 53281,0:PRINT CHR$(147);CHR$(154)
9010 PRINT:PRINT:PRINT " PI DROP":PRINT
9020 PRINT CHR$(5);" ESTIMATE PI WITH RANDOM COORDINATES":PRINT:PRINT
9030 PRINT CHR$(153);" CONTROLS":PRINT
9040 PRINT CHR$(158);" SPACE";CHR$(5);" RESET THE EXPERIMENT"
9050 PRINT " ";CHR$(158);"Q";CHR$(5);" QUIT":PRINT:PRINT
9060 PRINT " HTTPS://C64.P20.DEV":PRINT
9070 PRINT CHR$(152);" RELEASED 22 OCTOBER 2026":PRINT:PRINT
9080 PRINT CHR$(158);" PRESS SPACE TO START"
9090 GET A$:IF A$<>" " THEN 9090
9100 RETURN
9900 POKE 53280,14:POKE 53281,6:PRINT CHR$(147):END