home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
RUN Flagazine Extra: Special 2
/
run-special-2.zip
/
GALTON.BAS
< prev
next >
Wrap
BASIC Source File
|
1992-05-31
|
3KB
|
69 lines
1000 REM Simulatie Galtonbord GWBASIC GRAPHICS (C) B.GROOTENHUIS
1010 COMMON MENUFL%:GOSUB 1540:DIM A(16),BV(16)
1020 CLS:Y=6:U=20:R=20:K=9:T=0:G=0:FOR I=0 TO 16:A(I)=0:BV(I)=0:NEXT I
1030 AANT=800:IF GV%>300 THEN AANT=1400:IF GV%>400 THEN AANT=1600
1040 RANDOMIZE TIMER
1050 FOR M=0 TO 14:FOR N=0 TO 4*R-24 STEP 4
1060 LOCATE R,K+N:PRINT "^";:NEXT N:R=R-1:K=K+2:NEXT M
1070 FOR L=0 TO 16:PSET (3+(L+1)*PH,20.5*PV)
1080 LINE-STEP(0,PV):NEXT L
1090 LINE(0,3*PV+1)-STEP(GH%/2-2*PH,0)
1100 LOCATE 1,60:PRINT"Stop met <Esc>":LOCATE 6,1:PRINT"van de ";AANT
1110 LOCATE 3,37:PRINT"o":LOCATE 5,1:PRINT"Knikker :";T+1
1120 LINE(3+PH,21.5*PV)-STEP(16*PH,0)
1130 IF INKEY$=CHR$(27) THEN 1260
1140 LOCATE 3,37:PRINT" ":LOCATE 4,37:PRINT"o"
1150 LOCATE 4,37:PRINT" ":K=38
1160 FOR R=6 TO 20:V=2*SGN(RND -.5)
1170 LOCATE R,K+V:PRINT"o":Y=Y+2:GOSUB 1410:'SOUND 1500,.1
1180 LOCATE R,K+V:PRINT" ":GOSUB 1440:IF R<18 THEN K=K+V
1190 NEXT R:Y=6
1200 LOCATE 21,K+V:PRINT"o"
1210 LOCATE 21,K+V:PRINT" ":LOCATE 22,K+V-1:PRINT"o":PS=K+V-1
1220 Q=(PS-3)/4:LOCATE 22,PS:PRINT" ":A(Q)=A(Q)+1:SOUND 50+A(Q)*10,1
1230 IF Q MOD 2=0 THEN LOCATE 23,PS-1:PRINT A(Q):GOTO 1250
1240 LOCATE 24,PS-1:PRINT A(Q);
1250 T=T+1:IF T<AANT THEN 1110 ELSE 1260
1260 LINE(3+PH,21.5*PV)-STEP(16*PH,0):BT=T
1270 BEEP:LOCATE 1,60:PRINT "Druk een toets in."
1280 WHILE INKEY$="":WEND
1290 FOR T=1 TO 20:LOCATE T,1:PRINT STRING$(78,32);:NEXT T
1300 FOR P=6 TO 66 STEP 4:G=G+1:HB=A(G):IF HB=0 THEN 1320
1310 FOR I=1 TO HB:LINE(7+G*PH,12+20*PV-I)-STEP(PH/4,0):NEXT I
1320 NEXT P:GOSUB 1460
1330 LOCATE 1,1:PRINT"Links :":LOCATE 1,55:PRINT"Rechts :"
1340 LOCATE 2,1:PRINT"geproduceerde verdeling."
1350 LOCATE 2,55:PRINT"binomiale verdeling."
1360 LOCATE 4,55:PRINT"Nog een keer (J/N) ?"
1370 INV$=INPUT$(1):INV=INSTR("JNjn",INV$):IF INV=0 THEN 1370
1380 IF INV MOD 2=1 THEN 1020
1390 CLS:SCREEN 0:IF MENUFL% THEN 120
1400 END
1410 IF T>9 THEN 1430
1420 WL!=TIMER:WHILE TIMER<WL!+.1:WEND
1430 LOCATE 3,Y:PRINT "o":RETURN
1440 LOCATE 3,Y:PRINT " ":RETURN
1450 REM BEREKENING BINOMIALE VERDELING
1460 BV(1)=BT:FOR I=2 TO 16:BV=0
1470 FOR J=1 TO I-1:W=BV(J)/2:BV(J)=BV+W:BV=W
1480 NEXT J:BV(I)=BV:NEXT I
1490 REM TEKENEN BINOMIALE VERDELING
1500 G=0:FOR P=6 TO 66 STEP 4:G=G+1:HB=INT(BV(G)+.5):IF HB=0 THEN 1520
1510 FOR I=1 TO HB:LINE(PH/2+7+G*PH,12+20*PV-I)-STEP(PH/4,0),,,&HCCCC:NEXT I
1520 NEXT P:RETURN
1530 REM SCREEN MODE OPVRAGEN
1540 KEY OFF:CLS:SCREEN 0:MD=12:ON ERROR GOTO 1560
1550 SCREEN MD:IF MD=0 THEN 1640:ELSE 1570
1560 MD=MD-1:RESUME 1550
1570 WINDOW SCREEN(0,0)-(1,1):GH%=PMAP(1,0)+1:GV%=PMAP(1,1)+1:WINDOW
1580 PV=8:PH=32:IF GH%=720 THEN PV=14:PH=36
1590 IF GV%>=300 THEN PV=14:IF GV%>400 THEN PV=16
1600 ON ERROR GOTO 0:RETURN
1610 PV=8:PH=32:IF GH%=720 THEN PV=14:PH=36
1620 IF GV%>=300 THEN PV=14:IF GV%>400 THEN PV=16
1630 RETURN
1640 PRINT"Grafische mode niet aanspeekbaar. <Esc> voor menu."
1650 WHILE INKEY$<>CHR$(27):WEND
1660 GOTO 1390
20000 REM EIND GALTON