Mercurial > eagle-eye
annotate inference.pl @ 66:9356eafcdde7
improved document
author | "Rex Tsai <chihchun@kalug.linux.org.tw>" |
---|---|
date | Tue, 21 Oct 2008 16:41:30 +0800 |
parents | d2ac1e198ce4 |
children |
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 |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
16 sub rule_happiness |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
17 { |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
18 my $id = shift; |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
19 |
28
99723b8f348b
added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
27
diff
changeset
|
20 if($cities->{$id}->{happiness} >= 3) { |
27
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
21 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
|
22 } |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
23 } |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
24 |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
25 sub rule_resource |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
26 { |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
27 my $id = shift; |
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 # checking goods |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
30 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
|
31 if($cities->{$id}->{resources}->{$good} <= 100) { |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
32 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
|
33 } |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
34 } |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
35 } |
dd85b55eec2a
implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
36 |
29
dbec53e754e3
added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
28
diff
changeset
|
37 sub rule_building |
dbec53e754e3
added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
28
diff
changeset
|
38 { |
dbec53e754e3
added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
28
diff
changeset
|
39 my $cityId = shift; |
dbec53e754e3
added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
28
diff
changeset
|
40 |
dbec53e754e3
added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
28
diff
changeset
|
41 # 城鎮跟圍牆 |
39
65e847de5187
refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
34
diff
changeset
|
42 if($cities->{$cityId}->{construction} != 1) { |
65e847de5187
refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
34
diff
changeset
|
43 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
|
44 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
|
45 $cities->{$cityId}->{buildings}->{wall}, |
65e847de5187
refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
34
diff
changeset
|
46 $cities->{$cityId}->{buildings}->{townHall} |
65e847de5187
refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
34
diff
changeset
|
47 )) |
65e847de5187
refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
34
diff
changeset
|
48 } else { |
65e847de5187
refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
34
diff
changeset
|
49 Warn($cityId, sprintf("is not building.")); |
65e847de5187
refined the defending rules
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
34
diff
changeset
|
50 } |
29
dbec53e754e3
added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
28
diff
changeset
|
51 } |
30
de5de6d472f9
added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
29
diff
changeset
|
52 } |
29
dbec53e754e3
added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
28
diff
changeset
|
53 |
30
de5de6d472f9
added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
29
diff
changeset
|
54 sub rule_space |
de5de6d472f9
added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
29
diff
changeset
|
55 { |
de5de6d472f9
added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
29
diff
changeset
|
56 my $cityId = shift; |
de5de6d472f9
added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
29
diff
changeset
|
57 |
de5de6d472f9
added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
29
diff
changeset
|
58 if($cities->{$cityId}->{space}->{total} == $cities->{$cityId}->{space}->{occupied}) |
de5de6d472f9
added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
29
diff
changeset
|
59 { |
34
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
60 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
|
61 if($cities->{$cityId}->{construction} != 1); |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
62 } |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
63 return 0; |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
64 } |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
65 |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
66 sub rule_war |
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 my $cityId = shift; |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
69 if($cities->{$cityId}->{force}->{attacks} > 0) |
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 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
|
72 } |
de5de6d472f9
added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
29
diff
changeset
|
73 } |
de5de6d472f9
added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
29
diff
changeset
|
74 |
de5de6d472f9
added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
29
diff
changeset
|
75 sub rule_engagement |
de5de6d472f9
added space checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
29
diff
changeset
|
76 { |
34
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
77 my $cityId = shift; |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
78 if($cities->{$cityId}->{force}->{wars} == 0) { |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
79 Warn($cityId, sprintf("Let's Attack someone!")); |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
80 } |
29
dbec53e754e3
added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
28
diff
changeset
|
81 } |
dbec53e754e3
added rule_building
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
28
diff
changeset
|
82 |
28
99723b8f348b
added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
27
diff
changeset
|
83 # 貪腐 |
99723b8f348b
added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
27
diff
changeset
|
84 sub rule_corruption |
99723b8f348b
added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
27
diff
changeset
|
85 { |
99723b8f348b
added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
27
diff
changeset
|
86 my $id = shift; |
99723b8f348b
added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
27
diff
changeset
|
87 |
99723b8f348b
added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
27
diff
changeset
|
88 if($cities->{$id}->{corruption} > 0) { |
99723b8f348b
added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
27
diff
changeset
|
89 Warn($id, sprintf("corruption is %d", $cities->{$id}->{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 } |
99723b8f348b
added rule_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
27
diff
changeset
|
92 |
34
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
93 print Dumper($cities); |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
94 # show cities. |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
95 foreach my $cityId (keys(%$cities)) { |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
96 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
|
97 printf("construction: %s\n", $cities->{$cityId}->{construction}); |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
98 |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
99 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
|
100 printf("%s\n", uc($thing)); |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
101 foreach my $i (keys(%{$cities->{$cityId}->{$thing}})) { |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
102 printf("%s %s, ", $i, $cities->{$cityId}->{$thing}->{$i}); |
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 print("\n"); |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
105 } |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
106 print("\n"); |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
107 } |
91e387b51aa0
added more rules checking
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
30
diff
changeset
|
108 |
52
d2ac1e198ce4
implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
41
diff
changeset
|
109 our $i = new Ikariam($::server, $::user, $::pass); |
d2ac1e198ce4
implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
41
diff
changeset
|
110 $i->login; |
d2ac1e198ce4
implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
41
diff
changeset
|
111 $cities = $i->check; |
d2ac1e198ce4
implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
41
diff
changeset
|
112 $i->logout; |
d2ac1e198ce4
implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
41
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 } |