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 +4 -4
- data/README.md +6 -0
- data/just_checkers.gemspec +2 -0
- data/lib/just_checkers/game_state.rb +17 -3
- data/lib/just_checkers/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd7a80ff97dc8a7dd9864f66f6c2433cb8b0d662
|
4
|
+
data.tar.gz: 751f933d40e7bbc0bd2c22c4448434f8e968a8d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/just_checkers.gemspec
CHANGED
@@ -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
|
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.
|
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:
|
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.
|
101
|
+
rubygems_version: 2.5.1
|
102
102
|
signing_key:
|
103
103
|
specification_version: 4
|
104
104
|
summary: A checkers engine written in ruby
|