'Sim Gen 1.0á-Simulador Genetico 'Atualmente: 'G1 G2 G3 G4 'XY Aa Bb Cc ' 'G1=>XX feminino XY masculino 'G2=>aa=+8 ciclos de vida 'G3=>bb=75% nao consegue nascer BB=10% mutacao no gene G2 p/Aa 'G4=>cc=infertil ' DECLARE FUNCTION NovoGen$(a$,b$) DEFINT A-Z RANDOMIZE TIMER Fator=40 Flag=0 TYPE CType Idade AS INTEGER Max AS INTEGER Id AS INTEGER G1 AS STRING*2 G2 AS STRING*2 G3 AS STRING*2 G4 AS STRING*2 END TYPE DIM Cell(1 TO 4681)AS CType NC=2 Cell(1).Max=6:Cell(1).Id=0 Cell(1).G1="XY":Cell(1).G2="Aa":Cell(1).G3="Bb":Cell(1).G4="Cc Cell(2).Max=6:Cell(2).Id=1 Cell(2).G1="XX":Cell(2).G2="Aa":Cell(2).G3="bb":Cell(2).G4="Cc ct=1 DO CLS FOR i=1 TO NC Cell(i).Idade=Cell(i).Idade+1 IF Cell(i).Idade<=Cell(i).Max THEN ?USING "[#####:\\\\\\\\]";Cell(i).Id;Cell(i).G1;Cell(i).G2;Cell(i).G3;Cell(i).G4; END IF NEXT IF Flag THEN SOUND 800,1 SOUND 650,1 SOUND 1200,1 t!=TIMER END IF 1 FOR i=1 TO NC IF Cell(i).Idade>Cell(i).Max THEN NC=NC-1 FOR j=i TO NC Cell(j).Id=Cell(j+1).Id Cell(j).Idade=Cell(j+1).Idade Cell(j).Max=Cell(j+1).Max Cell(j).G1=Cell(j+1).G1 Cell(j).G2=Cell(j+1).G2 Cell(j).G3=Cell(j+1).G3 Cell(j).G4=Cell(j+1).G4 NEXT GOTO 1 END IF NEXT IF NC<=0 OR INKEY$="" THEN EXIT DO x=0:y=0 FOR i=1 TO NC x=x-(Cell(i).G1="XX") y=y-(Cell(i).G1="XY") NEXT IF x>0 AND y>0 THEN FOR i=1 TO NC\2 IF INT(RND*100)b IF Cell(a).G4<>"cc" AND Cell(b).G4<>"cc" THEN IF NC=4681 THEN EXIT DO NC=NC+1 IF ct=32767 THEN ct=-1 ct=ct+1 Cell(NC).Id=ct Cell(NC).G1=NovoGen$(Cell(a).G1,Cell(b).G1) Cell(NC).G2=NovoGen$(Cell(a).G2,Cell(b).G2) Cell(NC).G3=NovoGen$(Cell(a).G3,Cell(b).G3) Cell(NC).G4=NovoGen$(Cell(a).G4,Cell(b).G4) Cell(NC).Max=6-8*(Cell(NC).G2="aa") IF Cell(NC).G3="bb" AND INT(RND*4)>0 THEN NC=NC-1:ct=ct-1 IF ct=-1 THEN ct=32767 ELSEIF Cell(NC).G3="BB" THEN IF INT(RND*10)=0 THEN Cell(NC).G2="Aa END IF END IF END IF NEXT END IF IF Flag THEN DO:LOOP UNTIL TIMER-t!>1 LOOP ? ?"Pressione alguma tecla para continuar... a$=INPUT$(1) CLS IF NC>0 THEN ?"Estatisticas: ?"Celulas :";NC ? ?"XX","XY x=0:y=0 FOR i=1 TO NC IF Cell(i).G1="XX" THEN x=x+1 ELSE y=y+1 NEXT ?x*100!/NC,y*100!/NC ? ?"AA","Aa","aa n1=0:n2=0:n3=0 FOR i=1 TO NC IF Cell(i).G2="AA" THEN n1=n1+1 ELSEIF Cell(i).G2="Aa" THEN n2=n2+1 ELSE n3=n3+1 END IF NEXT ?n1*100!/NC,n2*100!/NC,n3*100!/NC ? ?"BB","Bb","bb n1=0:n2=0:n3=0 FOR i=1 TO NC IF Cell(i).G3="BB" THEN n1=n1+1 ELSEIF Cell(i).G3="Bb" THEN n2=n2+1 ELSE n3=n3+1 END IF NEXT ?n1*100!/NC,n2*100!/NC,n3*100!/NC ? ?"CC","Cc","cc n1=0:n2=0:n3=0 FOR i=1 TO NC IF Cell(i).G4="CC" THEN n1=n1+1 ELSEIF Cell(i).G4="Cc" THEN n2=n2+1 ELSE n3=n3+1 END IF NEXT ?n1*100!/NC,n2*100!/NC,n3*100!/NC ?"**************** ELSE ?"Populacao extinta END IF ? ?"Repetir ?"; r$=UCASE$(INPUT$(1)) ?r$ IF r$="S" THEN RUN SYSTEM FUNCTION NovoGen$(a$,b$) IF INT(RND*2)THEN x$=LEFT$(a$,1)ELSE x$=RIGHT$(a$,1) IF INT(RND*2)THEN y$=LEFT$(b$,1)ELSE y$=RIGHT$(b$,1) IF x$>"Z" OR y$<"a" THEN SWAP x$,y$ NovoGen$=(x$+y$) END FUNCTION