diff --git a/app/models/game.rb b/app/models/game.rb
index 454d99c..0f875c8 100644
--- a/app/models/game.rb
+++ b/app/models/game.rb
@@ -69,5 +69,21 @@ def populate_board!
y2 = 7
color = 0
end
+
+ end
+
+ def in_check?(color)
+ king = pieces.find_by(type: 'king', color: color)
+ opponents_pieces = pieces(!color)
+
+ opponents_pieces.each do |piece|
+ if piece.valid_move?(king.x_position, king.y_position)
+ @checking_piece = piece
+ return true
+ else
+ return false
+ end
+ end
end
+
end
diff --git a/app/views/shared/_chessboard.html.erb b/app/views/shared/_chessboard.html.erb
index 4664c15..4bf6574 100644
--- a/app/views/shared/_chessboard.html.erb
+++ b/app/views/shared/_chessboard.html.erb
@@ -10,7 +10,7 @@
<% 1.upto(8) do |col| %>
<%= link_to piece_path(id: @select_pc.id, x_position: col, y_position: row), method: :put do %>
-
+
<% @pieces.detect do |piece| %>
<% if piece.x_position == col && piece.y_position == row %>
<%= link_to piece_color(piece), piece_path(piece.id), :class => hilite(piece) %>
diff --git a/test/models/in_check_test.rb b/test/models/in_check_test.rb
new file mode 100644
index 0000000..4a10cdb
--- /dev/null
+++ b/test/models/in_check_test.rb
@@ -0,0 +1,16 @@
+require 'test_helper'
+
+class GameInCheckTest < ActiveSupport::TestCase
+ test "game in check state" do
+ g = Game.create
+ expected = true
+
+ p = g.pieces.find_by(x_position: 4, y_position: 2, type: 'pawn', color: "black")
+ k = g.pieces.find_by(x_position: 5, y_position: 1, color: "white", type: 'King')
+
+ p.valid_move?(king.x_position: 5, king.y_position: 1)
+
+ assert_equal true, g.in_check?(1)
+ end
+
+end
|