home *** CD-ROM | disk | FTP | other *** search
/ RUN Flagazine: Run 2 / run2.zip / 3DLIFE.BAS next >
BASIC Source File  |  2014-09-03  |  3KB  |  46 lines

  1. 100 REM 3D LIFE GWBASIC EGA/VGA (C) J. Stavleu/N. Baaijens
  2. 110 DEFINT A-Z: KEY OFF: SCREEN 9: WINDOW SCREEN (0,0) - (640,400)
  3. 120 COLOR 14,0:CLS: GOSUB 420: D1 = D + 1: DIM C(D1,D1,D1), N(D1,D1,D1)
  4. 130 TOTAAL = -1: CLS: RANDOMIZE -TIMER: GOSUB 320: GOSUB 250
  5. 140 WHILE (TOTAAL <> 0) AND (INKEY$ = "")
  6. 150 GOSUB 340: CLS: GOSUB 250: WEND:END
  7. 160 X = 320 + K*7*E-J*7*E: Y = 200 - I*6*E+K*3*E+J*3*E
  8. 170 PSET (X,Y),W: LINE -(X+7*E,Y-3*E),W: LINE -(X+7*E,Y-9*E),W
  9. 180 LINE -(X,Y-12*E),W: LINE -(X-7*E,Y-9*E),W: LINE -(X-7*E,Y-3*E),W
  10. 190 LINE -(X,Y),W: PAINT (X-3*E,Y-3*E),0,W
  11. 200 PSET (X,Y),G: LINE -(X+7*E,Y-3*E),G: LINE -(X+7*E,Y-9*E),G
  12. 210 LINE -(X,Y-12*E),G: LINE -(X-7*E,Y-9*E),G: LINE -(X-7*E,Y-3*E),G
  13. 220 LINE -(X,Y),G: LINE -(X,Y-6*E),G: LINE -(X-7*E,Y-9*E),G
  14. 230 PSET (X,Y-6*E),G: LINE -(X+7*E,Y-9*E),G: PAINT (X-3*E,Y-3*E),G,G
  15. 240 PAINT (X,Y-9*E),B,G: PAINT (X+3*E, Y-3*E),0,G: RETURN
  16. 250 GENERATIE=GENERATIE+1: LOCATE 1,1: PRINT "Generatie:"; GENERATIE
  17. 260 PRINT "Aantal   :"; TOTAAL; "("; INT(TOTAAL/D/D/D*100+.5); "% )"
  18. 270 PRINT "Berekening: "; STRING$(D,177):PRINT "Minleven: ";MINL
  19. 280 PRINT "Maxleven:";MAXL:PRINT "Eenzaam:  ";EENZ:PRINT "Drukte:   ";DRUK
  20. 290 IF VL=1 THEN LOCATE 24,34:PRINT "DEMO-RUN";
  21. 300 FOR I=1 TO D: FOR J=1 TO D: FOR K=1 TO D: IF C(I,J,K)=1 THEN GOSUB 160
  22. 310 NEXT: NEXT: NEXT: RETURN
  23. 320 AANTAL = PERC/100*D*D*D: FOR TELLER=1 TO AANTAL: I=RND*D+1
  24. 330 J=RND*D+1: K=RND*D+1: C(I,J,K)=1: NEXT: TOTAAL = AANTAL: RETURN
  25. 340 FOR I=1 TO D: FOR J=1 TO D: FOR K=1 TO D: N(I,J,K)=C(I,J,K)
  26. 350 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
  27. 360 BUREN = BUREN + C(X,Y,Z): NEXT: NEXT: NEXT
  28. 370 IF (BUREN >= MINL) AND (BUREN <= MAXL) THEN N(I,J,K)=1
  29. 380 IF (BUREN <= EENZ) OR (BUREN >= DRUK) THEN N(I,J,K) = 0
  30. 390 NEXT: NEXT: GOSUB 490: NEXT: TOTAAL = 0
  31. 400 FOR I=1 TO D: FOR J=1 TO D: FOR K=1 TO D: C(I,J,K)=N(I,J,K)
  32. 410 TOTAAL = TOTAAL + C(I,J,K): NEXT: NEXT: NEXT: RETURN
  33. 420 INPUT "Minimum aantal buren voor geboorte van cel is      "; MINL
  34. 430 INPUT "Maximum aantal buren voor geboorte van cel is      "; MAXL
  35. 440 INPUT "Maximum aantal buren voor eenzaamheidssterfte is   "; EENZ
  36. 450 INPUT "Minimum aantal buren voor overbevolkingssterfte is "; DRUK
  37. 460 PRINT:INPUT "Vullingspercentage willekeurig celpatroon is "; PERC
  38. 470 IF MINL=0 THEN MINL=3:MAXL=20:EENZ=5:DRUK=11:PERC=200:VL=1
  39. 480 G=10: B=13: W=8: E=5: D=5: RETURN
  40. 490 LOCATE 3, 13: PRINT STRING$(I,219);: RETURN
  41. 500 REM /* 39/.3386,3353,3245,1922,2045,2273,3251,3535,2151,3203
  42. 510 REM /*/....3487,3024,3565,3017,4329,3502,4233,4944,2572,3661
  43. 520 REM /*/....1611,3387,3735,3100,3752,2498,3012,2967,2292,3100
  44. 530 REM /*/....3137,4890,4894,5433,5693,5673,3696,1795,2548
  45. 540 REM Checksum...............:  131911
  46.