chess_validator 0.2.3 → 0.2.8

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/move_logic.rb +18 -3
  3. data/lib/piece.rb +5 -2
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e38078ff0f98160665b1511291dde4fd0fc289ce160e5dda4d1d3fb8f31a829e
4
- data.tar.gz: bfd557f6b46e9621f113872d0a68786c7e01000168c4ffae32336bd7d8a7dcbc
3
+ metadata.gz: 7447add6691d3f9071ad8ef282e15e05303916f4190c68a5a8850bceb6f92677
4
+ data.tar.gz: e462bf916cb48a88e3b1a1150d98fba07e913ea5b030df003dc1c2983c595d0b
5
5
  SHA512:
6
- metadata.gz: f68474fbe05fac401a2dbb619fe8d0c159aa7ab971b2180dcba78f8e8360abff44854ca56b254bf7206d79666d95f720134da216695662ed61458ef13274993a
7
- data.tar.gz: 3cea5de5b5c69826ce0d583030d7ebec8f45bd5d7e7d454df0f1f4852ed2d5de7d53ae6fc0028780705083619f61626af545b1d4d4d247d564a0d6c47aab8628
6
+ metadata.gz: 1d8d07cd4aef5cdd849581fcd5e7b90d402877abd076b350ac249d29239769646cafd8619e0e2318d140a0800eae1184bae58126889bec28a89e83d63fdf9fc8
7
+ data.tar.gz: 84335e767809eb2475e1018508e02f015b7f66de2d1bdb89ada50e1213f625a5576f5c534413f9280281893d649214ee3b7e660946980320595f34775f7339fc
@@ -9,7 +9,7 @@ module ChessValidator
9
9
  pieces = []
10
10
  board.values.each do |piece|
11
11
  if piece.color == fen.active
12
- load_valid_moves(board, piece, fen)
12
+ load_move_data(board, piece, fen)
13
13
  pieces << piece if piece.valid_moves.size > 0
14
14
  end
15
15
  end
@@ -17,9 +17,24 @@ module ChessValidator
17
17
  pieces
18
18
  end
19
19
 
20
- def load_valid_moves(board, piece, fen)
20
+ def load_move_data(board, piece, fen)
21
21
  moves_for_piece(piece).each do |move|
22
- piece.valid_moves << move if valid_move?(piece, board, move, fen)
22
+ if valid_move?(piece, board, move, fen)
23
+ piece.valid_moves << move
24
+ target = find_target(board, piece, move)
25
+ piece.targets << target if target
26
+ else
27
+ piece.move_potential << move
28
+ end
29
+ end
30
+ end
31
+
32
+ def find_target(board, piece, move)
33
+ if board[INDEX_KEY[move]]
34
+ board[INDEX_KEY[move]]
35
+ elsif piece.piece_type.downcase == 'p' && piece.position[0] != move[0]
36
+ en_passant_position = piece.color == 'w' ? move[0] + '5' : move[0] + '4'
37
+ board[INDEX_KEY[en_passant_position]]
23
38
  end
24
39
  end
25
40
 
@@ -2,15 +2,18 @@ require_relative './constants/move_key'
2
2
 
3
3
  module ChessValidator
4
4
  class Piece
5
- attr_accessor :position, :piece_type, :color, :square_index, :valid_moves
5
+ attr_accessor :position, :piece_type, :color, :square_index, :valid_moves,
6
+ :targets, :move_potential, :defenders
6
7
 
7
8
  def initialize(char, square_index)
8
9
  @piece_type = char
9
10
  @square_index = square_index
10
11
  @color = get_color(char)
11
12
  @position = get_position(square_index)
12
- @enemy_targets = []
13
13
  @valid_moves = []
14
+ @targets = []
15
+ @move_potential = []
16
+ @defenders = []
14
17
  end
15
18
 
16
19
  def get_position(square_index)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chess_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Ellison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-17 00:00:00.000000000 Z
11
+ date: 2020-11-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'Documentation: https://github.com/chadellison/chess_validator'
14
14
  email: chad.ellison0123@gmail.com