just_checkers 0.1.0 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b222d98791ecb7fbeaccbbc243a5700804beccd
4
- data.tar.gz: 52f55d6e55e7d1217a1b761b89c7bd692c8d97ad
3
+ metadata.gz: bd7a80ff97dc8a7dd9864f66f6c2433cb8b0d662
4
+ data.tar.gz: 751f933d40e7bbc0bd2c22c4448434f8e968a8d5
5
5
  SHA512:
6
- metadata.gz: 7fcf4df66998b315fdb28bdf6c84b9a379244c73da60edb87f91f05f9595c2458077aabff90d1766d13dbbde28a7bb28f18151dea8aec3ad1a5db5108638b0a9
7
- data.tar.gz: 331229a35d08ee92e1dbd454efab6f18a5a637fd88dd697071e3b4467f0d9f3e9f3741928c04509bac5e1d38351e3613d42debbf992516a320d346cc1e30507d
6
+ metadata.gz: 957dc61a18c7b28d959a142e2a111acc1b8b0554630e4a1252409fbb0aa6f35df5ff9c0a040e397c2cb888fff53099e21a56569d8e278ef84d85db850322c0e4
7
+ data.tar.gz: 840fc894b1276b8ef9708296c6841c655ce0e432cfcb7c18acaa8b41681b85b38c2673f79f6376b021036c5e1eb3d1b60a1df4c755d490ab4fac91975b45873c
data/README.md CHANGED
@@ -29,6 +29,12 @@ Moves can be made by passing in the player number, from co-ordinates and an arra
29
29
  game_state.move!(1, {x: 1, y: 2}, [{x: 2, y: 3}])
30
30
  ```
31
31
 
32
+ If something happens a message may be found in the messages attribute
33
+
34
+ ```ruby
35
+ game_state.messages
36
+ ```
37
+
32
38
  The Winner can be found by calling winner on the object.
33
39
 
34
40
  ```ruby
@@ -19,6 +19,8 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
+ spec.required_ruby_version = '~> 2.0'
23
+
22
24
  spec.add_development_dependency "bundler", "~> 1.11"
23
25
  spec.add_development_dependency "rake", "~> 10.0"
24
26
  spec.add_development_dependency 'minitest', '~> 5.8'
@@ -23,6 +23,7 @@ module JustCheckers
23
23
  def initialize(args = {})
24
24
  @current_player_number = args[:current_player_number]
25
25
  @squares = SquareSet.new(squares: args[:squares])
26
+ @messages = []
26
27
  end
27
28
 
28
29
  # Instantiates a new GameState object in the starting position
@@ -73,7 +74,7 @@ module JustCheckers
73
74
  })
74
75
  end
75
76
 
76
- attr_reader :current_player_number, :squares
77
+ attr_reader :current_player_number, :squares, :messages
77
78
 
78
79
  # Returns a hash serialized representation of the game state
79
80
  def as_json
@@ -109,10 +110,12 @@ module JustCheckers
109
110
  # # Moves a piece from a square to perform a double jump
110
111
  # game_state.move!(1, {x: 0, y: 1}, [{x: 1, y: 2}, {x: 3, y: 4}])
111
112
  def move!(player_number, from, to)
113
+ @messages = []
112
114
  from_square = squares.find_by_x_and_y(from[:x].to_i, from[:y].to_i)
113
115
  to_squares = to.map { |p| squares.find_by_x_and_y(p[:x].to_i, p[:y].to_i) }
114
116
 
115
117
  if player_number != current_player_number
118
+ @messages.push("It is not that player's turn.")
116
119
  false
117
120
  else
118
121
  if move_valid?(from_square, to_squares)
@@ -133,12 +136,23 @@ module JustCheckers
133
136
  if from && from.piece
134
137
  legs.each_cons(2).map do |a, b|
135
138
  if squares.occupied_by(from.piece.player_number).any? { |s| s.possible_jumps(s.piece, squares).any? }
136
- a.possible_jumps(from.piece, squares).include?(b)
139
+ if a.possible_jumps(from.piece, squares).include?(b)
140
+ true
141
+ else
142
+ @messages.push('Another piece must capture first.')
143
+ false
144
+ end
137
145
  else
138
- a.possible_moves(from.piece, squares).include?(b)
146
+ if a.possible_moves(from.piece, squares).include?(b)
147
+ true
148
+ else
149
+ @messages.push('That piece cannot move like that.')
150
+ false
151
+ end
139
152
  end
140
153
  end.all?
141
154
  else
155
+ @messages.push('There is no piece there.')
142
156
  false
143
157
  end
144
158
  end
@@ -1,3 +1,3 @@
1
1
  module JustCheckers
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: just_checkers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Humphreys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-22 00:00:00.000000000 Z
11
+ date: 2016-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -88,9 +88,9 @@ require_paths:
88
88
  - lib
89
89
  required_ruby_version: !ruby/object:Gem::Requirement
90
90
  requirements:
91
- - - ">="
91
+ - - "~>"
92
92
  - !ruby/object:Gem::Version
93
- version: '0'
93
+ version: '2.0'
94
94
  required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - ">="
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  version: '0'
99
99
  requirements: []
100
100
  rubyforge_project:
101
- rubygems_version: 2.4.5
101
+ rubygems_version: 2.5.1
102
102
  signing_key:
103
103
  specification_version: 4
104
104
  summary: A checkers engine written in ruby