Mercurial > eagle-eye
annotate enemy.pl @ 273:f81c4f9d267f
make the travel time is sort by distance
author | "Rex Tsai <chihchun@kalug.linux.org.tw>" |
---|---|
date | Mon, 01 Dec 2008 14:23:08 +0800 |
parents | 3730817e3079 |
children | 2590bcd517a5 |
rev | line source |
---|---|
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
1 #!/usr/bin/perl |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
2 use strict; |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
3 use Ikariam; |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
4 use Data::Dumper; |
272
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
5 use YAML qw/LoadFile/; |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
6 |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
7 package main; |
18 | 8 my @tradegoodText = qw/NULL 葡萄酒 大理石 水晶 硫磺/; |
9 my @wonderText = qw/NULL 赫菲斯拓斯的熔爐 蓋亞的神殿 狄奧尼索斯的花園 雅典娜的神殿 赫秘士的神殿 阿瑞斯的要塞 波賽頓的神殿 克羅瑟斯的神殿/; | |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
10 |
272
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
11 Ikariam::User->has_many(cities => 'Ikariam::Cities'); |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
12 |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
13 sub travelTime { |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
14 my ($x1, $y1, $x2, $y2, $speed) = @_; |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
15 $speed = 20 unless(defined($speed)); |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
16 return int( (sqrt((abs($x1 - $x2) * abs($x1 - $x2)) + (abs($y1 - $y2) * abs($y1 - $y2)))+1) * (400/$speed)); |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
17 } |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
18 |
273
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
19 sub travelMatrix { |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
20 my $userName = shift; |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
21 my @cities = (); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
22 if(my $user = Ikariam::User->retrieve(name => $userName)) { |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
23 |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
24 foreach my $target ($user->cities) { |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
25 my $island = Ikariam::Island->retrieve($target->island); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
26 my $city; |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
27 $city->{id} = $target->id; |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
28 $city->{name} = $target->cityname; |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
29 $city->{island}->{id} = $island->id; |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
30 $city->{island}->{x} = $island->x; |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
31 $city->{island}->{y} = $island->y; |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
32 |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
33 push (@cities, $city); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
34 } |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
35 } |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
36 |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
37 my $n = $#cities; |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
38 |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
39 # Print them out. |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
40 # header |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
41 printf("Defence\n"); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
42 printf(" %5s ", undef); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
43 for my $y (0..$n) { |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
44 printf ("%5s ", $cities[$y]->{id}); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
45 } |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
46 print "\n"; |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
47 |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
48 # body |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
49 for my $x (0..$n) { |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
50 printf(" %5s ", $cities[$x]->{id}); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
51 my $total = 0; |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
52 for my $y (0..$n) { |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
53 my $t = travelTime($cities[$x]->{island}->{x}, $cities[$x]->{island}->{y}, $cities[$y]->{island}->{x}, $cities[$y]->{island}->{y}); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
54 printf("%5s ", $t); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
55 $total += $t; |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
56 } |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
57 printf(" %s", $cities[$x]->{name}); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
58 printf("\n"); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
59 } |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
60 printf("\n"); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
61 } |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
62 |
272
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
63 sub myTownToVicim { |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
64 my $islandId = shift; |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
65 |
273
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
66 if(my $island = Ikariam::Island->retrieve($islandId)) { |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
67 my @cities = (); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
68 foreach (glob("city-*-dump.yaml")) { |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
69 my $city = LoadFile($_); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
70 $city->{distance} = travelTime($island->x, $island->y, $city->{island}->{x}, $city->{island}->{y}, 20); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
71 push (@cities, $city); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
72 } |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
73 @cities = sort { $a->{distance} <=> $b->{distance}; } (@cities); |
272
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
74 |
273
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
75 my $n = $#cities; |
272
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
76 for my $x (0..$n) { |
273
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
77 printf("%s (%d)\t- ", $cities[$x]->{name}, $cities[$x]->{id}); |
272
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
78 printf("Land %3d Ship %3d Catapult %3d Ram %3d\n", |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
79 travelTime($cities[$x]->{island}->{x}, $cities[$x]->{island}->{y}, $island->x, $island->y), |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
80 travelTime($cities[$x]->{island}->{x}, $cities[$x]->{island}->{y}, $island->x, $island->y, 8), |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
81 travelTime($cities[$x]->{island}->{x}, $cities[$x]->{island}->{y}, $island->x, $island->y, 6), |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
82 travelTime($cities[$x]->{island}->{x}, $cities[$x]->{island}->{y}, $island->x, $island->y, 10), |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
83 ); |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
84 } |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
85 } |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
86 } |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
87 |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
88 package main; |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
89 |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
90 if($#ARGV != 0) { |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
91 die("Usage: $0 nickname\n"); |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
92 } |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
93 |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
94 my ($u) = Ikariam::User->search('name' => $ARGV[0]); |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
95 if(defined($u)) { |
18 | 96 foreach my $i (qw/name score trader_score_secondary army_score_main ally/) { |
97 printf("%s: %s\n", $i, $u->get($i)); | |
98 } | |
273
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
99 |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
100 travelMatrix($ARGV[0]); |
f81c4f9d267f
make the travel time is sort by distance
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
272
diff
changeset
|
101 |
18 | 102 printf("\nCities\n"); |
103 foreach my $city ($u->cities) { | |
104 my $island = Ikariam::Island->retrieve($city->island); | |
44 | 105 my $capture = $city->citylevel * ($city->citylevel - 1) * $u->trader_score_secondary / 10000; |
38
0863b32e1a05
counting for the capture we can get from the enemy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
27
diff
changeset
|
106 |
18 | 107 printf("Name: %s\n", $city->cityname); |
272
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
108 if(defined($city->status)) { |
20
5635e75c92d0
the user profile is also cached for 1 hour.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
18
diff
changeset
|
109 printf("Status: <<<%s>>>\n", $city->status); |
5635e75c92d0
the user profile is also cached for 1 hour.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
18
diff
changeset
|
110 } |
18 | 111 printf("Level: %s\n", $city->citylevel); |
112 printf("Island: %s\n", $island->name); | |
78
4120f560f214
fixed the server name.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
44
diff
changeset
|
113 printf("Location: [%s:%s] http://%s/index.php?view=island&id=%s&selectCity=%d\n", |
4120f560f214
fixed the server name.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
44
diff
changeset
|
114 $island->x, $island->y, $::server, $island->id, $city->cityId); |
18 | 115 printf("Tradegood: %s\n", $tradegoodText[$island->tradegood]); |
38
0863b32e1a05
counting for the capture we can get from the enemy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
27
diff
changeset
|
116 printf("Wonder: %s\n", $wonderText[$island->wonder]); |
272
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
117 printf("Capture: %d\n", $capture); |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
118 myTownToVicim($island->id); |
3730817e3079
show travel time from my cities to enemy's cities
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
97
diff
changeset
|
119 printf("\n"); |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
120 } |
97
5f9bb3042d0c
refined the output.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
78
diff
changeset
|
121 print "-"x80 . "\n"; |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
122 } |