d * Biomorphs * n by Mike Cook x (c) Micro User 1  morph(5,12),parent(5)  gi(5,2),px(12),py(12) < READ IN INCREMENTS AND LIMITS (MIN & MAX) OF EACH GENE dH@  A%=0 2: B%=0 5  gi(B%,A%):: 4 1,4,0.16,0.2,0.16,2 :REM GENE INCREMENTS - 1,-36,-3.14,0.1,-3.14,-18 :REM GENE MIN - 9,36,3.14,10,3.14,18 :REM GENE MAX +_INTPOS : INITIALISE DISPLAY POSITION _INTP : INITIALISE PARENT gen=0  0   gen=gen+1 " _MUTATE , _DISPLAY 6 _CHOSE @ J _INTP T A$="C" ^parent(0)=1 hparent(1)=4 rparent(2)=.785 |parent(3)=1 parent(4)=0 parent(5)=0  A$="A"  A%=0 5  parent(A%)=((5)+1)*gi(A%,0)  parent(0)=(3)+1   _MUTATE  B%=1 12  A%=0 5 morph(A%,B%)=parent(A%)  (B%2) D%=-1 D%=1 C%=(B%-1)2  C%<>A% TpB V morph(A%,B%)+D%*(gi(A%,0))gi(A%,2) TpB &+morph(A%,B%)=morph(A%,B%)+D%*(gi(A%,0)) 0 :: : _DISPLAY D _LINES NO_TREE(parent(0),parent(1),parent(2),parent(3),parent(4),parent(5),640,500) X A%=1 12 ba_TREE(morph(0,A%),morph(1,A%),morph(2,A%),morph(3,A%),morph(4,A%),morph(5,A%),px(A%),py(A%)) l: v _INTPOS  DHC  A=1 12  px(A),py(A): ''(14);"Biomorph" )"An exercise in Darwinian Evolution" ''"By Mike Cook" *"Based on an idea by Richard Dawkins" %"Author of THE BLIND WATCHMAKER" *'''"Options to start evolving from:-" "A - A microbe." "B - Some random point." "C - A defined point." &'"Press the key of your choice."; -A$=: (A$="A" A$="B" A$="C") TBC  : A$<>"C"  A%=0 5  "Gene number ";A%"="; * parent(A%) 4d parent(A%)>gi(A%,2) parent(A%): HH 160,860,480,860,800,860,1120,860,160,604,1120,604,160,348,1120,348 R" 160,92,480,92,800,92,1120,92 \ _LINES f 12,23,1,0;0;0;0;5 p z X%=320 960 320  Y%=256 800 256  X%,0: X%,1023  0,Y%: 1259,Y% :  640,260: 7,640,764  324,512: 7,958,512  A%=1 12  px(A%)-150,py(A%)-60  &40+A%:  360,322 "PARENT BIOMORPH"  360,755 "GENERATION NUMBER ";gen 4:  _CHOSE 5: 360,290 $+"? or Breed from child (A-L) ?";:*FX15 .A$= 8A$;:C%=(A$)-&40 B C%<0 C%>12 _REVIEW: L A%=0 5 Vparent(A%)=morph(A%,C%) ` :4: j _REVIEW t 22,1 ~''"Current Biomorph has:-"  A%=0 5 #"GENE ";A%" VALUE ";parent(A%)  O_TREE(parent(0),parent(1),parent(2),parent(3),parent(4),parent(5),640,300) (0,30);"Press any key to continue"; A$=:gen=gen-1:22,0  ! _TREE(D,L,dA,AR,DT,DS,X,Y)  X,Y: X,Y-L _GROW(/2,L,X,Y,D)   _GROW(TH,L,X,Y,D)  D X,Y  dX=L*(TH+dA)*(1/AR) dY=L*(TH+dA)*AR  1,dX,dY ('_GROW(TH+dA+DT,L-DS,X+dX,Y+dY,D-1) 2 X,Y <dX=L*(TH-dA)*(1/AR) FdY=L*(TH-dA)*AR P 1,dX,dY: X,Y Z'_GROW(TH-dA-DT,L-DS,X+dX,Y+dY,D-1) d