monkeymusic 0.0.5 → 0.0.7
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.
- 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
|