Class: XO::AI::Expert
- Inherits:
-
Object
- Object
- XO::AI::Expert
- Defined in:
- lib/xo/ai/expert.rb
Direct Known Subclasses
Class Method Summary collapse
Class Method Details
.all_moves(grid) ⇒ Object
30 31 32 |
# File 'lib/xo/ai/expert.rb', line 30 def self.all_moves(grid) grid.enum_for(:each_free).map { |r, c| XO::Position.new(r, c) } end |
.get_moves(grid, player) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/xo/ai/expert.rb', line 22 def self.get_moves(grid, player) if moves = MOVES_CACHE[grid] || MOVES_CACHE[invert_grid(grid)] moves.map { |pos| XO::Position.new(*pos) } else XO::AI.minimax(grid, player).moves end end |
.suggest_moves(grid, player) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/xo/ai/expert.rb', line 9 def self.suggest_moves(grid, player) result = XO::Evaluator.analyze(grid, player) case result[:status] when :ok get_moves(grid, player) when :game_over [] else raise IllegalGridStatusError end end |