connect_four_cli 0.1.1 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dbc181aea2b95b37e47dce8d9de0c18b325090ee
4
- data.tar.gz: 4b46f5a7eb0bb366d0d4ef581840afded6de414f
3
+ metadata.gz: e383eeebc386889101e48df138e30282065b0a4f
4
+ data.tar.gz: 80990019b62309eddfab5db83dd44c73c249ee0c
5
5
  SHA512:
6
- metadata.gz: 89f58ee6114c89373838a4fade1238adf3142665695d1e07e71376da3448188bdd7645dc603216af42e3aab6311a7ab995a50801a42f2a03de7d69a0ddd55ce5
7
- data.tar.gz: 18a4d45854963b29fa7626bc1ca810c9b940cf47786e2f4c207f5ba6767efd2c4e4870e573a401f9579ab728ce05c71a4224f2f21dcabc71b175c3a4a1388c21
6
+ metadata.gz: bc6dac5c95180cf7320a402e8af6a3f304aa7dd59f2908adb2aec14fc963bfadbddc6ffbc4c3fd2a39365d0ff9daf047dfa0ab0806687ceaaafc5033cfac6307
7
+ data.tar.gz: de8a70dbdce4a128e5c56674f45fef15d8c932848ebd92fb1044e825770b14c9c5ba9c63b2e4669e96aa4e206155dfbff4929611ae75203b9496f723d9788525
@@ -1,10 +1,9 @@
1
1
  module ConnectFourCli
2
2
  class Board
3
- attr_reader :size, :grid, :turn, :winner
3
+ attr_reader :size, :grid
4
4
 
5
5
  def initialize(size)
6
6
  @size = size
7
- @turn = :red
8
7
  build_grid
9
8
  end
10
9
 
@@ -12,26 +11,6 @@ module ConnectFourCli
12
11
  @grid = Array.new(size) { Array.new(size) { NoChecker.new } }
13
12
  end
14
13
 
15
- def next_turn
16
- if @winner
17
- @turn = @winner
18
- else
19
- @turn = (@turn == :red ? :yellow : :red)
20
- end
21
- end
22
-
23
- def place_turn_checker(position)
24
- return if column_full?(position)
25
- checker = Checker.new(@turn)
26
- place_checker(checker, at: position)
27
- next_turn
28
- end
29
-
30
- def place_checker(checker, at:)
31
- row = free_position(at)
32
- grid[row][at] = checker
33
- end
34
-
35
14
  def column_full?(number)
36
15
  column_count(number) == 6
37
16
  end
@@ -45,22 +24,18 @@ module ConnectFourCli
45
24
  end
46
25
 
47
26
  def red_locations
48
- output = []
49
- grid.transpose.each_with_index do |row, y|
50
- row.each_with_index do |checker, x|
51
- if checker.color == :red
52
- output << [x,y]
53
- end
54
- end
55
- end
56
- output
27
+ locations_for(:red)
57
28
  end
58
29
 
59
30
  def yellow_locations
31
+ locations_for(:yellow)
32
+ end
33
+
34
+ def locations_for(color)
60
35
  output = []
61
36
  grid.transpose.each_with_index do |row, y|
62
37
  row.each_with_index do |checker, x|
63
- if checker.color == :yellow
38
+ if checker.color == color
64
39
  output << [x,y]
65
40
  end
66
41
  end
@@ -68,7 +43,6 @@ module ConnectFourCli
68
43
  output
69
44
  end
70
45
 
71
-
72
46
  def column(number)
73
47
  grid.transpose[number]
74
48
  end
@@ -82,20 +56,13 @@ module ConnectFourCli
82
56
  end
83
57
  output << line
84
58
  end
85
- output.transpose.map{ |row| row.join(" ")}.join("\n") +
86
- "\n " + game_state
87
- end
88
-
89
- def red_four_in_a_row?
90
- return true if each_row(:red)
91
- return true if each_col(:red)
92
- return true if each_diag(:red)
59
+ output.transpose.map{ |row| row.join(" ")}.join("\n")
93
60
  end
94
61
 
95
- def yellow_four_in_a_row?
96
- return true if each_row(:yellow)
97
- return true if each_col(:yellow)
98
- return true if each_diag(:yellow)
62
+ def four_in_a_row?(color)
63
+ if each_row(color) || each_col(color) || each_diag(color)
64
+ return true
65
+ end
99
66
  end
100
67
 
101
68
  def each_col(color)
@@ -107,33 +74,113 @@ module ConnectFourCli
107
74
  false
108
75
  end
109
76
 
110
- def each_diag(color)
111
- diagonals.each do |diagonal|
112
- return true if diagonal.all? do |x, y|
113
- grid[x][y].color == color
77
+ def terrible_moves
78
+ moves = []
79
+ possible_moves.each do |possible_move|
80
+ all_directions_from(1,possible_move.reverse).each do |ray|
81
+ if ray.all? { |checker| checker.checker? && checker.color == :yellow }
82
+ moves << possible_move
83
+ end
114
84
  end
115
- return true if diagonal.all? do |x, y|
116
- grid[y][5-x].color == color
85
+ end
86
+ moves
87
+ end
88
+
89
+ def decent_moves
90
+ moves = []
91
+ possible_moves.each do |possible_move|
92
+ all_directions_from(2,possible_move.reverse).each do |ray|
93
+ if ray.all? { |checker| checker.checker? && checker.color == :yellow }
94
+ moves << possible_move
95
+ end
117
96
  end
118
97
  end
119
- false
98
+ moves
120
99
  end
121
100
 
122
- def diagonals
123
- output = []
124
- output << [[0,0],[1,1],[2,2],[3,3]]
125
- output << [[1,1],[2,2],[3,3],[4,4]]
126
- output << [[2,2],[3,3],[4,4],[5,5]]
101
+ def winning_moves
102
+ moves = []
103
+ possible_moves.each do |possible_move|
104
+ all_directions_from(3,possible_move.reverse).each do |ray|
105
+ color = ray[0].color
106
+ if ray.all? { |checker| checker.checker? && checker.color == color }
107
+ moves << possible_move
108
+ end
109
+ end
110
+ end
111
+ moves
112
+ end
113
+
114
+ def all_directions_from(distance, coord)
115
+ directions = []
116
+ [:+,:-].repeated_permutation(2) do |first, second|
117
+ direction = []
118
+ x, y = coord
119
+ distance.times do
120
+ x = x.send(first, 1)
121
+ y = y.send(second, 1)
122
+ next if x > 5 || x < 0 || y > 6 || y < 0
123
+ direction << [x,y]
124
+ end
125
+ directions << direction
126
+
127
+ x, y = coord
128
+ directionx = []
129
+ directiony = []
130
+ distance.times do
131
+ x = x.send(first, 1)
132
+ y = y.send(second, 1)
133
+ directionx << [x,coord[1]] unless x > 5 || x < 0
134
+ directiony << [coord[0], y] unless y > 5 || y < 0
135
+ end
136
+ directions << directiony
137
+ directions << directionx
138
+ end
139
+ directions = directions.reject { |direction| direction.length < distance}.uniq
127
140
 
128
- output << [[0,1],[1,2],[2,3],[3,4]]
129
- output << [[0,2],[1,3],[2,4],[3,5]]
141
+ directions.map do |direction|
142
+ direction.map do |x,y|
143
+ grid[x][y]
144
+ end
145
+ end
146
+ end
130
147
 
131
- output << [[1,0],[2,1],[3,2],[4,3]]
132
- output << [[2,0],[3,1],[4,2],[5,3]]
148
+ def possible_moves
149
+ (0...size).map do |row|
150
+ position = free_position(row)
151
+ [row, position] unless column_full?(row)
152
+ end.compact
153
+ end
133
154
 
134
- output << [[1,2],[2,3],[3,4],[4,5]]
135
- output << [[2,1],[3,2],[4,3],[5,4]]
136
- output
155
+ def each_diag(color)
156
+ all_diagonals.each do |diagonal|
157
+ diagonal.each_cons(4) do |winning_diag|
158
+ return true if winning_diag.all? do |x, y|
159
+ grid[x][y].color == color
160
+ end
161
+ return true if winning_diag.all? do |x, y|
162
+ grid[y][5-x].color == color
163
+ end
164
+ end
165
+ end
166
+ false
167
+ end
168
+
169
+ def all_diagonals
170
+ diagonals = []
171
+ (grid.length).times do |i|
172
+ x = i
173
+ y = 0
174
+ set = []
175
+ until x == grid.length || y == grid.length
176
+ set << [x, y]
177
+ x += 1
178
+ y += 1
179
+ end
180
+ diagonals << set
181
+ end
182
+
183
+ diagonals.map { |diag| [diag, diag.map(&:reverse) ] }.flatten(1).uniq.select { |diag| diag.length >= 4}
137
184
  end
138
185
 
139
186
  def each_row(color)
@@ -145,19 +192,16 @@ module ConnectFourCli
145
192
  false
146
193
  end
147
194
 
148
- def game_state
149
- "\n"
150
- if yellow_four_in_a_row?
151
- @winner = :yellow
152
- @turn = :yellow
153
- "Yellow wins! Press q to quit."
154
- elsif red_four_in_a_row?
155
- @winner = :red
156
- @turn = :red
157
- "Red wins! Press q to quit."
158
- else
159
- "#{@turn.capitalize}'s turn."
160
- end
195
+ def full?
196
+ @grid.flatten.all?(&:checker?)
161
197
  end
198
+
199
+ def place_checker(checker, at:)
200
+ return false if column_full?(at)
201
+ row = free_position(at)
202
+ grid[row][at] = checker
203
+ true
204
+ end
205
+
162
206
  end
163
207
  end
@@ -27,6 +27,10 @@ class NoChecker < Checker
27
27
  super(:none)
28
28
  end
29
29
 
30
+ def ==(other_checker)
31
+ false
32
+ end
33
+
30
34
  def display
31
35
  "0"
32
36
  end
@@ -0,0 +1,25 @@
1
+ module ConnectFourCli
2
+ class Computer
3
+ attr_reader :board, :checker
4
+
5
+ def initialize(board)
6
+ @board = board
7
+ @checker = Checker.new(:yellow)
8
+ end
9
+
10
+ def random_move
11
+ (0...board.size).map do |i|
12
+ board.column_full?(i) ? nil : i
13
+ end.compact.sample
14
+ end
15
+
16
+ def make_move
17
+ if board.winning_moves.length > 0
18
+ move = board.winning_moves.sample[0]
19
+ else
20
+ move = random_move
21
+ end
22
+ board.place_checker(checker, at: move)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,71 @@
1
+ module ConnectFourCli
2
+ class Game
3
+ attr_reader :board, :turn, :winner
4
+
5
+ def initialize(size, computer = false)
6
+ @turn = :red
7
+ @board = Board.new(size)
8
+ @computer = Computer.new(board) if computer
9
+ end
10
+
11
+ def next_turn
12
+ if @winner
13
+ @turn = @winner
14
+ else
15
+ @turn = (@turn == :red ? :yellow : :red)
16
+ end
17
+ end
18
+
19
+ def computer_move
20
+ @computer.make_move
21
+ next_turn
22
+ end
23
+
24
+ def computer_turn?
25
+ !!@computer && @turn == :yellow
26
+ end
27
+
28
+ def place_turn_checker(position)
29
+ checker = Checker.new(@turn)
30
+ if board.place_checker(checker, at: position)
31
+ next_turn
32
+ end
33
+ end
34
+
35
+ def red_locations
36
+ board.red_locations
37
+ end
38
+
39
+ def yellow_locations
40
+ board.yellow_locations
41
+ end
42
+
43
+ def display
44
+ output = []
45
+ output << board.display
46
+ output << game_state
47
+ output.join("\n\n")
48
+ end
49
+
50
+ def game_state
51
+ if board.four_in_a_row?(:yellow)
52
+ @winner = :yellow
53
+ @turn = :yellow
54
+ "Yellow wins! Press q to quit."
55
+ elsif board.four_in_a_row?(:red)
56
+ @winner = :red
57
+ @turn = :red
58
+ "Red wins! Press q to quit."
59
+ elsif board.full?
60
+ @winner = :draw
61
+ "It's a draw! Press q to quit"
62
+ else
63
+ if computer_turn?
64
+ "Computer's turn."
65
+ else
66
+ "#{@turn.capitalize}'s turn."
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -10,36 +10,37 @@ module ConnectFourCli
10
10
  end
11
11
  end
12
12
 
13
- def self.highlight_column(board, column)
13
+ def self.highlight_column(game, column)
14
14
  map = Dispel::StyleMap.new(6) # number of lines
15
- (0..5).each do |row|
16
- map.add(turn_color(board.turn), row, column..column)
15
+ unless game.computer_turn?
16
+ (0..5).each do |row|
17
+ map.add(turn_color(game.turn), row, column..column)
18
+ map.add(turn_color(game.turn), 0, column..column)
19
+ end
17
20
  end
18
- board.red_locations.each do |location|
21
+ game.red_locations.each do |location|
19
22
  map.add(["#ff0000", "#000000"], location[0], location[1]*2..location[1]*2 + 1)
20
23
  end
21
- board.yellow_locations.each do |location|
24
+ game.yellow_locations.each do |location|
22
25
  map.add(["#ffff00", "#000000"], location[0], location[1]*2..location[1]*2 + 1)
23
26
  end
24
- map.add(turn_color(board.turn), 0, column..column)
25
27
  map
26
28
  end
27
29
 
28
- def self.start
30
+ def self.start(game)
29
31
  ::Dispel::Screen.open(colors: true) do |screen|
30
32
  Curses.curs_set 0
31
33
 
32
- board = Board.new(6)
33
- content = board.display
34
+ content = game.display
34
35
 
35
36
  x = 0
36
37
  y = 0
37
38
 
38
- map = self.highlight_column(board, x)
39
+ map = self.highlight_column(game, x)
39
40
  screen.draw content, map, [y,x]
40
41
 
41
- Dispel::Keyboard.output do |key|
42
- if board.winner
42
+ Dispel::Keyboard.output timeout: 0.5 do |key|
43
+ if game.winner
43
44
  Dispel::Keyboard.output do |key|
44
45
  case key
45
46
  when "q" then break
@@ -48,6 +49,14 @@ module ConnectFourCli
48
49
  break
49
50
  end
50
51
 
52
+ if game.computer_turn?
53
+ sleep 0.5
54
+ game.computer_move
55
+ map = self.highlight_column(game, x)
56
+ content = game.display
57
+ screen.draw content, map, [y,x]
58
+ end
59
+
51
60
  case key
52
61
  when :right
53
62
  next if x + 2 >= 12
@@ -56,13 +65,14 @@ module ConnectFourCli
56
65
  next if x - 2 < 0
57
66
  x-= 2
58
67
  when " "
59
- board.place_turn_checker(x / 2)
68
+ game.place_turn_checker(x / 2)
60
69
  when "q" then break
61
70
 
62
71
  end
63
- map = self.highlight_column(board, x)
64
- content = board.display
72
+ map = self.highlight_column(game, x)
73
+ content = game.display
65
74
  screen.draw content, map, [y,x]
75
+
66
76
  end
67
77
  end
68
78
  end
@@ -1,3 +1,3 @@
1
1
  module ConnectFourCli
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,10 +1,17 @@
1
1
  require "connect_four_cli/version"
2
2
  require "connect_four_cli/checker"
3
+ require "connect_four_cli/game"
3
4
  require "connect_four_cli/board"
5
+ require "connect_four_cli/computer"
4
6
  require "connect_four_cli/renderer"
5
7
 
6
8
  module ConnectFourCli
7
9
  def self.start
8
- Renderer.start
10
+ if ARGV[0] == "--two" || ARGV[0] == "-2"
11
+ game = Game.new(6)
12
+ else
13
+ game = Game.new(6, true)
14
+ end
15
+ Renderer.start(game)
9
16
  end
10
17
  end
data/tags CHANGED
@@ -5,15 +5,22 @@
5
5
  !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
6
6
  !_TAG_PROGRAM_VERSION 5.8 //
7
7
  == /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/checker.rb /^ def ==(other_checker)$/;" f class:ConnectFourCli.Checker
8
+ == /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/checker.rb /^ def ==(other_checker)$/;" f class:ConnectFourCli.NoChecker
8
9
  Board /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ class Board$/;" c class:ConnectFourCli
9
10
  Checker /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/checker.rb /^class Checker$/;" c class:ConnectFourCli
11
+ Computer /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/computer.rb /^ class Computer$/;" c class:ConnectFourCli
10
12
  ConnectFourCli /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli.rb /^module ConnectFourCli$/;" m
11
13
  ConnectFourCli /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^module ConnectFourCli$/;" m
12
14
  ConnectFourCli /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/checker.rb /^module ConnectFourCli$/;" m
15
+ ConnectFourCli /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/computer.rb /^module ConnectFourCli$/;" m
16
+ ConnectFourCli /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/game.rb /^module ConnectFourCli$/;" m
13
17
  ConnectFourCli /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/renderer.rb /^module ConnectFourCli$/;" m
14
18
  ConnectFourCli /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/version.rb /^module ConnectFourCli$/;" m
19
+ Game /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/game.rb /^ class Game$/;" c class:ConnectFourCli
15
20
  NoChecker /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/checker.rb /^class NoChecker < Checker$/;" c class:ConnectFourCli
16
21
  Renderer /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/renderer.rb /^ class Renderer$/;" c class:ConnectFourCli
22
+ all_diagonals /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def all_diagonals$/;" f class:ConnectFourCli.Board.possible_moves
23
+ all_directions_from /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def all_directions_from(distance, coord)$/;" f class:ConnectFourCli.Board
17
24
  build_board /Users/kitlangton/Viking/Unit4/connect_four_cli/spec/connect_four_cli/board_spec.rb /^ def build_board$/;" f
18
25
  build_grid /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def build_grid$/;" f class:ConnectFourCli.Board
19
26
  checker? /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/checker.rb /^ def checker?$/;" f class:ConnectFourCli.Checker
@@ -21,30 +28,43 @@ checker? /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/ch
21
28
  column /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def column(number)$/;" f class:ConnectFourCli.Board
22
29
  column_count /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def column_count(number)$/;" f class:ConnectFourCli.Board
23
30
  column_full? /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def column_full?(number)$/;" f class:ConnectFourCli.Board
24
- diagonals /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def diagonals$/;" f class:ConnectFourCli.Board
31
+ computer_move /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/game.rb /^ def computer_move$/;" f class:ConnectFourCli.Game
32
+ computer_turn? /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/game.rb /^ def computer_turn?$/;" f class:ConnectFourCli.Game
33
+ decent_moves /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def decent_moves$/;" f class:ConnectFourCli.Board
25
34
  display /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def display$/;" f class:ConnectFourCli.Board
26
35
  display /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/checker.rb /^ def display$/;" f class:ConnectFourCli.Checker
27
36
  display /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/checker.rb /^ def display$/;" f class:ConnectFourCli.NoChecker
37
+ display /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/game.rb /^ def display$/;" f class:ConnectFourCli.Game
28
38
  each_col /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def each_col(color)$/;" f class:ConnectFourCli.Board
29
- each_diag /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def each_diag(color)$/;" f class:ConnectFourCli.Board
39
+ each_diag /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def each_diag(color)$/;" f class:ConnectFourCli.Board.possible_moves
30
40
  each_row /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def each_row(color)$/;" f class:ConnectFourCli.Board
41
+ four_in_a_row? /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def four_in_a_row?(color)$/;" f class:ConnectFourCli.Board
31
42
  free_position /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def free_position(number)$/;" f class:ConnectFourCli.Board
32
- game_state /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def game_state$/;" f class:ConnectFourCli.Board
33
- highlight_column /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/renderer.rb /^ def self.highlight_column(board, column)$/;" F class:ConnectFourCli.Renderer
43
+ full? /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def full?$/;" f class:ConnectFourCli.Board
44
+ game_state /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/game.rb /^ def game_state$/;" f class:ConnectFourCli.Game
45
+ highlight_column /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/renderer.rb /^ def self.highlight_column(game, column)$/;" F class:ConnectFourCli.Renderer
34
46
  initialize /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def initialize(size)$/;" f class:ConnectFourCli.Board
35
47
  initialize /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/checker.rb /^ def initialize$/;" f class:ConnectFourCli.NoChecker
36
48
  initialize /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/checker.rb /^ def initialize(color)$/;" f class:ConnectFourCli.Checker
37
- next_turn /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def next_turn$/;" f class:ConnectFourCli.Board
49
+ initialize /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/computer.rb /^ def initialize(board)$/;" f class:ConnectFourCli.Computer
50
+ initialize /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/game.rb /^ def initialize(size, computer = false)$/;" f class:ConnectFourCli.Game
51
+ locations_for /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def locations_for(color)$/;" f class:ConnectFourCli.Board
52
+ make_move /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/computer.rb /^ def make_move$/;" f class:ConnectFourCli.Computer.random_move
53
+ next_turn /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/game.rb /^ def next_turn$/;" f class:ConnectFourCli.Game
38
54
  place_checker /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def place_checker(checker, at:)$/;" f class:ConnectFourCli.Board
39
- place_turn_checker /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def place_turn_checker(position)$/;" f class:ConnectFourCli.Board
55
+ place_turn_checker /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/game.rb /^ def place_turn_checker(position)$/;" f class:ConnectFourCli.Game
56
+ possible_moves /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def possible_moves$/;" f class:ConnectFourCli.Board
57
+ random_move /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/computer.rb /^ def random_move$/;" f class:ConnectFourCli.Computer
40
58
  red_checker /Users/kitlangton/Viking/Unit4/connect_four_cli/spec/connect_four_cli/board_spec.rb /^ def red_checker$/;" f
41
59
  red_checker /Users/kitlangton/Viking/Unit4/connect_four_cli/spec/connect_four_cli/checker_spec.rb /^ def red_checker$/;" f
42
- red_four_in_a_row? /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def red_four_in_a_row?$/;" f class:ConnectFourCli.Board
43
60
  red_locations /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def red_locations$/;" f class:ConnectFourCli.Board
61
+ red_locations /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/game.rb /^ def red_locations$/;" f class:ConnectFourCli.Game
44
62
  start /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli.rb /^ def self.start$/;" F class:ConnectFourCli
45
- start /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/renderer.rb /^ def self.start$/;" F class:ConnectFourCli.Renderer
63
+ start /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/renderer.rb /^ def self.start(game)$/;" F class:ConnectFourCli.Renderer
64
+ terrible_moves /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def terrible_moves$/;" f class:ConnectFourCli.Board
46
65
  turn_color /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/renderer.rb /^ def self.turn_color(turn)$/;" F class:ConnectFourCli.Renderer
66
+ winning_moves /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def winning_moves$/;" f class:ConnectFourCli.Board
47
67
  yellow_checker /Users/kitlangton/Viking/Unit4/connect_four_cli/spec/connect_four_cli/board_spec.rb /^ def yellow_checker$/;" f
48
68
  yellow_checker /Users/kitlangton/Viking/Unit4/connect_four_cli/spec/connect_four_cli/checker_spec.rb /^ def yellow_checker$/;" f
49
- yellow_four_in_a_row? /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def yellow_four_in_a_row?$/;" f class:ConnectFourCli.Board
50
69
  yellow_locations /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/board.rb /^ def yellow_locations$/;" f class:ConnectFourCli.Board
70
+ yellow_locations /Users/kitlangton/Viking/Unit4/connect_four_cli/lib/connect_four_cli/game.rb /^ def yellow_locations$/;" f class:ConnectFourCli.Game
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: connect_four_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kit Langton
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-06 00:00:00.000000000 Z
11
+ date: 2016-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -117,6 +117,8 @@ files:
117
117
  - lib/connect_four_cli.rb
118
118
  - lib/connect_four_cli/board.rb
119
119
  - lib/connect_four_cli/checker.rb
120
+ - lib/connect_four_cli/computer.rb
121
+ - lib/connect_four_cli/game.rb
120
122
  - lib/connect_four_cli/renderer.rb
121
123
  - lib/connect_four_cli/version.rb
122
124
  - tags