home *** CD-ROM | disk | FTP | other *** search
/ RUN Flagazine Extra: Special 3 / run-special-3.zip / 3DLIFE.BAS next >
BASIC Source File  |  1989-11-24  |  3KB  |  44 lines

  1. 10 REM --- BELANGRIJKE VARIABELEN IN DE INVOER-ROUTINE
  2. 20 REM --- Overleven: voorbeeld: minleven=10, maxleven=16, eenzaam=4, drukte=20
  3. 30 REM --- Kleuren  : G=geel=14, B=bruin=6, W=wit(grijs)=7
  4. 40 REM --- Tekening : E=TekenEenheid=2
  5. 50 REM --- Afmeting : D=Dimensie=10 (= 10 bij 10 bij 10 cellen)
  6. 60 REM ---            E*D < 25
  7. 100 DEFINT A-Z: KEY OFF: SCREEN 9: WINDOW SCREEN (0,0) - (640,400)
  8. 110 CLS: GOSUB 370: D1 = D + 1: DIM C(D1,D1,D1), N(D1,D1,D1)
  9. 130 TOTAAL = -1: CLS: RANDOMIZE -TIMER: GOSUB 280: GOSUB 240
  10. 140 WHILE (TOTAAL <> 0) AND (INKEY$ = "")
  11. 150 GOSUB 300: CLS: GOSUB 240: WEND:END
  12. 160 X = 320 + K*7*E-J*7*E: Y = 200 - I*6*E+K*3*E+J*3*E
  13. 170 PSET (X,Y),W: LINE -(X+7*E,Y-3*E),W: LINE -(X+7*E,Y-9*E),W
  14. 175 LINE -(X,Y-12*E),W: LINE -(X-7*E,Y-9*E),W: LINE -(X-7*E,Y-3*E),W
  15. 180 LINE -(X,Y),W: PAINT (X-3*E,Y-3*E),0,W
  16. 190 PSET (X,Y),G: LINE -(X+7*E,Y-3*E),G: LINE -(X+7*E,Y-9*E),G
  17. 200 LINE -(X,Y-12*E),G: LINE -(X-7*E,Y-9*E),G: LINE -(X-7*E,Y-3*E),G
  18. 210 LINE -(X,Y),G: LINE -(X,Y-6*E),G: LINE -(X-7*E,Y-9*E),G
  19. 220 PSET (X,Y-6*E),G: LINE -(X+7*E,Y-9*E),G: PAINT (X-3*E,Y-3*E),g,G
  20. 230 PAINT (X,Y-9*E),b,G: paint (x+3*e, y-3*e),0,g: RETURN
  21. 240 GENERATIE=GENERATIE+1: LOCATE 1,1: PRINT "Generatie:"; GENERATIE
  22. 250 PRINT "Aantal   :"; TOTAAL; "("; INT(TOTAAL/D/D/D*100+.5); "% )"
  23. 255 PRINT "Berekening: "; STRING$(D,177)
  24. 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
  25. 270 NEXT: NEXT: NEXT: RETURN
  26. 280 AANTAL = PERCENTAGE/100*D*D*D: FOR TELLER=1 TO AANTAL: I=RND*D+1
  27. 290 J=RND*D+1: K=RND*D+1: C(I,J,K)=1: NEXT: TOTAAL = AANTAL: RETURN
  28. 300 FOR I=1 TO D: FOR J=1 TO D: FOR K=1 TO D: N(I,J,K)=C(I,J,K)
  29. 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
  30. 320 BUREN = BUREN + C(X,Y,Z): NEXT: NEXT: NEXT
  31. 330 IF (BUREN >= MINLEVEN) AND (BUREN <= MAXLEVEN) THEN N(I,J,K)=1
  32. 340 IF (BUREN <= EENZAAM) OR (BUREN >= DRUKTE) THEN N(I,J,K) = 0
  33. 345 NEXT: NEXT: GOSUB 430: NEXT: TOTAAL = 0
  34. 350 FOR I=1 TO D: FOR J=1 TO D: FOR K=1 TO D: C(I,J,K)=N(I,J,K)
  35. 360 TOTAAL = TOTAAL + C(I,J,K): NEXT: NEXT: NEXT: RETURN
  36. 370 'INPUT "Minimum aantal buren voor geboorte van cel is      "; MINLEVEN
  37. 380 'INPUT "Maximum aantal buren voor geboorte van cel is      "; MAXLEVEN
  38. 390 'INPUT "Maximum aantal buren voor eenzaamheidssterfte is   "; EENZAAM
  39. 400 'INPUT "Minimum aantal buren voor overbevolkingssterfte is "; DRUKTE
  40. 405 minleven=11: maxleven=16: eenzaam=3: drukte=20
  41. 410 PRINT: INPUT "Vullingspercentage willekeurig celpatroon is "; PERCENTAGE
  42. 420 G=14: B=6: W=7: E=5: D=5: RETURN
  43. 430 LOCATE 3, 13: PRINT STRING$(I,219);: RETURN
  44.