view inference.pl @ 27:dd85b55eec2a

implemented basic inference engine.
author "Rex Tsai <chihchun@kalug.linux.org.tw>"
date Fri, 10 Oct 2008 03:38:49 +0800
parents
children 99723b8f348b
line wrap: on
line source

#!/usr/bin/perl
use strict;
use Ikariam;
use Data::Dumper;

package main;

our $cities;
our $server = 's2.ikariam.tw';
sub Warn
{
    my ($city, $msg) = @_;
    printf("WARNING: http://%s/index.php?view=city&id=%s (%s) %s \n", 
        $server, $city, $cities->{$city}->{name}, $msg);
}

our $i = new Ikariam($server, "chihchun", "c795d57d");
$i->login;
$cities = $i->check;
$i->logout;
print(Dumper($cities));

sub rule_happiness
{
    my $id = shift;

    if($cities->{$id}->{happiness} > 3) {
        Warn($id, sprintf("is not happy (%s)!", $cities->{$id}->{happiness_text}));
    }
}

sub rule_resource
{
    my $id = shift;

    # checking goods
    foreach my $good (qw/wood wine marble crystal/) {
        if($cities->{$id}->{$good} <= 100) {
            Warn($id, sprintf("Running out %s!", $good));
        }
    }
}

# Checking rules
foreach my $procedure (qw/rule_happiness rule_resource/) {
    foreach my $id (keys(%$cities)) {
        eval(sprintf("%s(%s);", $procedure, $id));
    }
}