From 3b0f1c6307e542988a94ad5ac756937e97d29a46 Mon Sep 17 00:00:00 2001 From: Joe Karayusuf Date: Sun, 16 Dec 2012 00:40:06 -0500 Subject: [PATCH] Choose open edge as a last resort --- lib/board.rb | 8 ++++++++ lib/player.rb | 5 +++++ spec/player_spec.rb | 10 ++++++++++ 3 files changed, 23 insertions(+) diff --git a/lib/board.rb b/lib/board.rb index 41a99d8..d165a2c 100644 --- a/lib/board.rb +++ b/lib/board.rb @@ -19,6 +19,14 @@ def open_spaces @spaces.select { |space| space.open? } end + def open_edge_spaces + open_spaces.select { |space| space.edge? } + end + + def edge_spaces + @spaces.select { |space| space.edge? } + end + def open_corner_spaces open_spaces.select { |space| space.corner? } end diff --git a/lib/player.rb b/lib/player.rb index 51beed9..6477df9 100644 --- a/lib/player.rb +++ b/lib/player.rb @@ -21,6 +21,7 @@ def move space ||= center space ||= opposite_corner space ||= corner + space ||= edge space end @@ -55,5 +56,9 @@ def opposite_corner def corner @board.open_corner_spaces.first end + + def edge + @board.open_edge_spaces.first + end end end diff --git a/spec/player_spec.rb b/spec/player_spec.rb index 56ced84..99d25cb 100644 --- a/spec/player_spec.rb +++ b/spec/player_spec.rb @@ -310,5 +310,15 @@ module TicTacToe player.move.row_and_column.should eql "0 0" end end + + context "edge" do + it "chooses the first available edge" do + player = Player.new("X", [ ["X", "O", "X"], + ["O", "X", "_"], + ["O", "X", "O"] ]) + + player.move.row_and_column.should eql "1 2" + end + end end end