conway_deathmatch 0.1.0.1 → 0.1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/conway_deathmatch/board_state.rb +1 -1
- data/lib/conway_deathmatch/shapes.rb +24 -28
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1e28000746a34583e9e6440c5212c71f3d76612
|
4
|
+
data.tar.gz: 8c9c94648fcb1ce681c239f2f77992b9b26b5135
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c40b259c8a5ae552296ba668a535c9ca50be3348867df9ef1db79a7029339a75582156d5d33a681d21ca43cb39249515ec0cefeaf7cbef48a8caf9824a9012a3
|
7
|
+
data.tar.gz: 7949a6e90a5648a74ec6034dc6e5be9ab02b06e5207dac3ed7e21308f866f11aa7e85a5c4ab35d6c8f9df25aa871d4bc0a04ced4a5a0dbd821062345601415de
|
@@ -1,35 +1,31 @@
|
|
1
1
|
require 'conway_deathmatch/board_state'
|
2
2
|
require 'yaml'
|
3
3
|
|
4
|
-
module ConwayDeathmatch
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
points << [x, y]
|
28
|
-
else
|
29
|
-
board.add_points(known.fetch(shape), x, y, val)
|
30
|
-
end
|
4
|
+
module ConwayDeathmatch::Shapes
|
5
|
+
# memoize data/shapes.yaml
|
6
|
+
def self.known
|
7
|
+
@@known ||= YAML.load_file(File.join(__dir__, 'data', 'shapes.yaml'))
|
8
|
+
end
|
9
|
+
|
10
|
+
# parse a string like "acorn 12 22 block 5 0 p 1 2 p 3 4 p 56 78"
|
11
|
+
# add known shapes
|
12
|
+
def self.add(board, str, val = BoardState::ALIVE)
|
13
|
+
tokens = str.split
|
14
|
+
points = []
|
15
|
+
known = self.known
|
16
|
+
|
17
|
+
while !tokens.empty?
|
18
|
+
shape = tokens.shift.downcase
|
19
|
+
raise "no coordinates for #{shape}" if tokens.length < 2
|
20
|
+
x = tokens.shift.to_i
|
21
|
+
y = tokens.shift.to_i
|
22
|
+
case shape.downcase
|
23
|
+
when 'p'
|
24
|
+
points << [x, y]
|
25
|
+
else
|
26
|
+
board.add_points(known.fetch(shape), x, y, val)
|
31
27
|
end
|
32
|
-
board.add_points(points, 0, 0, val)
|
33
28
|
end
|
29
|
+
board.add_points(points, 0, 0, val)
|
34
30
|
end
|
35
31
|
end
|