monkeymusic 0.0.5 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/demo_player +93 -0
- data/levels/{bomberman2.rb → demo_level.rb} +0 -0
- data/lib/monkey_music/runner.rb +36 -4
- data/users/{synth.yaml → demo_user.yaml} +0 -0
- metadata +4 -4
- data/levels/demolevel.rb +0 -23
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDEzMGMzYWVjZjkzYzdkMzk1YTZiYWZjMzViZjM3ZTJkODk5MzViNw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YWRmOGVmMWFlOTQ5NWQxMWY1N2ViYzE4ZjQ3ZGQ2NGJjZDFlZDRhNg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NzM1MmQ0MzAyZGViMzNlNDUzMGQzNmE3OWViOTM3NmE3NjI4MzQzYjhhMWJj
|
10
|
+
YjI0NDM4ZjU2YzU4YzYwMmU5NmYxYWU5NmViYzhkYmFkZGExYzY4ZmM0NzFl
|
11
|
+
MGE1MDkwOWE1MWZhNDM2YWM0YmZlZjhjYTgzOWE1MzViMzFjMTc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NGE5YWRjMmY5NDRmNDg2ZTUwOGUxZWE3ZWMyNjIwZmFiOGJiZjI4OWE5OTNm
|
14
|
+
YWNhYTU5ZmJmZGVlNGU2ZjQ5NjBjMmNkNGU0NGQyNTRlZmEyNTI0NjBlZjMx
|
15
|
+
YmYwZmE1MzkxOGM2ZGY2MzNlNjQzNDcyY2JhOTM0MTc0OGE2ZWE=
|
data/demo_player
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
@type = gets.chomp
|
6
|
+
|
7
|
+
if @type == "INIT"
|
8
|
+
@cache = {}
|
9
|
+
@cache[:monkey] = gets.chomp
|
10
|
+
@cache[:width] = Integer(gets.chomp)
|
11
|
+
@cache[:height] = Integer(gets.chomp)
|
12
|
+
@cache[:turn_limit] = Integer(gets.chomp)
|
13
|
+
[:top_tracks, :top_albums, :top_artists, :disliked_artists].each do |toplist|
|
14
|
+
@cache[toplist] = []
|
15
|
+
n = Integer(gets.chomp)
|
16
|
+
n.times { @cache[toplist] << gets.chomp }
|
17
|
+
@cache[:uris] = {}
|
18
|
+
end
|
19
|
+
File.open(File.join(Dir.getwd, "cache_p1"), "w+") {|f| f.write YAML::dump(@cache)}
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
|
23
|
+
@cache = YAML::load(IO.read "cache_p1")
|
24
|
+
|
25
|
+
# Read indata
|
26
|
+
@turn = Integer(gets.chomp)
|
27
|
+
@remaining_capacity = Integer(gets.chomp)
|
28
|
+
@remaining_time = Integer(gets.chomp)
|
29
|
+
|
30
|
+
@unknown = []
|
31
|
+
|
32
|
+
# Read level
|
33
|
+
@tracks = []
|
34
|
+
@cache[:height].times do |y|
|
35
|
+
row = gets.chomp.split(',')
|
36
|
+
@cache[:width].times do |x|
|
37
|
+
thing = row[x]
|
38
|
+
if thing == @cache[:monkey]
|
39
|
+
@x, @y = x, y
|
40
|
+
elsif /spotify:track/.match(thing)
|
41
|
+
@unknown << thing unless @cache[:uris][thing]
|
42
|
+
@tracks << [x, y]
|
43
|
+
elsif thing == "U"
|
44
|
+
@user = [x, y]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
#if uri = @unknown.pop
|
50
|
+
#puts uri
|
51
|
+
#$stdout.flush
|
52
|
+
#n = Integer(gets.chomp)
|
53
|
+
#if n == 1
|
54
|
+
#@cache[:uris][uri] = gets.chomp
|
55
|
+
#end
|
56
|
+
#File.open(File.join(Dir.getwd, "cache_p1"), "w+") {|f| f.write YAML::dump(@cache)}
|
57
|
+
#exit
|
58
|
+
#end
|
59
|
+
|
60
|
+
def move_toward(x, y)
|
61
|
+
if @x < x
|
62
|
+
"E"
|
63
|
+
elsif @x > x
|
64
|
+
"W"
|
65
|
+
elsif @y < y
|
66
|
+
"S"
|
67
|
+
elsif @y > y
|
68
|
+
"N"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def closest_track
|
73
|
+
curr_closest = @tracks.pop()
|
74
|
+
curr_smallest_distance = distance_to(*curr_closest)
|
75
|
+
@tracks.each do |track|
|
76
|
+
curr_distance = distance_to(*track)
|
77
|
+
if curr_distance < curr_smallest_distance
|
78
|
+
curr_closest = track
|
79
|
+
curr_smallest_distance = curr_distance
|
80
|
+
end
|
81
|
+
end
|
82
|
+
curr_closest
|
83
|
+
end
|
84
|
+
|
85
|
+
def distance_to(x, y)
|
86
|
+
(@x - x).abs + (@y - y).abs
|
87
|
+
end
|
88
|
+
|
89
|
+
if (@remaining_capacity > 0) && (not @tracks.empty?)
|
90
|
+
puts move_toward(*closest_track())
|
91
|
+
else
|
92
|
+
puts move_toward(*@user)
|
93
|
+
end
|
File without changes
|
data/lib/monkey_music/runner.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'optparse'
|
2
|
+
require 'fileutils'
|
2
3
|
|
3
4
|
module MonkeyMusic
|
4
5
|
class Runner
|
5
6
|
|
6
|
-
@@default_level = '
|
7
|
-
@@default_user = '
|
7
|
+
@@default_level = 'demo_level.rb'
|
8
|
+
@@default_user = 'demo_user.yaml'
|
9
|
+
@@default_player = 'demo_player'
|
8
10
|
|
9
11
|
def initialize(arguments)
|
10
12
|
@arguments = arguments
|
@@ -15,6 +17,36 @@ module MonkeyMusic
|
|
15
17
|
end
|
16
18
|
|
17
19
|
def run
|
20
|
+
if ARGV[0] == "demo"
|
21
|
+
puts "\tcreate ./#{@@default_level}"
|
22
|
+
FileUtils.cp(
|
23
|
+
File.join(
|
24
|
+
File.dirname(__FILE__),
|
25
|
+
"../../levels",
|
26
|
+
@@default_level
|
27
|
+
),
|
28
|
+
Dir.getwd
|
29
|
+
)
|
30
|
+
puts "\tcreate ./#{@@default_user}"
|
31
|
+
FileUtils.cp(
|
32
|
+
File.join(
|
33
|
+
File.dirname(__FILE__),
|
34
|
+
"../../users",
|
35
|
+
@@default_user
|
36
|
+
),
|
37
|
+
Dir.getwd
|
38
|
+
)
|
39
|
+
puts "\tcreate ./#{@@default_player}"
|
40
|
+
FileUtils.cp(
|
41
|
+
File.join(
|
42
|
+
File.dirname(__FILE__),
|
43
|
+
"../../",
|
44
|
+
@@default_player
|
45
|
+
),
|
46
|
+
Dir.getwd
|
47
|
+
)
|
48
|
+
exit
|
49
|
+
end
|
18
50
|
@opt_parser.parse!
|
19
51
|
# Handle fallback to default level
|
20
52
|
@level_file ||= File.join(
|
@@ -65,7 +97,7 @@ module MonkeyMusic
|
|
65
97
|
end
|
66
98
|
|
67
99
|
def init_parser(opts)
|
68
|
-
opts.banner =
|
100
|
+
opts.banner = "Usage: monkeymusic [demo] [-p PLAYER_FILE -n PLAYER_NAME [-u USER_FILE] [-l LEVEL_FILE]]"
|
69
101
|
|
70
102
|
opts.on('-p',
|
71
103
|
'--player FILE',
|
@@ -104,7 +136,7 @@ module MonkeyMusic
|
|
104
136
|
|
105
137
|
opts.on('-v', '--version',
|
106
138
|
'Show the current version.') do |password|
|
107
|
-
puts '0.0.
|
139
|
+
puts '0.0.7' # TODO: Find out how to extract version from GemSpec
|
108
140
|
exit
|
109
141
|
end
|
110
142
|
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: monkeymusic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Soderlund
|
@@ -53,22 +53,22 @@ files:
|
|
53
53
|
- lib/monkey_music/ui/browser.rb
|
54
54
|
- lib/monkey_music/ui/console.rb
|
55
55
|
- levels/testmaze_30.rb
|
56
|
-
- levels/bomberman2.rb
|
57
56
|
- levels/the_last_crusade.rb
|
58
57
|
- levels/testlevel.rb
|
58
|
+
- levels/demo_level.rb
|
59
59
|
- levels/testmaze_10.rb
|
60
60
|
- levels/testlevel_maze.rb
|
61
61
|
- levels/travelling_salesmonkeys.rb
|
62
|
-
- levels/demolevel.rb
|
63
62
|
- levels/testmaze_20.rb
|
64
63
|
- bin/monkeymusic-generate
|
65
64
|
- bin/monkeymusic
|
66
|
-
- users/
|
65
|
+
- users/demo_user.yaml
|
67
66
|
- users/synth.rb
|
68
67
|
- Gemfile.lock
|
69
68
|
- Gemfile
|
70
69
|
- README.markdown
|
71
70
|
- LICENSE
|
71
|
+
- demo_player
|
72
72
|
homepage: https://github.com/odsod/monkey-music
|
73
73
|
licenses:
|
74
74
|
- MIT
|
data/levels/demolevel.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
carrying_capacity 3
|
2
|
-
metadata_requests_per_turn 2
|
3
|
-
max_turns 100
|
4
|
-
|
5
|
-
legend({
|
6
|
-
"1" => Monkey.player(1),
|
7
|
-
"2" => Monkey.player(2),
|
8
|
-
"X" => Track.worth(-2),
|
9
|
-
"x" => Track.worth(-1),
|
10
|
-
"l" => Track.worth(1),
|
11
|
-
"t" => Track.worth(2),
|
12
|
-
"T" => Track.worth(3),
|
13
|
-
"U" => User,
|
14
|
-
"#" => Wall,
|
15
|
-
})
|
16
|
-
|
17
|
-
layout <<LAYOUT
|
18
|
-
....t..t...
|
19
|
-
.#.......#.
|
20
|
-
#..#1U2#..#
|
21
|
-
.#X.....X#.
|
22
|
-
.....t.....
|
23
|
-
LAYOUT
|