berlin-ai 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/berlin-ai.gemspec +12 -9
- data/lib/ai/map.rb +2 -2
- data/lib/berlin-ai.rb +5 -3
- data/lib/version.rb +1 -1
- data/test/test_ai.rb +7 -5
- metadata +8 -7
data/berlin-ai.gemspec
CHANGED
@@ -5,15 +5,18 @@ $:.unshift lib unless $:.include?(lib)
|
|
5
5
|
require 'lib/version'
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
|
-
s.name
|
9
|
-
s.version
|
10
|
-
s.platform
|
11
|
-
s.authors
|
12
|
-
s.email
|
13
|
-
s.homepage
|
14
|
-
s.summary
|
15
|
-
s.description
|
16
|
-
|
8
|
+
s.name = "berlin-ai"
|
9
|
+
s.version = Berlin::AI::VERSION
|
10
|
+
s.platform = Gem::Platform::RUBY
|
11
|
+
s.authors = ["Christian Blais", "Guillaume Malette", "Jodi Giordano"]
|
12
|
+
s.email = ["christ.blais@gmail.com", "gmalette@gmail.com", "giordano.jodi@gmail.com"]
|
13
|
+
s.homepage = "http://github.com/christianblais/berlin-ai"
|
14
|
+
s.summary = "Berlin Artificial Intelligence"
|
15
|
+
s.description = "Berlin Artificial Intelligence"
|
16
|
+
|
17
|
+
s.requirements << 'sinatra'
|
18
|
+
s.requirements << 'yajl-ruby'
|
19
|
+
|
17
20
|
s.files = [
|
18
21
|
'LICENSE',
|
19
22
|
'README',
|
data/lib/ai/map.rb
CHANGED
@@ -35,14 +35,14 @@ module Berlin
|
|
35
35
|
def owned_nodes
|
36
36
|
@nodes.select do |id, node|
|
37
37
|
node.player_id == player_id
|
38
|
-
end
|
38
|
+
end.values
|
39
39
|
end
|
40
40
|
|
41
41
|
# We can now loop on our owned nodes in order to find our controlled nodes.
|
42
42
|
def controlled_nodes
|
43
43
|
owned_nodes.select do |id, node|
|
44
44
|
node.occupied?
|
45
|
-
end
|
45
|
+
end.values
|
46
46
|
end
|
47
47
|
|
48
48
|
# Is the map directed?
|
data/lib/berlin-ai.rb
CHANGED
@@ -4,11 +4,10 @@ end
|
|
4
4
|
|
5
5
|
post '/' do
|
6
6
|
begin
|
7
|
-
if ['turn', 'game_start', 'game_over'].include? params[:action]
|
7
|
+
if ['ping', 'turn', 'game_start', 'game_over'].include? params[:action]
|
8
8
|
game = Berlin::AI::Game.create_or_update params[:action], params[:infos], params[:map], params[:state]
|
9
9
|
|
10
|
-
if params[:action]
|
11
|
-
# Respond with a json of our moves
|
10
|
+
if ['ping', 'turn'].include? params[:action]
|
12
11
|
return game.turn_moves.to_json
|
13
12
|
end
|
14
13
|
else
|
@@ -18,6 +17,9 @@ post '/' do
|
|
18
17
|
# For every other type of request, respond with 200 OK
|
19
18
|
200
|
20
19
|
rescue Exception => e
|
20
|
+
p e.inspect
|
21
|
+
|
22
|
+
# Internal server error
|
21
23
|
500
|
22
24
|
end
|
23
25
|
end
|
data/lib/version.rb
CHANGED
data/test/test_ai.rb
CHANGED
@@ -1,16 +1,18 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'sinatra'
|
3
3
|
require 'yajl/json_gem'
|
4
|
-
|
5
|
-
%w(berlin-ai).each do |file|
|
6
|
-
require File.expand_path( File.dirname( __FILE__ ) ) + "/../lib/#{file}"
|
7
|
-
end
|
4
|
+
require 'berlin-ai'
|
8
5
|
|
9
6
|
module Berlin
|
10
7
|
module AI
|
11
8
|
class Game
|
12
9
|
def turn_moves
|
13
|
-
|
10
|
+
@map.controlled_nodes do |node|
|
11
|
+
{
|
12
|
+
:from => node.id,
|
13
|
+
:to => node.adjacent_nodes.sample.id,
|
14
|
+
:number_of_soldiers => rand(node.number_of_soldiers + 1)
|
15
|
+
}
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: berlin-ai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Christian Blais
|
@@ -70,10 +70,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
70
|
segments:
|
71
71
|
- 0
|
72
72
|
version: "0"
|
73
|
-
requirements:
|
74
|
-
|
73
|
+
requirements:
|
74
|
+
- sinatra
|
75
|
+
- yajl-ruby
|
75
76
|
rubyforge_project:
|
76
|
-
rubygems_version: 1.
|
77
|
+
rubygems_version: 1.6.2
|
77
78
|
signing_key:
|
78
79
|
specification_version: 3
|
79
80
|
summary: Berlin Artificial Intelligence
|