/* Evolucion El juego de la Naturaleza 2 Cordilleras Septiembre de 1999*/ /* Se autoriza la distribucion y uso libre de este programa (freeware) */ /* Fernando Galindo Soria Cd. de Mexico */ /*Modificado el 7 x 2004 genera paisajes con ruido de colores con seis dados en un espacio toroidal*/ #include #include #include #include #include #include void escrcolordac16(char ,char,char,char); void main() { float D=180,Kc=50 ,x2d,y2d,x2d1,y2d1; int x0=10, z0=10, x1=100, z1=10, x2=100, z2=100, x3=10, z3=100, bmp[100][90], basey; //bmp[x1-x0+1][z2-z1+1] char indcol[]={0,1,2,3,4,5,20,7,56,57,58,59,60,61,62,63}; char paleta[8][3]={ 32,20,0, 12,20,0, 0,30,10, 0,40,20, 0,50,0, 0,50,20, 0,63,30, 0,63,40}; float x20,y20,x21,y21,x22,y22,x23,y23,xc,zc; int gd=DETECT,gm,i; float c, max=0; randomize(); // mensaje de inicio printf("Evolucion El juego de la Naturaleza 2 Cordilleras\n"); printf("programa que genera cordilleras en forma aleatoria\n"); printf("25 de septiembre de 1999\n"); printf("Se autoriza la distribucion y uso libre de este programa (freeware)\n"); printf("Fernando Galindo Soria Cd. de Mexico\n"); printf("\n el programa termina con cualquier tecla\n"); printf("\n oprime una tecla para continuar"); getch(); initgraph(&gd,&gm,""); for(i=0;i<8;i++){ escrcolordac16(i,i*4,i*4,i*4); escrcolordac16(i+8,paleta[i][0],paleta[i][1],paleta[i][2]); } setrgbpalette(0, 63,63,63); setrgbpalette(1, 0, 0, 0); setcolor(1); for(xc=0;xc<90;xc++) for(zc=0;zc<90;zc++) bmp[xc][zc]=0; xc=x0+random(x1-x0); zc=z0+random(z2-z0); x20=x0*D/(D-z0); y20=(Kc)*D/(D-z0); x21=x1*D/(D-z1); y21=(Kc)*D/(D-z1); x22=x2*D/(D-z2); y22=(Kc)*D/(D-z2); x23=x3*D/(D-z3); y23=(Kc)*D/(D-z3); xc=20; zc=50; x2d=xc*D/(D-zc); y2d=(Kc)*D/(D-zc); i=0; while(!kbhit()&&(i<=30000)){ xc+=(random(3)-1); zc+=(random(3)-1); // if(random(3)==1){ xc+=(random(5)-2); zc+=(random(5)-2); } if(random(9)==3){ xc+=(random(7)-3); zc+=(random(7)-3); } // if(random(27)==1){ xc+=(random(9)-4); zc+=(random(9)-4); } // if(random(81)==3){ xc+=(random(11)-5); zc+=(random(11)-5); } if(random(243)==1){ xc+=(random(13)-6); zc+=(random(13)-6); } if(xc<=x0)xc=x1-4;if(xc>=x1)xc=x0+4;if(zc<=z0)zc=z2-4;if(zc>=z2)zc=z0+4; bmp[xc-x0][zc-z0]++; i++; if( max < bmp[xc-x0][zc-z0] ) max=bmp[xc-x0][zc-z0]; } line(x20,y20,x21,y21); line(x21,y21,x22,y22); line(x22,y22,x23,y23); line(x23,y23,x20,y20); basey=200; line(x20,basey+y20,x21,basey+y21); line(x21,basey+y21,x22,basey+y22); line(x22,basey+y22,x23,basey+y23); line(x23,basey+y23,x20,basey+y20); for(zc=z0;zc