#!/usr/bin/perl # mcc@grumpybumpers.com # This is a CGI frontend to the GIF manipulation functions in "evo.pm". use evo; use CGI; use strict; use CGI::Carp qw (fatalsToBrowser); my $q = new CGI; my $d = "i"; print <Pixel Breeder EOF my ($k, $g, $s, $o) = (int($q->param('k')), int($q->param('g')), int($q->param('s')), int($q->param('o'))); # Images are generated thus: $k-$g-$s-$o.gif # For: Key - Generation - Selection - Offspring unless ($k) { print < EOF } else { open(LO, ">>$d/genlog.txt"); unless ($g) { $g = 1; $s = 1; print LO "$k: New generation $g\n"; for my $x (1..$evo::herd) { evo::abiogenesis("$d/$k-$g-$x.gif"); } } if ($o) { my $g2 = $g+1; print LO "$k: Select $k-$g-$s-$o.gif -> $k-$g2-$s.gif\n"; `cp $d/$k-$g-$s-$o.gif $d/$k-$g2-$s.gif`; `cp $d/$k-$g-$s-$o.gif.log.gif $d/$k-$g2-$s.gif.log.gif`; $s++; if ($s > $evo::herd) { $g++; $s = 1; print LO "$k: New generation $g\n"; } } print "

$k: Generation $g, selection $s (of $evo::herd)

"; print "

HERE ARE FOUR IMAGES. CLICK ON THE ONE YOU LIKE MOST.

_ "; my $o = 1; my $o2 = 1; my $bsize = $evo::size*4; for my $l (1..$evo::litter) { my @outs = map { "$d/$k-$g-$s-$_.gif" } (map { $o++ } (1..$evo::select)); my ($m, $f) = (int(rand($evo::herd))+1, int(rand($evo::herd))+1); $m = "$k-$g-$m.gif"; $f = "$k-$g-$f.gif"; evo::spawn("$d/$m", "$d/$f", @outs); foreach my $out (@outs) { print LO "$k: Spawn $m + $f -> $out\n"; print < _ EOF $o2++; } } close(LO); } print "\n";