erics_tic_tac_toe 0.5.2 → 1.0.0
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.
- data/lib/tic_tac_toe.rb +0 -2
- data/lib/tic_tac_toe/game.rb +8 -0
- data/lib/tic_tac_toe/player.rb +6 -0
- data/lib/tic_tac_toe/players/computer_player.rb +4 -5
- data/lib/tic_tac_toe/players/human_player.rb +4 -1
- data/lib/tic_tac_toe/version.rb +1 -1
- data/test/game_test.rb +10 -0
- data/test/player_test.rb +5 -0
- metadata +2 -8
- data/lib/tic_tac_toe/presenters/game_presenter.rb +0 -21
- data/lib/tic_tac_toe/presenters/player_presenter.rb +0 -19
- data/test/game_presentor_test.rb +0 -19
- data/test/player_presenter_test.rb +0 -15
data/lib/tic_tac_toe.rb
CHANGED
data/lib/tic_tac_toe/game.rb
CHANGED
data/lib/tic_tac_toe/player.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
|
1
|
+
require 'tic_tac_toe/player'
|
2
2
|
|
3
|
+
module TicTacToe
|
3
4
|
module Player
|
4
|
-
|
5
5
|
class Computer
|
6
|
+
include MoveJson
|
7
|
+
|
6
8
|
attr_reader :letter
|
7
9
|
|
8
10
|
def initialize(params, solver=Strategy::MinimaxStrategy)
|
@@ -23,8 +25,5 @@ module TicTacToe
|
|
23
25
|
end
|
24
26
|
|
25
27
|
end
|
26
|
-
|
27
28
|
end
|
28
|
-
|
29
|
-
|
30
29
|
end
|
data/lib/tic_tac_toe/version.rb
CHANGED
data/test/game_test.rb
CHANGED
@@ -29,6 +29,16 @@ class GameTest < MiniTest::Unit::TestCase
|
|
29
29
|
assert_equal game.grid, empty_grid
|
30
30
|
end
|
31
31
|
|
32
|
+
def test_empty_decorated_grid
|
33
|
+
assert_equal [%w(1 2 3), %w(4 5 6), %w(7 8 9)], TicTacToe::Game.new.decorated_grid
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_decorated_grid_with_moves
|
37
|
+
game = TicTacToe::Game.new([['x', nil, nil], [nil, nil, nil], [nil, nil, nil]])
|
38
|
+
|
39
|
+
assert_equal [%w(x 2 3), %w(4 5 6), %w(7 8 9)], game.decorated_grid
|
40
|
+
end
|
41
|
+
|
32
42
|
def test_an_empty_game_is_not_solved
|
33
43
|
game = TicTacToe::Game.new
|
34
44
|
|
data/test/player_test.rb
CHANGED
@@ -32,6 +32,11 @@ module SharedPlayerTests
|
|
32
32
|
refute @player.type.nil?
|
33
33
|
end
|
34
34
|
|
35
|
+
def test_has_move_json
|
36
|
+
assert_equal({:letter => 'x', :type => @player.type, :move => '1'}.to_json,
|
37
|
+
@player.move_json('1'))
|
38
|
+
end
|
39
|
+
|
35
40
|
end
|
36
41
|
|
37
42
|
class HumanPlayerTest < MiniTest::Unit::TestCase
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: erics_tic_tac_toe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 1.0.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Eric Koslow
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-11-18 00:00:00 -06:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -57,15 +57,11 @@ files:
|
|
57
57
|
- lib/tic_tac_toe/player.rb
|
58
58
|
- lib/tic_tac_toe/players/computer_player.rb
|
59
59
|
- lib/tic_tac_toe/players/human_player.rb
|
60
|
-
- lib/tic_tac_toe/presenters/game_presenter.rb
|
61
|
-
- lib/tic_tac_toe/presenters/player_presenter.rb
|
62
60
|
- lib/tic_tac_toe/strategies/minimax_strategy.rb
|
63
61
|
- lib/tic_tac_toe/strategies/three_by_three_strategy.rb
|
64
62
|
- lib/tic_tac_toe/version.rb
|
65
63
|
- test/board_test.rb
|
66
|
-
- test/game_presentor_test.rb
|
67
64
|
- test/game_test.rb
|
68
|
-
- test/player_presenter_test.rb
|
69
65
|
- test/player_test.rb
|
70
66
|
- test/potential_state_test.rb
|
71
67
|
- test/solver_test.rb
|
@@ -102,9 +98,7 @@ specification_version: 3
|
|
102
98
|
summary: A game of Tic Tac Toe
|
103
99
|
test_files:
|
104
100
|
- test/board_test.rb
|
105
|
-
- test/game_presentor_test.rb
|
106
101
|
- test/game_test.rb
|
107
|
-
- test/player_presenter_test.rb
|
108
102
|
- test/player_test.rb
|
109
103
|
- test/potential_state_test.rb
|
110
104
|
- test/solver_test.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module TicTacToe
|
2
|
-
|
3
|
-
module Presenter
|
4
|
-
|
5
|
-
class Game
|
6
|
-
def initialize(game)
|
7
|
-
@game = game
|
8
|
-
end
|
9
|
-
|
10
|
-
def grid
|
11
|
-
@game.grid.each_with_index.map do |row, i|
|
12
|
-
row.each_with_index.map do |cell, j|
|
13
|
-
cell || ((i*3)+(j+1)).to_s
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
|
-
module TicTacToe
|
4
|
-
|
5
|
-
module Presenter
|
6
|
-
|
7
|
-
class Player
|
8
|
-
def initialize(player)
|
9
|
-
@player = player
|
10
|
-
end
|
11
|
-
|
12
|
-
def move_json(move=nil)
|
13
|
-
{:letter => @player.letter, :type => @player.type, :move => move}.to_json
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
data/test/game_presentor_test.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class GamePresentorTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@game = TicTacToe::Game.new
|
6
|
-
@presentor = TicTacToe::Presenter::Game.new(@game)
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_grid
|
10
|
-
assert_equal [%w(1 2 3), %w(4 5 6), %w(7 8 9)], @presentor.grid
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_grid_with_moves
|
14
|
-
@game = TicTacToe::Game.new([['x', nil, nil], [nil, nil, nil], [nil, nil, nil]])
|
15
|
-
@presentor = TicTacToe::Presenter::Game.new(@game)
|
16
|
-
|
17
|
-
assert_equal [%w(x 2 3), %w(4 5 6), %w(7 8 9)], @presentor.grid
|
18
|
-
end
|
19
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class PlayerPresenterTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@player_mock = OpenStruct.new(:letter => 'x')
|
6
|
-
@player_mock.instance_eval do
|
7
|
-
def type; "mock" end
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_move_json
|
12
|
-
assert_equal({:letter => 'x', :type => 'mock', :move => '1'}.to_json,
|
13
|
-
TicTacToe::Presenter::Player.new(@player_mock).move_json('1'))
|
14
|
-
end
|
15
|
-
end
|