git @ Cat's Eye Technologies Jaccia / master script / jaccia.pl
master

Tree @master (Download .tar.gz)

jaccia.pl @masterraw · history · blame

#!/usr/bin/perl
#  - automatically generated from  by:
# alpaca.pl v0.93
# http://catseye.webhop.net/projects/alpaca/
######################################################

use Alpaca qw(true false guess
	      adjacent_state adjacent_class
	      load_playfield display_playfield process_playfield);

sub SustainerClassRules {
  return 0
 };

sub SpaceStateRules {
  return 'Space'
 };

sub WallStateRules {
  return 'Wall'
 };

sub FoodStateRules {
  return SustainerClassRules() || 'Food'
 };

sub Food2StateRules {
  return SustainerClassRules() || 'Food2'
 };

sub SlimeStateRules {
  return 'Space' if ((not ((SustainerClassMember($Playfield->[$x][$y-1]) and SustainerClassMember($Playfield->[$x+1][$y])) or (SustainerClassMember($Playfield->[$x][$y-1]) and SustainerClassMember($Playfield->[$x][$y+1])) or (SustainerClassMember($Playfield->[$x][$y-1]) and SustainerClassMember($Playfield->[$x-1][$y])) or (SustainerClassMember($Playfield->[$x+1][$y]) and SustainerClassMember($Playfield->[$x][$y+1])) or (SustainerClassMember($Playfield->[$x+1][$y]) and SustainerClassMember($Playfield->[$x-1][$y])) or (SustainerClassMember($Playfield->[$x][$y+1]) and SustainerClassMember($Playfield->[$x-1][$y])))));
  return SustainerClassRules() || 'Slime'
 };

sub SustainerClassMember {
  return $_[0] eq 'Food' ||
         $_[0] eq 'Food2' ||
         $_[0] eq 'Slime' ||
         0
};

$Appearance = {
  'Food' => 'F',
  'Food2' => 'S',
  'Slime' => ':',
  'Space' => ' ',
  'Wall' => '#',

};

$InputCodec = {
  'F' => 'Food',
  'S' => 'Food2',
  ':' => 'Slime',
  ' ' => 'Space',
  '#' => 'Wall',

};

$StateRule = {
  'Food' => \&main::FoodStateRules,
  'Food2' => \&main::Food2StateRules,
  'Slime' => \&main::SlimeStateRules,
  'Space' => \&main::SpaceStateRules,
  'Wall' => \&main::WallStateRules,

};

load_playfield($ARGV[0]);

display_playfield();

while (!$done)
{
  process_playfield();
  display_playfield();
}

exit(0);

### END ###