#!/usr/bin/perl # gen.cgi print "Content-type: text/html\n\n"; print < [sinoth's random generator] \n # - rocks, X - water, ~ - shallow water
. - dirt,  . - grass, , - sand
* - tree,  # - spring


HEAD # 0 = blank # 1 = blue water X # 2 = green grass . # 3 = blue water ~ # 4 = brown dirt . # 5 = green tree * # 6 = yellow sand , # 7 = gray stone # # 8 = light blue fresh water X # 9 = lighter colored stone # for ( $i = 0; $i < 48; $i++ ) { for ( $j = 0; $j < 80; $j++ ) { if ( $i == 0 || $i == 1 || $i == 46 || $i == 47 ) { $map[$i][$j] = 1; } elsif ( $j == 0 || $j == 1 || $j == 78 || $j == 79 ) { $map[$i][$j] = 1; } else { $r = rand(10); $map[$i][$j] = 2; # if ( $r < 7 ) { # $map[$i][$j] = 2; # } elsif ( $r < 9 ) { # $map[$i][$j] = 4; # } elsif ( $r < 10 ) { # $map[$i][$j] = 5; # } elsif ( $r > 10 ) { # $map[$i][$j] = 6; # } } } } $map[2][2] = 1; $map[2][77] = 1; $map[45][2] = 1; $map[45][77] = 1; ################################### water first pass for ( $i = 4; $i < 76; $i++ ) { $r = rand(10); if ( $r < 3 ) { $map[2][$i] = 1; } elsif ( $r < 5 ) { $map[2][$i] = 3; } } for ( $i = 4; $i < 76; $i++ ) { $r = rand(10); if ( $r < 3 ) { $map[45][$i] = 1; } elsif ( $r < 5 ) { $map[45][$i] = 3; } } for ( $j = 4; $j < 44; $j++ ) { $r = rand(10); if ( $r < 3 ) { $map[$j][2] = 1; } elsif ( $r < 5 ) { $map[$j][2] = 3; } } for ( $j = 4; $j < 44; $j++ ) { $r = rand(10); if ( $r < 3 ) { $map[$j][77] = 1; } elsif ( $r < 5 ) { $map[$j][77] = 3; } } ################################### water second pass for ( $i = 4; $i < 76; $i++ ) { $r = rand(10); if ( $map[2][$i] == 1 ) { if ( $r < 3 ) { $map[3][$i] = 1; $map[2][$i+1] = 1; $map[2][$i-1] = 1; } elsif ( $r < 5 ) { $map[3][$i] = 3; } } } for ( $i = 4; $i < 76; $i++ ) { $r = rand(10); if ( $map[45][$i] == 1 ) { if ( $r < 3 ) { $map[44][$i] = 1; $map[45][$i+1] = 1; $map[45][$i-1] = 1; } elsif ( $r < 5 ) { $map[44][$i] = 3; } } } for ( $j = 4; $j < 44; $j++ ) { $r = rand(10); if ( $map[$j][2] == 1 ) { if ( $r < 3 ) { $map[$j][3] = 1; $map[$j+1][2] = 1; $map[$j-1][2] = 1; } elsif ( $r < 5 ) { $map[$j][3] = 3; } } } for ( $j = 4; $j < 44; $j++ ) { $r = rand(10); if ( $map[$j][77] == 1 ) { if ( $r < 3 ) { $map[$j][76] = 1; $map[$j+1][77] = 1; $map[$j-1][77] = 1; } elsif ( $r < 5 ) { $map[$j][76] = 3; } } } ################################### water third pass for ( $i = 4; $i < 76; $i++ ) { $r = rand(10); if ( $map[3][$i] == 1 ) { if ( $r < 3 ) { $map[4][$i] = 1; $map[3][$i+1] = 1; $map[3][$i-1] = 1; } elsif ( $r < 5 ) { $map[4][$i] = 3; } } } for ( $i = 4; $i < 76; $i++ ) { $r = rand(10); if ( $map[44][$i] == 1 ) { if ( $r < 3 ) { $map[43][$i] = 1; $map[44][$i+1] = 1; $map[44][$i-1] = 1; } elsif ( $r < 5 ) { $map[43][$i] = 3; } } } for ( $j = 4; $j < 44; $j++ ) { $r = rand(10); if ( $map[$j][3] == 1 ) { if ( $r < 3 ) { $map[$j][4] = 1; $map[$j+1][3] = 1; $map[$j-1][3] = 1; } elsif ( $r < 5 ) { $map[$j][4] = 3; } } } for ( $j = 4; $j < 44; $j++ ) { $r = rand(10); if ( $map[$j][76] == 1 ) { if ( $r < 3 ) { $map[$j][75] = 1; $map[$j+1][76] = 1; $map[$j-1][76] = 1; } elsif ( $r < 5 ) { $map[$j][75] = 3; } } } ################################### ################################### ################################### large water mass left $i = 13 + int(rand(10)); $j = 7 + int(rand(30)); $map[$j][$i] = 1; $water = int(rand(3)); if ( $water == 0 ) { ################ while ( $i > 1 ) { $j--; $r = 2 + int(rand(5)); for (; $r >= 0; $r--) { $map[$j][$i-$r] = 1; } $r2 = 1 + int(rand(3)); $i-=$r2; } } elsif ( $water == 1 ) { ################ while ( $i > 1 ) { $j++; $r = 2 + int(rand(5)); for (; $r >= 0; $r--) { $map[$j][$i-$r] = 1; } $r2 = 1 + int(rand(3)); $i-=$r2; } } elsif ( $water == 2 ) { ################ $itemp = $i; $jtemp = $j; while ( $i > 1 ) { $j--; $r = 2 + int(rand(5)); for (; $r >= 0; $r--) { $map[$j][$i-$r] = 1; } $r2 = 1 + int(rand(3)); $i-=$r2; } $i = $itemp; $j = $jtemp; $map[$j][$i-1] = 1; $map[$j][$i-2] = 1; $map[$j][$i-3] = 1; while ( $i > 1 ) { $j++; $r = 2 + int(rand(5)); for (; $r >= 0; $r--) { $map[$j][$i-$r] = 1; } $r2 = 1 + int(rand(3)); $i-=$r2; } } ################################### large water mass right $i = 66 - int(rand(10)); $j = 7 + int(rand(30)); $map[$j][$i] = 1; $water = int(rand(3)); if ( $water == 0 ) { ################ while ( $i < 79 ) { $j--; $r = 2 + int(rand(5)); for (; $r >= 0; $r--) { $map[$j][$i+$r] = 1; } $r2 = 1 + int(rand(3)); $i+=$r2; } } elsif ( $water == 1 ) { ################ while ( $i < 79 ) { $j++; $r = 2 + int(rand(5)); for (; $r >= 0; $r--) { $map[$j][$i+$r] = 1; } $r2 = 1 + int(rand(3)); $i+=$r2; } } elsif ( $water == 2 ) { ################ $itemp = $i; $jtemp = $j; while ( $i < 79 ) { $j--; $r = 2 + int(rand(5)); for (; $r >= 0; $r--) { $map[$j][$i+$r] = 1; } $r2 = 1 + int(rand(3)); $i+=$r2; } $i = $itemp; $j = $jtemp; $map[$j][$i-1] = 1; $map[$j][$i-2] = 1; $map[$j][$i-3] = 1; while ( $i < 79 ) { $j++; $r = 2 + int(rand(5)); for (; $r >= 0; $r--) { $map[$j][$i+$r] = 1; } $r2 = 1 + int(rand(3)); $i+=$r2; } } ################################### large water mass up $j = 6 + int(rand(5)); $i = 10 + int(rand(60)); $map[$j][$i] = 1; $water = int(rand(3)); if ( $water == 0 ) { ################ while ( $j > 1 ) { $i--; $r = 2 + int(rand(3)); for (; $r >= 0; $r--) { $map[$j-$r][$i] = 1; } $r2 = 1+int(rand(2)); $j-=$r2; } } elsif ( $water == 1 ) { ################ while ( $j > 1 ) { $i++; $r = 2 + int(rand(3)); for (; $r >= 0; $r--) { $map[$j-$r][$i] = 1; } $r2 = 1+int(rand(2)); $j-=$r2; } } elsif ( $water == 2 ) { ################ $itemp = $i; $jtemp = $j; while ( $j > 1 ) { $i--; $r = 2 + int(rand(3)); for (; $r >= 0; $r--) { $map[$j-$r][$i] = 1; } $r2 = 1+int(rand(2)); $j-=$r2; } $i = $itemp; $j = $jtemp; $map[$j-1][$i] = 1; $map[$j-2][$i] = 1; while ( $j > 1 ) { $i++; $r = 2 + int(rand(3)); for (; $r >= 0; $r--) { $map[$j-$r][$i] = 1; } $r2 = 1+int(rand(2)); $j-=$r2; } } ################################### large water mass down $j = 41 - int(rand(5)); $i = 10 + int(rand(60)); $map[$j][$i] = 1; $water = int(rand(3)); if ( $water == 0 ) { ################ while ( $j < 47 ) { $i--; $r = 2 + int(rand(3)); for (; $r >= 0; $r--) { $map[$j+$r][$i] = 1; } $r2 = 1+int(rand(2)); $j+=$r2; } } elsif ( $water == 1 ) { ################ while ( $j < 47 ) { $i++; $r = 2 + int(rand(3)); for (; $r >= 0; $r--) { $map[$j+$r][$i] = 1; } $r2 = 1+int(rand(2)); $j+=$r2; } } elsif ( $water == 2 ) { ################ $itemp = $i; $jtemp = $j; while ( $j < 47 ) { $i--; $r = 2 + int(rand(3)); for (; $r >= 0; $r--) { $map[$j+$r][$i] = 1; } $r2 = 1+int(rand(2)); $j+=$r2; } $i = $itemp; $j = $jtemp; $map[$j+1][$i] = 1; $map[$j+2][$i] = 1; while ( $j < 47 ) { $i++; $r = 2 + int(rand(3)); for (; $r >= 0; $r--) { $map[$j+$r][$i] = 1; } $r2 = 1+int(rand(2)); $j+=$r2; } } ################################### shore sand for ( $i = 2; $i < 76; $i++ ) { for ( $j=2; $map[$j][$i] == 1 || $map[$j][$i] == 3; $j++ ) {} $r = int(rand(2)); if ( $r == 0 ) { $map[$j][$i] = 6; $map[$j+1][$i] = 6; } else { $map[$j][$i] = 6; } } for ( $i = 2; $i < 76; $i++ ) { for ( $j=45; $map[$j][$i] == 1 || $map[$j][$i] == 3; $j-- ) {} $r = int(rand(2)); if ( $r == 0 ) { $map[$j][$i] = 6; $map[$j-1][$i] = 6; } else { $map[$j][$i] = 6; } } for ( $j = 2; $j < 44; $j++ ) { for ( $i=2; $map[$j][$i] == 1 || $map[$j][$i] == 3; $i++ ) {} $r = int(rand(2)); if ( $r == 0 ) { $map[$j][$i] = 6; $map[$j][$i+1] = 6; } else { $map[$j][$i] = 6; } } for ( $j = 2; $j < 44; $j++ ) { for ( $i=77; $map[$j][$i] == 1 || $map[$j][$i] == 3; $i-- ) {} $r = int(rand(2)); if ( $r == 0 ) { $map[$j][$i] = 6; $map[$j][$i-1] = 6; } else { $map[$j][$i] = 6; } } ################################ dirt patches for ($temp=0; $temp < 6; $temp++ ) { $tree1i = 5 + int(rand(68)); $tree1j = 5 + int(rand(37)); $map[$tree1j][$tree1i] = 4; for ( $temp1=$tree1i-5; $temp1 < $tree1i+6; $temp1++ ) { for ( $temp2=$tree1j-5; $temp2 < $tree1j+6; $temp2++ ) { $prob = 0; if ( $temp1 == $tree1i-5 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i-4 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i-3 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i-2 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i-1 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+1 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i+2 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+3 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i+4 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+5 ) { $prob += 0.00; } if ( $temp2 == $tree1j-5 ) { $prob += 0.00; } elsif ( $temp2 == $tree1j-4 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j-3 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j-2 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j-1 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j ) { $prob += 0.25; } elsif ( $temp2 == $tree1j+1 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j+2 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j+3 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j+4 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j+5 ) { $prob += 0.00; } if ( $map[$temp2][$temp1] == 2 ) { if ( $prob > rand() ) { $map[$temp2][$temp1] = 4; } } } } } $tree1i = 12 + int(rand(65)); $tree1j = 12 + int(rand(33)); $map[$tree1j][$tree1i] = 5; for ( $temp1=$tree1i-10; $temp1 < $tree1i+11; $temp1++ ) { for ( $temp2=$tree1j-10; $temp2 < $tree1j+11; $temp2++ ) { $prob = 0; if ( $temp1 == $tree1i-10) { $prob += 0.00; } elsif ( $temp1 == $tree1i-9 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i-8 ) { $prob += 0.10; } elsif ( $temp1 == $tree1i-7 ) { $prob += 0.15; } elsif ( $temp1 == $tree1i-6 ) { $prob += 0.20; } elsif ( $temp1 == $tree1i-5 ) { $prob += 0.25; } elsif ( $temp1 == $tree1i-4 ) { $prob += 0.30; } elsif ( $temp1 == $tree1i-3 ) { $prob += 0.35; } elsif ( $temp1 == $tree1i-2 ) { $prob += 0.40; } elsif ( $temp1 == $tree1i-1 ) { $prob += 0.45; } elsif ( $temp1 == $tree1i ) { $prob += 0.50; } elsif ( $temp1 == $tree1i+1 ) { $prob += 0.45; } elsif ( $temp1 == $tree1i+2 ) { $prob += 0.40; } elsif ( $temp1 == $tree1i+3 ) { $prob += 0.35; } elsif ( $temp1 == $tree1i+4 ) { $prob += 0.30; } elsif ( $temp1 == $tree1i+5 ) { $prob += 0.25; } elsif ( $temp1 == $tree1i+6 ) { $prob += 0.20; } elsif ( $temp1 == $tree1i+7 ) { $prob += 0.15; } elsif ( $temp1 == $tree1i+8 ) { $prob += 0.10; } elsif ( $temp1 == $tree1i+9 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+10) { $prob += 0.00; } if ( $temp2 == $tree1j-10) { $prob += 0.00; } elsif ( $temp2 == $tree1j-9 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j-8 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j-7 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j-6 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j-5 ) { $prob += 0.25; } elsif ( $temp2 == $tree1j-4 ) { $prob += 0.30; } elsif ( $temp2 == $tree1j-3 ) { $prob += 0.35; } elsif ( $temp2 == $tree1j-2 ) { $prob += 0.40; } elsif ( $temp2 == $tree1j-1 ) { $prob += 0.45; } elsif ( $temp2 == $tree1j ) { $prob += 0.50; } elsif ( $temp2 == $tree1j+1 ) { $prob += 0.45; } elsif ( $temp2 == $tree1j+2 ) { $prob += 0.40; } elsif ( $temp2 == $tree1j+3 ) { $prob += 0.35; } elsif ( $temp2 == $tree1j+4 ) { $prob += 0.30; } elsif ( $temp2 == $tree1j+5 ) { $prob += 0.25; } elsif ( $temp2 == $tree1j+6 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j+7 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j+8 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j+9 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j+10) { $prob += 0.00; } if ( $map[$temp2][$temp1] == 2 ) { if ( $prob > rand() ) { $map[$temp2][$temp1] = 4; } } } } ################################### final sand for ( $i = 1; $i < 79; $i++ ) { for ( $j = 1; $j < 47; $j++ ) { if ( ($map[$j][$i] != 1 && $map[$j][$i] != 3) && ($map[$j+1][$i] == 1 || $map[$j-1][$i] == 1 || $map[$j][$i+1] == 1 || $map[$j][$i-1] == 1 ) ) { if ( rand(10) < 5 ) { $map[$j][$i] = 6; } } } } ################################ rock patches for ($temp=0; $temp < 3; $temp++ ) { $tree1i = 5 + int(rand(68)); $tree1j = 5 + int(rand(37)); $map[$tree1j][$tree1i] = 7; for ( $temp1=$tree1i-5; $temp1 < $tree1i+6; $temp1++ ) { for ( $temp2=$tree1j-5; $temp2 < $tree1j+6; $temp2++ ) { $prob = 0; if ( $temp1 == $tree1i-5 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i-4 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i-3 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i-2 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i-1 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+1 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i+2 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+3 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i+4 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+5 ) { $prob += 0.00; } if ( $temp2 == $tree1j-5 ) { $prob += 0.00; } elsif ( $temp2 == $tree1j-4 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j-3 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j-2 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j-1 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j ) { $prob += 0.25; } elsif ( $temp2 == $tree1j+1 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j+2 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j+3 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j+4 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j+5 ) { $prob += 0.00; } if ( $map[$temp2][$temp1] == 2 || $map[$temp2][$temp1] == 4 ) { if ( $prob > rand() ) { $map[$temp2][$temp1] = 7; } } } } } $tree1i = 12 + int(rand(65)); $tree1j = 12 + int(rand(33)); $map[$tree1j][$tree1i] = 5; for ( $temp1=$tree1i-10; $temp1 < $tree1i+11; $temp1++ ) { for ( $temp2=$tree1j-10; $temp2 < $tree1j+11; $temp2++ ) { $prob = 0; if ( $temp1 == $tree1i-10) { $prob += 0.00; } elsif ( $temp1 == $tree1i-9 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i-8 ) { $prob += 0.10; } elsif ( $temp1 == $tree1i-7 ) { $prob += 0.15; } elsif ( $temp1 == $tree1i-6 ) { $prob += 0.20; } elsif ( $temp1 == $tree1i-5 ) { $prob += 0.25; } elsif ( $temp1 == $tree1i-4 ) { $prob += 0.40; } elsif ( $temp1 == $tree1i-3 ) { $prob += 0.45; } elsif ( $temp1 == $tree1i-2 ) { $prob += 0.45; } elsif ( $temp1 == $tree1i-1 ) { $prob += 0.45; } elsif ( $temp1 == $tree1i ) { $prob += 0.50; } elsif ( $temp1 == $tree1i+1 ) { $prob += 0.45; } elsif ( $temp1 == $tree1i+2 ) { $prob += 0.45; } elsif ( $temp1 == $tree1i+3 ) { $prob += 0.45; } elsif ( $temp1 == $tree1i+4 ) { $prob += 0.40; } elsif ( $temp1 == $tree1i+5 ) { $prob += 0.25; } elsif ( $temp1 == $tree1i+6 ) { $prob += 0.20; } elsif ( $temp1 == $tree1i+7 ) { $prob += 0.15; } elsif ( $temp1 == $tree1i+8 ) { $prob += 0.10; } elsif ( $temp1 == $tree1i+9 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+10) { $prob += 0.00; } if ( $temp2 == $tree1j-10) { $prob += 0.00; } elsif ( $temp2 == $tree1j-9 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j-8 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j-7 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j-6 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j-5 ) { $prob += 0.25; } elsif ( $temp2 == $tree1j-4 ) { $prob += 0.40; } elsif ( $temp2 == $tree1j-3 ) { $prob += 0.45; } elsif ( $temp2 == $tree1j-2 ) { $prob += 0.45; } elsif ( $temp2 == $tree1j-1 ) { $prob += 0.45; } elsif ( $temp2 == $tree1j ) { $prob += 0.50; } elsif ( $temp2 == $tree1j+1 ) { $prob += 0.45; } elsif ( $temp2 == $tree1j+2 ) { $prob += 0.45; } elsif ( $temp2 == $tree1j+3 ) { $prob += 0.45; } elsif ( $temp2 == $tree1j+4 ) { $prob += 0.40; } elsif ( $temp2 == $tree1j+5 ) { $prob += 0.25; } elsif ( $temp2 == $tree1j+6 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j+7 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j+8 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j+9 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j+10) { $prob += 0.00; } if ( $map[$temp2][$temp1] == 2 || $map[$temp2][$temp1] == 4 ) { if ( $prob > rand() ) { $map[$temp2][$temp1] = 7; } } } } for ( $temptree=int(rand(2))+1; $temptree > 0; $temptree-- ) { ################################ tree patch for ($temp=0; $temp < 6; $temp++ ) { $tree1i = 10 + int(rand(58)); $tree1j = 10 + int(rand(27)); $map[$tree1j][$tree1i] = 5; for ( $temp1=$tree1i-5; $temp1 < $tree1i+6; $temp1++ ) { for ( $temp2=$tree1j-5; $temp2 < $tree1j+6; $temp2++ ) { $prob = 0; if ( $temp1 == $tree1i-5 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i-4 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i-3 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i-2 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i-1 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+1 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i+2 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+3 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i+4 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+5 ) { $prob += 0.00; } if ( $temp2 == $tree1j-5 ) { $prob += 0.00; } elsif ( $temp2 == $tree1j-4 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j-3 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j-2 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j-1 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j ) { $prob += 0.25; } elsif ( $temp2 == $tree1j+1 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j+2 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j+3 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j+4 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j+5 ) { $prob += 0.00; } if ( $map[$temp2][$temp1] == 2 || $map[$temp2][$temp1] == 4 || $map[$temp2][$temp1] == 7) { if ( $prob > rand() ) { $map[$temp2][$temp1] = 5; } } } } } $tree1i = 12 + int(rand(55)); $tree1j = 12 + int(rand(23)); $map[$tree1j][$tree1i] = 5; for ( $temp1=$tree1i-10; $temp1 < $tree1i+11; $temp1++ ) { for ( $temp2=$tree1j-10; $temp2 < $tree1j+11; $temp2++ ) { $prob = 0; if ( $temp1 == $tree1i-10) { $prob += 0.00; } elsif ( $temp1 == $tree1i-9 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i-8 ) { $prob += 0.10; } elsif ( $temp1 == $tree1i-7 ) { $prob += 0.15; } elsif ( $temp1 == $tree1i-6 ) { $prob += 0.20; } elsif ( $temp1 == $tree1i-5 ) { $prob += 0.25; } elsif ( $temp1 == $tree1i-4 ) { $prob += 0.30; } elsif ( $temp1 == $tree1i-3 ) { $prob += 0.35; } elsif ( $temp1 == $tree1i-2 ) { $prob += 0.40; } elsif ( $temp1 == $tree1i-1 ) { $prob += 0.45; } elsif ( $temp1 == $tree1i ) { $prob += 0.50; } elsif ( $temp1 == $tree1i+1 ) { $prob += 0.45; } elsif ( $temp1 == $tree1i+2 ) { $prob += 0.40; } elsif ( $temp1 == $tree1i+3 ) { $prob += 0.35; } elsif ( $temp1 == $tree1i+4 ) { $prob += 0.30; } elsif ( $temp1 == $tree1i+5 ) { $prob += 0.25; } elsif ( $temp1 == $tree1i+6 ) { $prob += 0.20; } elsif ( $temp1 == $tree1i+7 ) { $prob += 0.15; } elsif ( $temp1 == $tree1i+8 ) { $prob += 0.10; } elsif ( $temp1 == $tree1i+9 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+10) { $prob += 0.00; } if ( $temp2 == $tree1j-10) { $prob += 0.00; } elsif ( $temp2 == $tree1j-9 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j-8 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j-7 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j-6 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j-5 ) { $prob += 0.25; } elsif ( $temp2 == $tree1j-4 ) { $prob += 0.30; } elsif ( $temp2 == $tree1j-3 ) { $prob += 0.35; } elsif ( $temp2 == $tree1j-2 ) { $prob += 0.40; } elsif ( $temp2 == $tree1j-1 ) { $prob += 0.45; } elsif ( $temp2 == $tree1j ) { $prob += 0.50; } elsif ( $temp2 == $tree1j+1 ) { $prob += 0.45; } elsif ( $temp2 == $tree1j+2 ) { $prob += 0.40; } elsif ( $temp2 == $tree1j+3 ) { $prob += 0.35; } elsif ( $temp2 == $tree1j+4 ) { $prob += 0.30; } elsif ( $temp2 == $tree1j+5 ) { $prob += 0.25; } elsif ( $temp2 == $tree1j+6 ) { $prob += 0.20; } elsif ( $temp2 == $tree1j+7 ) { $prob += 0.15; } elsif ( $temp2 == $tree1j+8 ) { $prob += 0.10; } elsif ( $temp2 == $tree1j+9 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j+10) { $prob += 0.00; } if ( $map[$temp2][$temp1] == 2 || $map[$temp2][$temp1] == 4 || $map[$temp2][$temp1] == 7) { if ( $prob > rand() ) { $map[$temp2][$temp1] = 5; } } } } ###################################### river $r = int(rand(4)); if ( $r == 0 ) { $wp1i = 2 + int(rand(76)); $wp1j = 2; } elsif ( $r == 1 ) { $wp1i = 2 + int(rand(76)); $wp1j = 45; } elsif ( $r == 2 ) { $wp1i = 2; $wp1j = 2 + int(rand(76)); } elsif ( $r == 3 ) { $wp1i = 77; $wp1j = 2 + int(rand(44)); } #$wp2i = 10 + int(rand(58)); #$wp2j = 10 + int(rand(26)); $wp2i = $tree1i; $wp2j = $tree1j; ############# $map[$wp1j][$wp1i] = 1; $map[$wp2j][$wp2i] = 1; $map[$wp2j+1][$wp2i] = 9; $map[$wp2j-1][$wp2i] = 9; $map[$wp2j][$wp2i+1] = 9; $map[$wp2j][$wp2i-1] = 9; $map[$wp2j+1][$wp2i-1] = 9; $map[$wp2j-1][$wp2i-1] = 9; $map[$wp2j+1][$wp2i+1] = 9; $map[$wp2j-1][$wp2i+1] = 9; #$map[$wp3j][$wp3i] = 1; $quit=1; while ( $quit ) { if ( $wp1i > $wp2i ) { if ( rand(2) < 1 ) { $wp1i -= 1; } } if ( $wp1i < $wp2i ) { if ( rand(2) < 1 ) { $wp1i += 1; } } if ( $wp1j > $wp2j ) { if ( rand(2) < 1 ) { $wp1j -= 1; } } if ( $wp1j < $wp2j ) { if ( rand(2) < 1 ) { $wp1j += 1; } } if ( $wp1j == $wp2j && $wp1i == $wp2i ) { $quit=0; } if ( $wp1j == $wp2j ) { $r = rand(10); if ( $r < 3 ) { $wp1j -= 1; } elsif ( $r < 6 ) { $wp1j -= 1; } else { $wp1j += 0; } } if ( $wp1i == $wp2i ) { $r = rand(10); if ( $r < 3 ) { $wp1i -= 1; } elsif ( $r < 6 ) { $wp1i -= 1; } else { $wp1i += 0; } } if ( $wp3i > $wp2i ) { if ( rand(2) < 1 ) { $wp3i -= 1; } } if ( $wp3i < $wp2i ) { if ( rand(2) < 1 ) { $wp3i += 1; } } if ( $wp3j > $wp2j ) { if ( rand(2) < 1 ) { $wp3j -= 1; } } if ( $wp3j < $wp2j ) { if ( rand(2) < 1 ) { $wp3j += 1; } } $map[$wp1j][$wp1i] = 1; #$map[$wp3j][$wp3i] = 1; } } ################################## pond for ($tempond=int(rand(3))+1; $tempond > 0; $tempond-- ) { $tree1i = 10 + int(rand(60)); $tree1j = 10 + int(rand(28)); $map[$tree1j][$tree1i] = 1; for ( $temp1=$tree1i-5; $temp1 < $tree1i+6; $temp1++ ) { for ( $temp2=$tree1j-5; $temp2 < $tree1j+6; $temp2++ ) { $prob = 0; if ( $temp1 == $tree1i-5 ) { $prob += 0.00; } elsif ( $temp1 == $tree1i-4 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i-3 ) { $prob += 0.25; } elsif ( $temp1 == $tree1i-2 ) { $prob += 0.40; } elsif ( $temp1 == $tree1i-1 ) { $prob += 0.40; } elsif ( $temp1 == $tree1i ) { $prob += 0.50; } elsif ( $temp1 == $tree1i+1 ) { $prob += 0.40; } elsif ( $temp1 == $tree1i+2 ) { $prob += 0.40; } elsif ( $temp1 == $tree1i+3 ) { $prob += 0.25; } elsif ( $temp1 == $tree1i+4 ) { $prob += 0.05; } elsif ( $temp1 == $tree1i+5 ) { $prob += 0.00; } if ( $temp2 == $tree1j-5 ) { $prob += 0.00; } elsif ( $temp2 == $tree1j-4 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j-3 ) { $prob += 0.25; } elsif ( $temp2 == $tree1j-2 ) { $prob += 0.40; } elsif ( $temp2 == $tree1j-1 ) { $prob += 0.40; } elsif ( $temp2 == $tree1j ) { $prob += 0.50; } elsif ( $temp2 == $tree1j+1 ) { $prob += 0.40; } elsif ( $temp2 == $tree1j+2 ) { $prob += 0.40; } elsif ( $temp2 == $tree1j+3 ) { $prob += 0.25; } elsif ( $temp2 == $tree1j+4 ) { $prob += 0.05; } elsif ( $temp2 == $tree1j+5 ) { $prob += 0.00; } if ( $map[$temp2][$temp1] == 2 || $map[$temp2][$temp1] == 4 || $map[$temp2][$temp1] == 7|| $map[$temp2][$temp1] == 5 ) { if ( $prob > rand() ) { $map[$temp2][$temp1] = 1; } } } } } ################################### final small water for ( $i = 1; $i < 79; $i++ ) { for ( $j = 1; $j < 47; $j++ ) { if ( ($map[$j][$i] != 1 && $map[$j][$i] != 3) && ($map[$j+1][$i] == 1 || $map[$j-1][$i] == 1 || $map[$j][$i+1] == 1 || $map[$j][$i-1] == 1 ) ) { if ( rand(10) < 2 ) { $map[$j][$i] = 3; } } } } #################################### render for ( $i = 0; $i < 48; $i++ ) { for ( $j = 0; $j < 80; $j++ ) { if ( $map[$i][$j] == 1 ) { print "X"; } elsif ( $map[$i][$j] == 2 ) { print "."; } elsif ( $map[$i][$j] == 3 ) { print "~"; } elsif ( $map[$i][$j] == 4 ) { print "."; } elsif ( $map[$i][$j] == 5 ) { print "*"; } elsif ( $map[$i][$j] == 6 ) { print ","; } elsif ( $map[$i][$j] == 7 ) { print "#"; } elsif ( $map[$i][$j] == 8 ) { print "X"; } elsif ( $map[$i][$j] == 9 ) { print "#"; } else { print "x"; } } print "
\n"; } print "
\n"; #################################### render pixels for ( $i = 0; $i < 48; $i++ ) { for ( $j = 0; $j < 80; $j++ ) { if ( $map[$i][$j] == 1 ) { print ""; } elsif ( $map[$i][$j] == 2 ) { print ""; } elsif ( $map[$i][$j] == 3 ) { print ""; } elsif ( $map[$i][$j] == 4 ) { print ""; } elsif ( $map[$i][$j] == 5 ) { print ""; } elsif ( $map[$i][$j] == 6 ) { print ""; } elsif ( $map[$i][$j] == 7 ) { print ""; } elsif ( $map[$i][$j] == 8 ) { print ""; } elsif ( $map[$i][$j] == 9 ) { print ""; } else { print ""; } } print "
\n"; } print < END