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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34b441fcb4b47af154322a33d400d5d44b45c991
4
- data.tar.gz: 317cfcab1c9f5d4b76f39c61cf0caade4818531e
3
+ metadata.gz: 3c87085eb4eec9b96a86d1299c0a787e9355517a
4
+ data.tar.gz: 67ebc8e58b5e251de59f5ea59050526310364922
5
5
  SHA512:
6
- metadata.gz: 4d2ed02d11e5532334700b213ebb56fecafdd285a674a0f157423b02b6b0afb35c5268ddede6eae2594c6a1643ab5b043bb6dc3e0734836a4bf7321a16acfb7c
7
- data.tar.gz: 5bb3282a7b02b483dd02221fca414e492b77808f38cff60d695fd85f610967d76d8a4900d2f7667421fad8195384017c65973f8fc0a7c6562ab93c510bed2c6c
6
+ metadata.gz: 846e2794000ba3c86f7481af1f38899052af0fbbf82c6a324362b3b21c55aee72e1c8688d8762eb30bde38f064b73fd948ac49f572aa09d6728952d721be0e9c
7
+ data.tar.gz: 85574ef85a7d5ee3e0f9409e0c16ce6f3eb1e7f20d89d143a476159154bb467aaafd1412402213fc2fece9138ff925ff46e04f2e2e4782c1df2c0b1b1d34b4ad
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pitchcar (0.4.1)
4
+ pitchcar (0.6.0)
5
5
  bazaar
6
6
  rmagick
7
7
 
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
- File.expand_path('../images/curve_tile.png', __FILE__)).to_a
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], TYPES[:STRAIGHT_LEFT_WALL], TYPES[:STRAIGHT_RIGHT_WALL]
87
+ when TYPES[:STRAIGHT]
72
88
  return STRAIGHT_IMAGE.rotate(90) if direction == DIRECTIONS[:NORTH] || direction == DIRECTIONS[:SOUTH]
73
- return STRAIGHT_IMAGE
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
- combinations << Track.new([self.pieces.first] + pieces)
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
@@ -4,7 +4,7 @@ module Pitchcar
4
4
  class TrackImage
5
5
  attr_accessor :track
6
6
  TILE_SIZE = 570
7
- OFFSET_SIZE = -46
7
+ OFFSET_SIZE = -50
8
8
  TITLE_OFFSET = 200
9
9
  BLANK_TILE = Magick::Image.new(TILE_SIZE, TILE_SIZE) { |canvas| canvas.background_color = 'white' }
10
10
 
data/pitchcar.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'pitchcar'
3
- spec.version = '0.5.1'
3
+ spec.version = '0.6.0'
4
4
  spec.date = '2017-02-23'
5
5
  spec.summary = 'Pitchcar Track Generator'
6
6
  spec.description = 'Generates tracks for pitchcar'
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.5.1
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