annotate inference.pl @ 45:4d59ba5905f6

addressed the modules you need to install
author "Rex Tsai <chihchun@kalug.linux.org.tw>"
date Fri, 17 Oct 2008 12:55:59 +0800
parents 5849b6fdc76c
children d2ac1e198ce4
rev   line source
27
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1 #!/usr/bin/perl
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
2 use strict;
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
3 use Ikariam;
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
4 use Data::Dumper;
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
5
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
6 package main;
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
7
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
8 our $cities;
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
9 sub Warn
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
10 {
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
11 my ($city, $msg) = @_;
34
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
12 printf("http://%s/index.php?view=city&id=%s (%s) %s \n",
41
5849b6fdc76c removed my password from scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 39
diff changeset
13 $::server, $city, $cities->{$city}->{name}, $msg);
27
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
14 }
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
15
41
5849b6fdc76c removed my password from scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 39
diff changeset
16 our $i = new Ikariam($::server, $::user, $::pass);
27
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
17 $i->login;
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
18 $cities = $i->check;
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
19 $i->logout;
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
20
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
21 sub rule_happiness
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
22 {
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
23 my $id = shift;
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
24
28
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
25 if($cities->{$id}->{happiness} >= 3) {
27
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
26 Warn($id, sprintf("is not happy (%s)!", $cities->{$id}->{happiness_text}));
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
27 }
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
28 }
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
29
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
30 sub rule_resource
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
31 {
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
32 my $id = shift;
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
33
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
34 # checking goods
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
35 foreach my $good (qw/wood wine marble crystal/) {
34
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
36 if($cities->{$id}->{resources}->{$good} <= 100) {
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
37 Warn($id, sprintf("Running out %s (%d)!", $good, $cities->{$id}->{resources}->{$good}));
27
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
38 }
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
39 }
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
40 }
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
41
29
dbec53e754e3 added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 28
diff changeset
42 sub rule_building
dbec53e754e3 added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 28
diff changeset
43 {
dbec53e754e3 added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 28
diff changeset
44 my $cityId = shift;
dbec53e754e3 added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 28
diff changeset
45
dbec53e754e3 added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 28
diff changeset
46 # 城鎮跟圍牆
39
65e847de5187 refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 34
diff changeset
47 if($cities->{$cityId}->{construction} != 1) {
65e847de5187 refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 34
diff changeset
48 if($cities->{$cityId}->{buildings}->{wall} < $cities->{$cityId}->{buildings}->{townHall}) {
65e847de5187 refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 34
diff changeset
49 Warn($cityId, sprintf("Wall level (%d) is lower then town hall (%d)!",
65e847de5187 refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 34
diff changeset
50 $cities->{$cityId}->{buildings}->{wall},
65e847de5187 refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 34
diff changeset
51 $cities->{$cityId}->{buildings}->{townHall}
65e847de5187 refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 34
diff changeset
52 ))
65e847de5187 refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 34
diff changeset
53 } else {
65e847de5187 refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 34
diff changeset
54 Warn($cityId, sprintf("is not building."));
65e847de5187 refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 34
diff changeset
55 }
29
dbec53e754e3 added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 28
diff changeset
56 }
30
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
57 }
29
dbec53e754e3 added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 28
diff changeset
58
30
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
59 sub rule_space
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
60 {
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
61 my $cityId = shift;
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
62
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
63 if($cities->{$cityId}->{space}->{total} == $cities->{$cityId}->{space}->{occupied})
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
64 {
34
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
65 Warn($cityId, sprintf("your space is full, upgraded the hall"))
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
66 if($cities->{$cityId}->{construction} != 1);
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
67 }
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
68 return 0;
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
69 }
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
70
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
71 sub rule_war
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
72 {
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
73 my $cityId = shift;
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
74 if($cities->{$cityId}->{force}->{attacks} > 0)
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
75 {
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
76 Warn($cityId, sprintf("YOU ARE ATTACKED!!!!")) if($cities->{$cityId}->{construction} != 1)
30
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
77 }
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
78 }
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
79
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
80 sub rule_engagement
de5de6d472f9 added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 29
diff changeset
81 {
34
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
82 my $cityId = shift;
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
83 if($cities->{$cityId}->{force}->{wars} == 0) {
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
84 Warn($cityId, sprintf("Let's Attack someone!"));
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
85 }
29
dbec53e754e3 added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 28
diff changeset
86 }
dbec53e754e3 added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 28
diff changeset
87
28
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
88 # 貪腐
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
89 sub rule_corruption
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
90 {
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
91 my $id = shift;
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
92
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
93 if($cities->{$id}->{corruption} > 0) {
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
94 Warn($id, sprintf("corruption is %d", $cities->{$id}->{corruption}));
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
95 }
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
96 }
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
97
34
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
98 print Dumper($cities);
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
99 # show cities.
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
100 foreach my $cityId (keys(%$cities)) {
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
101 printf("%s http://s2.ikariam.tw/index.php?view=city&id=%d\n", $cities->{$cityId}->{name}, $cityId);
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
102 printf("construction: %s\n", $cities->{$cityId}->{construction});
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
103
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
104 foreach my $thing (qw/resources space force buildings citizens army fleet/) {
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
105 printf("%s\n", uc($thing));
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
106 foreach my $i (keys(%{$cities->{$cityId}->{$thing}})) {
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
107 printf("%s %s, ", $i, $cities->{$cityId}->{$thing}->{$i});
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
108 }
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
109 print("\n");
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
110 }
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
111 print("\n");
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
112 }
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
113
28
99723b8f348b added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 27
diff changeset
114 # space
27
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
115 # Checking rules
34
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
116 foreach my $procedure (qw/rule_war rule_happiness rule_corruption rule_building rule_space rule_resource/) {
27
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
117 foreach my $id (keys(%$cities)) {
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
118 eval(sprintf("%s(%s);", $procedure, $id));
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
119 }
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
120 }
34
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
121
39
65e847de5187 refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 34
diff changeset
122 foreach my $procedure (qw/rule_engagement/) {
34
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
123 foreach my $id (keys(%$cities)) {
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
124 eval(sprintf("%s(%s);", $procedure, $id));
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
125 last;
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
126 }
91e387b51aa0 added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 30
diff changeset
127 }