ruby_ttt 0.4.1 → 0.4.2
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/ai.rb +36 -0
- data/lib/ai_player.rb +13 -0
- data/lib/computer_player.rb +12 -0
- data/lib/human_player.rb +5 -0
- data/lib/player.rb +0 -21
- metadata +4 -3
- data/lib/alpha_beta_player.rb +0 -39
- data/lib/ruby_ttt.rb +0 -9
data/lib/ai.rb
CHANGED
@@ -69,4 +69,40 @@ module RubyTictactoe
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
+
class AlphaBetaPlayer
|
73
|
+
attr_accessor :marker, :opponent
|
74
|
+
def initialize(player)
|
75
|
+
@marker = player.marker
|
76
|
+
@opponent = player.opponent
|
77
|
+
end
|
78
|
+
|
79
|
+
def get_alpha(alpha, score)
|
80
|
+
alpha
|
81
|
+
end
|
82
|
+
|
83
|
+
def get_beta(beta, score)
|
84
|
+
beta
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
class MinimizingPlayer < AlphaBetaPlayer
|
89
|
+
def get_alpha(alpha, score)
|
90
|
+
score > alpha ? score : alpha
|
91
|
+
end
|
92
|
+
|
93
|
+
def return_best_score(alpha, beta)
|
94
|
+
alpha
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
class MaximizingPlayer < AlphaBetaPlayer
|
99
|
+
def get_beta(beta, score)
|
100
|
+
score < beta ? score : beta
|
101
|
+
end
|
102
|
+
|
103
|
+
def return_best_score(alpha, beta)
|
104
|
+
beta
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
72
108
|
end
|
data/lib/ai_player.rb
ADDED
data/lib/human_player.rb
ADDED
data/lib/player.rb
CHANGED
@@ -12,25 +12,4 @@ module RubyTictactoe
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
class AIPlayer < Player
|
16
|
-
|
17
|
-
def make_move(board)
|
18
|
-
ai = AI.new(self)
|
19
|
-
cell = ai.computer_move(board, self)
|
20
|
-
add_marker(board, cell)
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
class ComputerPlayer < Player
|
26
|
-
|
27
|
-
def make_move(board)
|
28
|
-
cell = board.random_cell
|
29
|
-
add_marker(board, cell)
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
class HumanPlayer < Player; end
|
35
|
-
|
36
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_ttt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -36,13 +36,14 @@ extensions: []
|
|
36
36
|
extra_rdoc_files: []
|
37
37
|
files:
|
38
38
|
- lib/ai.rb
|
39
|
-
- lib/
|
39
|
+
- lib/ai_player.rb
|
40
40
|
- lib/board.rb
|
41
|
+
- lib/computer_player.rb
|
41
42
|
- lib/game.rb
|
42
43
|
- lib/game_setup.rb
|
44
|
+
- lib/human_player.rb
|
43
45
|
- lib/player.rb
|
44
46
|
- lib/player_factory.rb
|
45
|
-
- lib/ruby_ttt.rb
|
46
47
|
- lib/tictactoe_constants.rb
|
47
48
|
- lib/ui.rb
|
48
49
|
homepage: http://rubygems.org/gems/ruby_ttt
|
data/lib/alpha_beta_player.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
module RubyTictactoe
|
2
|
-
|
3
|
-
class AlphaBetaPlayer
|
4
|
-
attr_accessor :marker, :opponent
|
5
|
-
def initialize(player)
|
6
|
-
@marker = player.marker
|
7
|
-
@opponent = player.opponent
|
8
|
-
end
|
9
|
-
|
10
|
-
def get_alpha(alpha, score)
|
11
|
-
alpha
|
12
|
-
end
|
13
|
-
|
14
|
-
def get_beta(beta, score)
|
15
|
-
beta
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
class MinimizingPlayer < AlphaBetaPlayer
|
20
|
-
def get_alpha(alpha, score)
|
21
|
-
score > alpha ? score : alpha
|
22
|
-
end
|
23
|
-
|
24
|
-
def return_best_score(alpha, beta)
|
25
|
-
alpha
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
class MaximizingPlayer < AlphaBetaPlayer
|
30
|
-
def get_beta(beta, score)
|
31
|
-
score < beta ? score : beta
|
32
|
-
end
|
33
|
-
|
34
|
-
def return_best_score(alpha, beta)
|
35
|
-
beta
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|