pitchcar 0.5.1 → 0.6.0
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/images/curve_tile.png +0 -0
- data/lib/images/start_tile.png +0 -0
- data/lib/images/straight_tile.png +0 -0
- data/lib/piece.rb +32 -5
- data/lib/track.rb +10 -2
- data/lib/track_image.rb +1 -1
- data/pitchcar.gemspec +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c87085eb4eec9b96a86d1299c0a787e9355517a
|
4
|
+
data.tar.gz: 67ebc8e58b5e251de59f5ea59050526310364922
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 846e2794000ba3c86f7481af1f38899052af0fbbf82c6a324362b3b21c55aee72e1c8688d8762eb30bde38f064b73fd948ac49f572aa09d6728952d721be0e9c
|
7
|
+
data.tar.gz: 85574ef85a7d5ee3e0f9409e0c16ce6f3eb1e7f20d89d143a476159154bb467aaafd1412402213fc2fece9138ff925ff46e04f2e2e4782c1df2c0b1b1d34b4ad
|
data/Gemfile.lock
CHANGED
data/lib/images/curve_tile.png
CHANGED
Binary file
|
Binary file
|
Binary file
|
data/lib/piece.rb
CHANGED
@@ -3,10 +3,11 @@ require 'rmagick'
|
|
3
3
|
|
4
4
|
module Pitchcar
|
5
5
|
class Piece
|
6
|
-
TYPES = { STRAIGHT: 0, LEFT: 1, RIGHT: 2, STRAIGHT_LEFT_WALL: 3, STRAIGHT_RIGHT_WALL: 4 }
|
6
|
+
TYPES = { STRAIGHT: 0, LEFT: 1, RIGHT: 2, STRAIGHT_LEFT_WALL: 3, STRAIGHT_RIGHT_WALL: 4, STRAIGHT_START: 5 }
|
7
7
|
DIRECTIONS = { NORTH: 0, EAST: 1, WEST: 2, SOUTH: 3 }
|
8
|
-
STRAIGHT_IMAGE, CURVE_IMAGE = Magick::ImageList.new(File.expand_path('../images/straight_tile.png', __FILE__),
|
9
|
-
|
8
|
+
STRAIGHT_IMAGE, CURVE_IMAGE, START_IMAGE = Magick::ImageList.new(File.expand_path('../images/straight_tile.png', __FILE__),
|
9
|
+
File.expand_path('../images/curve_tile.png', __FILE__),
|
10
|
+
File.expand_path('../images/start_tile.png', __FILE__)).to_a
|
10
11
|
attr_accessor :direction, :x, :y, :type
|
11
12
|
|
12
13
|
def self.starting_piece
|
@@ -66,11 +67,37 @@ module Pitchcar
|
|
66
67
|
{ x: x, y: y, type: TYPES.key(type).downcase, direction: DIRECTIONS.key(direction).downcase }
|
67
68
|
end
|
68
69
|
|
70
|
+
# Slw N = Srw S
|
71
|
+
# Slw E = Srw W
|
72
|
+
# Slw W == Srw E
|
73
|
+
# Slw S = Srw N
|
74
|
+
|
69
75
|
def image
|
76
|
+
if (type == TYPES[:STRAIGHT_LEFT_WALL] && direction == DIRECTIONS[:NORTH]) || (type == TYPES[:STRAIGHT_RIGHT_WALL] && direction == DIRECTIONS[:SOUTH])
|
77
|
+
return STRAIGHT_IMAGE.rotate(90)
|
78
|
+
elsif (type == TYPES[:STRAIGHT_LEFT_WALL] && direction == DIRECTIONS[:EAST]) || (type == TYPES[:STRAIGHT_RIGHT_WALL] && direction == DIRECTIONS[:WEST])
|
79
|
+
return STRAIGHT_IMAGE.rotate(180)
|
80
|
+
elsif (type == TYPES[:STRAIGHT_LEFT_WALL] && direction == DIRECTIONS[:WEST]) || (type == TYPES[:STRAIGHT_RIGHT_WALL] && direction == DIRECTIONS[:EAST])
|
81
|
+
return STRAIGHT_IMAGE
|
82
|
+
elsif (type == TYPES[:STRAIGHT_LEFT_WALL] && direction == DIRECTIONS[:SOUTH]) || (type == TYPES[:STRAIGHT_RIGHT_WALL] && direction == DIRECTIONS[:NORTH])
|
83
|
+
return STRAIGHT_IMAGE.rotate(270)
|
84
|
+
end
|
85
|
+
|
70
86
|
case type
|
71
|
-
when TYPES[:STRAIGHT]
|
87
|
+
when TYPES[:STRAIGHT]
|
72
88
|
return STRAIGHT_IMAGE.rotate(90) if direction == DIRECTIONS[:NORTH] || direction == DIRECTIONS[:SOUTH]
|
73
|
-
|
89
|
+
STRAIGHT_IMAGE
|
90
|
+
when TYPES[:STRAIGHT_START]
|
91
|
+
case direction
|
92
|
+
when DIRECTIONS[:NORTH]
|
93
|
+
START_IMAGE.rotate(270)
|
94
|
+
when DIRECTIONS[:EAST]
|
95
|
+
START_IMAGE
|
96
|
+
when DIRECTIONS[:WEST]
|
97
|
+
START_IMAGE.rotate(180)
|
98
|
+
when DIRECTIONS[:SOUTH]
|
99
|
+
START_IMAGE.rotate(90)
|
100
|
+
end
|
74
101
|
when TYPES[:LEFT]
|
75
102
|
case direction
|
76
103
|
when DIRECTIONS[:NORTH]
|
data/lib/track.rb
CHANGED
@@ -46,7 +46,6 @@ module Pitchcar
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def to_s
|
49
|
-
pieces[0].type = Piece::TYPES[:STRAIGHT_RIGHT_WALL]
|
50
49
|
pieces.map(&:to_s).join(' ')
|
51
50
|
end
|
52
51
|
|
@@ -69,6 +68,7 @@ module Pitchcar
|
|
69
68
|
def overlaps?
|
70
69
|
@overlaps ||= pieces.group_by { |piece| [piece.x, piece.y] }.values.any? { |set| set.size > 1 }
|
71
70
|
end
|
71
|
+
require 'pry'
|
72
72
|
|
73
73
|
def with_wall_combinations(pieces = PieceList.new(self.pieces)[1..-1], combinations = [])
|
74
74
|
straight_index = pieces.find_index { |piece| piece.type == Piece::TYPES[:STRAIGHT] }
|
@@ -81,8 +81,16 @@ module Pitchcar
|
|
81
81
|
end
|
82
82
|
combos
|
83
83
|
else
|
84
|
-
|
84
|
+
track = Track.new([self.pieces.first] + pieces)
|
85
|
+
track.pieces.first.type = Piece::TYPES[:STRAIGHT_RIGHT_WALL]
|
86
|
+
random_right_wall = track.pieces.each_index.select do |index|
|
87
|
+
puts track.pieces[index].type
|
88
|
+
track.pieces[index].type == Piece::TYPES[:STRAIGHT_RIGHT_WALL]
|
89
|
+
end.sample
|
90
|
+
track.pieces[random_right_wall].type = Piece::TYPES[:STRAIGHT_START]
|
91
|
+
combinations << track
|
85
92
|
end
|
93
|
+
return combinations
|
86
94
|
end
|
87
95
|
|
88
96
|
# Returns pieces list sorted from in a top-bottom left-right manner
|
data/lib/track_image.rb
CHANGED
data/pitchcar.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pitchcar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonah Hirsch
|
@@ -50,6 +50,7 @@ files:
|
|
50
50
|
- Readme.md
|
51
51
|
- lib/boyermoore.rb
|
52
52
|
- lib/images/curve_tile.png
|
53
|
+
- lib/images/start_tile.png
|
53
54
|
- lib/images/straight_tile.png
|
54
55
|
- lib/piece.rb
|
55
56
|
- lib/pitchcar.rb
|