pitchcar 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|