home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
RUN Flagazine Extra: Special 3
/
run-special-3.zip
/
3DLIFE.BAS
next >
Wrap
BASIC Source File
|
1989-11-24
|
3KB
|
44 lines
10 REM --- BELANGRIJKE VARIABELEN IN DE INVOER-ROUTINE
20 REM --- Overleven: voorbeeld: minleven=10, maxleven=16, eenzaam=4, drukte=20
30 REM --- Kleuren : G=geel=14, B=bruin=6, W=wit(grijs)=7
40 REM --- Tekening : E=TekenEenheid=2
50 REM --- Afmeting : D=Dimensie=10 (= 10 bij 10 bij 10 cellen)
60 REM --- E*D < 25
100 DEFINT A-Z: KEY OFF: SCREEN 9: WINDOW SCREEN (0,0) - (640,400)
110 CLS: GOSUB 370: D1 = D + 1: DIM C(D1,D1,D1), N(D1,D1,D1)
130 TOTAAL = -1: CLS: RANDOMIZE -TIMER: GOSUB 280: GOSUB 240
140 WHILE (TOTAAL <> 0) AND (INKEY$ = "")
150 GOSUB 300: CLS: GOSUB 240: WEND:END
160 X = 320 + K*7*E-J*7*E: Y = 200 - I*6*E+K*3*E+J*3*E
170 PSET (X,Y),W: LINE -(X+7*E,Y-3*E),W: LINE -(X+7*E,Y-9*E),W
175 LINE -(X,Y-12*E),W: LINE -(X-7*E,Y-9*E),W: LINE -(X-7*E,Y-3*E),W
180 LINE -(X,Y),W: PAINT (X-3*E,Y-3*E),0,W
190 PSET (X,Y),G: LINE -(X+7*E,Y-3*E),G: LINE -(X+7*E,Y-9*E),G
200 LINE -(X,Y-12*E),G: LINE -(X-7*E,Y-9*E),G: LINE -(X-7*E,Y-3*E),G
210 LINE -(X,Y),G: LINE -(X,Y-6*E),G: LINE -(X-7*E,Y-9*E),G
220 PSET (X,Y-6*E),G: LINE -(X+7*E,Y-9*E),G: PAINT (X-3*E,Y-3*E),g,G
230 PAINT (X,Y-9*E),b,G: paint (x+3*e, y-3*e),0,g: RETURN
240 GENERATIE=GENERATIE+1: LOCATE 1,1: PRINT "Generatie:"; GENERATIE
250 PRINT "Aantal :"; TOTAAL; "("; INT(TOTAAL/D/D/D*100+.5); "% )"
255 PRINT "Berekening: "; STRING$(D,177)
260 FOR I=1 TO D: FOR J=1 TO D: FOR K=1 TO D: IF C(I,J,K)=1 THEN GOSUB 160
270 NEXT: NEXT: NEXT: RETURN
280 AANTAL = PERCENTAGE/100*D*D*D: FOR TELLER=1 TO AANTAL: I=RND*D+1
290 J=RND*D+1: K=RND*D+1: C(I,J,K)=1: NEXT: TOTAAL = AANTAL: RETURN
300 FOR I=1 TO D: FOR J=1 TO D: FOR K=1 TO D: N(I,J,K)=C(I,J,K)
310 BUREN = -C(I,J,K): FOR X=I-1 TO I+1: FOR Y=J-1 TO J+1: FOR Z=K-1 TO K+1
320 BUREN = BUREN + C(X,Y,Z): NEXT: NEXT: NEXT
330 IF (BUREN >= MINLEVEN) AND (BUREN <= MAXLEVEN) THEN N(I,J,K)=1
340 IF (BUREN <= EENZAAM) OR (BUREN >= DRUKTE) THEN N(I,J,K) = 0
345 NEXT: NEXT: GOSUB 430: NEXT: TOTAAL = 0
350 FOR I=1 TO D: FOR J=1 TO D: FOR K=1 TO D: C(I,J,K)=N(I,J,K)
360 TOTAAL = TOTAAL + C(I,J,K): NEXT: NEXT: NEXT: RETURN
370 'INPUT "Minimum aantal buren voor geboorte van cel is "; MINLEVEN
380 'INPUT "Maximum aantal buren voor geboorte van cel is "; MAXLEVEN
390 'INPUT "Maximum aantal buren voor eenzaamheidssterfte is "; EENZAAM
400 'INPUT "Minimum aantal buren voor overbevolkingssterfte is "; DRUKTE
405 minleven=11: maxleven=16: eenzaam=3: drukte=20
410 PRINT: INPUT "Vullingspercentage willekeurig celpatroon is "; PERCENTAGE
420 G=14: B=6: W=7: E=5: D=5: RETURN
430 LOCATE 3, 13: PRINT STRING$(I,219);: RETURN