just_chess 1.0.7 → 1.0.8

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
  SHA256:
3
- metadata.gz: 5186354e9db002dd6613734861ca814ccea3753b399c4187070a8e9ecd9fb654
4
- data.tar.gz: 7e046eb71b17b5edfcc6f4c4e612c45b1a3139ab08ad5472b96ccaa38faeb425
3
+ metadata.gz: fd9b8430fe1b330224a23bf84568883bf58d1266339db0feddb18e251f12f5bc
4
+ data.tar.gz: 65ecd066dc1df89fd55331836bd19a118830ec88658ed6f45aca9bbc82ee0f13
5
5
  SHA512:
6
- metadata.gz: caeee8d99463adb0a5c09d3422c456a38d57857db78bb1ae3b84606d0624cc9632335ca95a0be2c5d00518b85b1e50710eb42737bac7a8c29f4389c3c4f90223
7
- data.tar.gz: ea82ca8a6ff509df44d04c4585f7e16643408e31cbd926774c0d1be6ad46c05f8d0dadf8e2ac9d05f28e11f0ed1478910e397f425f7ca554e76b522b59325dc3
6
+ metadata.gz: 95155deb95f2ec9a3a5a63ea854e2c48aaa22a52a4f37e03259f7e57502c0e3dd97488b02b96d87dec3014f1dcda426f5a5a1d59d703b76b610e0eece210c073
7
+ data.tar.gz: 3b9db2efd203a5e29e0925dc5a420f3f8e7a0b1a7aa4c3bb80987172bc86f70db2717701f980deaf759c54759a63eddba750fac596c58dee715c4af9436bcf13
data/just_chess.gemspec CHANGED
@@ -27,5 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency "rake", "~> 13.0.1"
28
28
  spec.add_development_dependency "minitest", "~> 5.14.0"
29
29
 
30
- spec.add_runtime_dependency "board_game_grid", "~> 0.1.1"
30
+ spec.add_runtime_dependency "board_game_grid", "~> 0.1.4"
31
31
  end
@@ -72,6 +72,7 @@ module JustChess
72
72
  # @return [SquareSet]
73
73
  def checked_squares(square, game_state)
74
74
  dup = game_state.clone
75
+ # set piece to nil to handle case where a piece threatens squares behind the king
75
76
  dup.squares.find_king_for_player(player_number).piece = nil
76
77
  dup.squares.threatened_by(opponent, dup)
77
78
  end
@@ -94,4 +95,5 @@ module JustChess
94
95
  end
95
96
  end
96
97
  end
97
- end
98
+ end
99
+
@@ -28,7 +28,7 @@ module JustChess
28
28
  # id: 'a1',
29
29
  # x: 1,
30
30
  # y: 0,
31
- # piece: { player_number: 1, direction: 1, king: false }
31
+ # piece: { id: 1, player_number: 1, type: 'pawn' }
32
32
  # })
33
33
  def initialize(id: , x: , y: , piece: nil)
34
34
  @id = id
@@ -37,20 +37,6 @@ module JustChess
37
37
  @piece = PieceFactory.new(piece).build
38
38
  end
39
39
 
40
- # Is the square occupied by the specified player?
41
- #
42
- # @return [Boolean]
43
- def occupied_by_player?(player_number)
44
- piece && piece.player_number == player_number
45
- end
46
-
47
- # Is the square occupied by the opponent of the specified player?
48
- #
49
- # @return [Boolean]
50
- def occupied_by_opponent?(player_number)
51
- piece && piece.player_number != player_number
52
- end
53
-
54
40
  # returns the rank number of the square for the specified player
55
41
  #
56
42
  # @return [Fixnum]
@@ -68,17 +54,5 @@ module JustChess
68
54
  def last_rank(player_number)
69
55
  rank_number(player_number) == 8
70
56
  end
71
-
72
- # A serialized version of the square as a hash
73
- #
74
- # @return [Hash]
75
- def as_json
76
- {
77
- id: id,
78
- x: x,
79
- y: y,
80
- piece: piece && piece.as_json
81
- }
82
- end
83
57
  end
84
- end
58
+ end
@@ -31,26 +31,6 @@ module JustChess
31
31
  end
32
32
  end
33
33
 
34
- # serializes the squares as a hash
35
- #
36
- # @return [Hash]
37
- def as_json
38
- squares.map(&:as_json)
39
- end
40
-
41
- # Find the square with the matching piece identifier
42
- #
43
- # @param [Fixnum] piece_id
44
- # the unique identifier of the piece.
45
- #
46
- # @return [Square]
47
- # ==== Example:
48
- # # Find the square with a piece of id 4
49
- # square_set.find_by_piece_id(4)
50
- def find_by_piece_id(piece_id)
51
- find { |s| s.piece && s.piece.id == piece_id }
52
- end
53
-
54
34
  # Find the square occupied by the player's king
55
35
  #
56
36
  # @param [Fixnum] player_number
@@ -64,72 +44,6 @@ module JustChess
64
44
  find { |s| s.piece && s.piece.is_a?(JustChess::King) && s.occupied_by_player?(player_number) }
65
45
  end
66
46
 
67
- # Find all squares in the y direction of square
68
- #
69
- # @param [Square] square
70
- # the originating square
71
- #
72
- # @param [Fixnum] direction_y
73
- # the direction, either up (-1) or down (1)
74
- #
75
- # @return [SquareSet]
76
- # ==== Example:
77
- # # Get all squares up from square_a
78
- # square_set.in_direction(square_a, -1)
79
- def in_direction(square, direction_y)
80
- select { |s| BoardGameGrid::Vector.new(square, s).direction.y == direction_y }
81
- end
82
-
83
- # Takes a player number and returns all squares occupied by the player
84
- #
85
- # @param [Fixnum] player_number
86
- # the player's number.
87
- #
88
- # @return [SquareSet]
89
- def occupied_by_player(player_number)
90
- select { |s| s.occupied_by_player?(player_number) }
91
- end
92
-
93
- # Takes a player number and returns all squares occupied by the opponent of the player
94
- #
95
- # @param [Fixnum] player_number
96
- # the player's number.
97
- #
98
- # @return [SquareSet]
99
- def occupied_by_opponent(player_number)
100
- select { |s| s.occupied_by_opponent?(player_number) }
101
- end
102
-
103
- # Takes a player number and returns all squares unoccupied or occupied by the opponent of the player
104
- #
105
- # @param [Fixnum] player_number
106
- # the player's number.
107
- #
108
- # @return [SquareSet]
109
- def unoccupied_or_occupied_by_opponent(player_number)
110
- select { |s| s.unoccupied? || s.occupied_by_opponent?(player_number) }
111
- end
112
-
113
- # Find all squares occupied by a piece of a particular type
114
- #
115
- # @param [Class] piece_type
116
- # the class of the piece.
117
- #
118
- # @return [SquareSet]
119
- def occupied_by_piece(piece_type)
120
- select { |s| s.piece && s.piece.is_a?(piece_type) }
121
- end
122
-
123
- # Find all squares occupied by a piece not of a particular type
124
- #
125
- # @param [Class] piece_type
126
- # the class of the piece.
127
- #
128
- # @return [SquareSet]
129
- def excluding_piece(piece_type)
130
- select { |s| s.piece && !s.piece.is_a?(piece_type) }
131
- end
132
-
133
47
  # Returns all squares with pieces that haven't moved
134
48
  #
135
49
  # @return [SquareSet]
@@ -1,4 +1,4 @@
1
1
  module JustChess
2
2
  # :nodoc:
3
- VERSION = "1.0.7"
3
+ VERSION = "1.0.8"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: just_chess
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Humphreys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-15 00:00:00.000000000 Z
11
+ date: 2020-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.1.1
61
+ version: 0.1.4
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.1.1
68
+ version: 0.1.4
69
69
  description: Provides a representation of a chess game complete with rules enforcement
70
70
  and serialisation.
71
71
  email: