erics_tic_tac_toe 0.5.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|