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