From 97a65cccb208afebe66ee0778f5cac8616c41ea8 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Wed, 9 Oct 2019 18:47:26 +0000 Subject: [PATCH 01/21] Done. --- lib/board.rb | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/lib/board.rb b/lib/board.rb index e69de29bb2d..cfe315c3575 100644 --- a/lib/board.rb +++ b/lib/board.rb @@ -0,0 +1,42 @@ +class Board + attr_accessor :cells + def initialize + @cells = [" ", " ", " ", " ", " ", " ", " ", " ", " "] + end + + def board + @cells = [" ", " ", " ", " ", " ", " ", " ", " ", " "] + end + + def reset! + @cells = [" ", " ", " ", " ", " ", " ", " ", " ", " "] + end + + def display + puts " #{@cells[0]} | #{@cells[1]} | #{@cells[2]} " + puts "-----------" + puts " #{@cells[3]} | #{@cells[4]} | #{@cells[5]} " + puts "-----------" + puts " #{@cells[6]} | #{@cells[7]} | #{@cells[8]} " + end + + def position(x) + y = x.to_i - 1 + @cells[y] + end + + def full? + @cells.none? (" ") + end + + def turn_count + #binding.pry + counter = [ ] + self.board.each do |item| + if item == "X" || "O" + counter << item + end + end + counter.length + end +end \ No newline at end of file From c8983c84e27626efe3e9d61a5f9a2880ad1f0673 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Sat, 12 Oct 2019 20:39:29 +0000 Subject: [PATCH 02/21] Done. --- lib/board.rb | 32 +++++++++++-- lib/game.rb | 106 +++++++++++++++++++++++++++++++++++++++++++ lib/player.rb | 10 ++++ lib/players/human.rb | 9 ++++ 4 files changed, 153 insertions(+), 4 deletions(-) diff --git a/lib/board.rb b/lib/board.rb index cfe315c3575..036815d4f85 100644 --- a/lib/board.rb +++ b/lib/board.rb @@ -30,13 +30,37 @@ def full? end def turn_count - #binding.pry counter = [ ] - self.board.each do |item| - if item == "X" || "O" + @cells.each do |item| + if item == " " counter << item end end - counter.length + 9 - counter.length + end + + def taken?(x) + y = x.to_i + if @cells[y - 1] == " " + false + else + true + end + end + + def valid_move?(x) + if x.to_i.between?(1, 9) && taken?(x) == false + true + else + false + end + end + + def update(x, player) + #if (player.token == "X" || "O") && valid_move?(x) + if valid_move?(x) + y = x.to_i - 1 + @cells[y] = "#{player.token}" + end end end \ No newline at end of file diff --git a/lib/game.rb b/lib/game.rb index e69de29bb2d..a333e85d1a2 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -0,0 +1,106 @@ +class Game + + attr_accessor :board, :player_1, :player_2, :cells + + WIN_COMBINATIONS = [[0, 1, 2], [3, 4, 5], [6, 7, 8], + [0, 3, 6], [1, 4, 7 ], [2, 5, 8], [0, 4, 8], [2, 4, 6], [1, 4, 7]] + + def initialize(player_1 = Players::Human.new, player_2 = Players::Human.new("O"), board = Board.new) + @player_1 = player_1 + @player_2 = player_2 + @board = board + end + + def board + @board + end + + def current_player + player_one_array = [] + player_two_array = [] + x = player_1.token + y = player_2.token + board.cells.each do |item| + if item == x + player_one_array << x + elsif item == y + player_two_array << y + end + end + if player_one_array.length > player_two_array.length + player_2 + elsif player_two_array.length > player_one_array.length + player_1 + elsif player_one_array.length == player_two_array.length + player_1 + end + end + + def won? + x_array = [] + y_array = [] + z = 8 + while z >= 0 + if board.cells[z] = "X" + x_array << z + z -= 1 + elsif board.cells[z] = "Y" + y_array << z + z -= 1 + end + end + while z >= 0 + WIN_COMBINATIONS[z - 1].each do |index| + + + + + + + + + + + + + + + + + + + + + #player_one_index_array = [] + #player_two_index_array = [] + #temp_winning_combo = [] + #final_winning_combo = [] + #x = player_1.token + #y = player_2.token + #z = 9 + #binding.pry + #while z > 0 + #if board.cells[z - 1] == x + #player_one_index_array << z + #z -= 1 + #elsif board.cells[z - 1] == y + #player_two_index_array << z + #z -= 1 + #end + #end + #while z >= 0 + #WIN_COMBINATIONS[z - 1].each do |item| + #if player_one_index_array.include?(item) + #temp_winning_combo << item + #end + #if temp_winning_combo.length == 3 + #final_winning_combo << temp_winning_combo + #z = 0 + #elsif temp_winning_combo.length < 3 + #z -= 1 + #end + #end + #end + final_winning_combo[0] + #end +#end \ No newline at end of file diff --git a/lib/player.rb b/lib/player.rb index e69de29bb2d..5782d9cfb76 100644 --- a/lib/player.rb +++ b/lib/player.rb @@ -0,0 +1,10 @@ +class Player + + attr_reader :token + + @@players = [] + + def initialize(token = "X") + @token = token + end +end \ No newline at end of file diff --git a/lib/players/human.rb b/lib/players/human.rb index e69de29bb2d..531ce93515d 100644 --- a/lib/players/human.rb +++ b/lib/players/human.rb @@ -0,0 +1,9 @@ +module Players + class Human < Player + def move(board) + puts "Enter a move:" + input = gets.strip + input + end + end +end \ No newline at end of file From b9739be771277ef234946eee056f3dabf6e42065 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Wed, 16 Oct 2019 15:56:19 +0000 Subject: [PATCH 03/21] Done. --- lib/game.rb | 86 +++++++++++++++-------------------------------------- 1 file changed, 24 insertions(+), 62 deletions(-) diff --git a/lib/game.rb b/lib/game.rb index a333e85d1a2..5cf7c54400a 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -38,69 +38,31 @@ def current_player def won? x_array = [] - y_array = [] + o_array = [] z = 8 + y = [] + umm = false + final_array = [] while z >= 0 - if board.cells[z] = "X" - x_array << z - z -= 1 - elsif board.cells[z] = "Y" - y_array << z - z -= 1 + if board.cells[z] == "X" + x_array << z + z -= 1 + elsif board.cells[z] == "O" + o_array << z + z -= 1 end end - while z >= 0 - WIN_COMBINATIONS[z - 1].each do |index| - - - - - - - - - - - - - - - - - - - - - #player_one_index_array = [] - #player_two_index_array = [] - #temp_winning_combo = [] - #final_winning_combo = [] - #x = player_1.token - #y = player_2.token - #z = 9 - #binding.pry - #while z > 0 - #if board.cells[z - 1] == x - #player_one_index_array << z - #z -= 1 - #elsif board.cells[z - 1] == y - #player_two_index_array << z - #z -= 1 - #end - #end - #while z >= 0 - #WIN_COMBINATIONS[z - 1].each do |item| - #if player_one_index_array.include?(item) - #temp_winning_combo << item - #end - #if temp_winning_combo.length == 3 - #final_winning_combo << temp_winning_combo - #z = 0 - #elsif temp_winning_combo.length < 3 - #z -= 1 - #end - #end - #end - final_winning_combo[0] - #end -#end \ No newline at end of file + WIN_COMBINATIONS.each do |combo| + if x_array.include?(combo[0]) && x_array.include?(combo[1]) && x_array.include?(combo[2]) + y << combo + elsif o_array.include?(combo[0]) && o_array.include?(combo[1]) && o_array.include?(combo[2]) + y << combo + end + end + if y.length > 0 + y[0] + else + false + end + end +end \ No newline at end of file From b994b3e4d3208bed578017650d421509a20f9a8e Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Wed, 16 Oct 2019 16:25:01 +0000 Subject: [PATCH 04/21] Done. --- lib/game.rb | 61 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/lib/game.rb b/lib/game.rb index 5cf7c54400a..d9297075e66 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -37,32 +37,49 @@ def current_player end def won? - x_array = [] - o_array = [] - z = 8 y = [] - umm = false - final_array = [] - while z >= 0 - if board.cells[z] == "X" - x_array << z - z -= 1 - elsif board.cells[z] == "O" - o_array << z - z -= 1 - end - end WIN_COMBINATIONS.each do |combo| - if x_array.include?(combo[0]) && x_array.include?(combo[1]) && x_array.include?(combo[2]) - y << combo - elsif o_array.include?(combo[0]) && o_array.include?(combo[1]) && o_array.include?(combo[2]) + if combo[0] == combo[1] && combo[1] == combo[2] y << combo end end - if y.length > 0 - y[0] - else - false + if y.length == 0 + false + else + y end end -end \ No newline at end of file +end + + + + #def won? + #x_array = [] + #o_array = [] + #z = 8 + #y = [] + #umm = false + #final_array = [] + #while z >= 0 + #if board.cells[z] == "X" + #x_array << z + #z -= 1 + #elsif board.cells[z] == "O" + #o_array << z + #z -= 1 + #end + #end + #WIN_COMBINATIONS.each do |combo| + #if x_array.include?(combo[0]) && x_array.include?(combo[1]) && x_array.include?(combo[2]) + #y << combo + #elsif o_array.include?(combo[0]) && o_array.include?(combo[1]) && o_array.include?(combo[2]) + #y << combo + #end + #end + #if y.length > 0 + #y[0] + #else + #false + #end + #end +#end \ No newline at end of file From c5668b3351f375fe5ed29517402b4da5f0a2cffc Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Wed, 16 Oct 2019 21:07:43 +0000 Subject: [PATCH 05/21] Done. --- lib/game.rb | 76 +++++++++++++++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/lib/game.rb b/lib/game.rb index d9297075e66..84b7a55a804 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -38,48 +38,54 @@ def current_player def won? y = [] + #binding.pry WIN_COMBINATIONS.each do |combo| - if combo[0] == combo[1] && combo[1] == combo[2] + if (board.cells[combo[0]] == "X" && board.cells[combo[1]] == "X" && board.cells[combo[2]] == "X") + y << combo + elsif (board.cells[combo[0]] == "O" && board.cells[combo[1]] == "O" && board.cells[combo[2]] == "O") y << combo end end - if y.length == 0 - false + if y.length > 0 + y[0] else - y + false + end + end + + def draw? + if self.won? == false + true end end -end + def over? + if board.cells.include?(" ") + false + elsif self.won? || self.draw? + true + end + end + def winner + #binding.pry + x = self.won? + if x == false + nil + else + board.cells[x[0]] + end + end - #def won? - #x_array = [] - #o_array = [] - #z = 8 - #y = [] - #umm = false - #final_array = [] - #while z >= 0 - #if board.cells[z] == "X" - #x_array << z - #z -= 1 - #elsif board.cells[z] == "O" - #o_array << z - #z -= 1 - #end - #end - #WIN_COMBINATIONS.each do |combo| - #if x_array.include?(combo[0]) && x_array.include?(combo[1]) && x_array.include?(combo[2]) - #y << combo - #elsif o_array.include?(combo[0]) && o_array.include?(combo[1]) && o_array.include?(combo[2]) - #y << combo - #end - #end - #if y.length > 0 - #y[0] - #else - #false - #end - #end -#end \ No newline at end of file + def turn + count = 0 + a = player_1.move(board.cells) + if (a.to_i < 10) || (a.to_i > 0) + count += 1 + elsif (a.to_i > 9) || (a.to_i < 1) + a = player_1.move(board.cells) + count += 1 + end + b = player_2.move(board.cells) + end +end \ No newline at end of file From 978bbe336203bc533c351b55d831ce14950b5188 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Thu, 17 Oct 2019 14:14:22 +0000 Subject: [PATCH 06/21] Done. --- lib/game.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/game.rb b/lib/game.rb index 84b7a55a804..a77bacb7baf 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -79,13 +79,17 @@ def winner def turn count = 0 - a = player_1.move(board.cells) + while count == 0 || count.even? + a = self.player_1.move(board.cells) if (a.to_i < 10) || (a.to_i > 0) count += 1 - elsif (a.to_i > 9) || (a.to_i < 1) - a = player_1.move(board.cells) + end + end + while count.odd? + b = self.player_2.move(board.cells) + if (b.to_i < 10) || (b.to_i > 0) count += 1 end - b = player_2.move(board.cells) + end end end \ No newline at end of file From bec0416fff07752dcb7bc3c425000c3503eee537 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Thu, 17 Oct 2019 15:28:30 +0000 Subject: [PATCH 07/21] Done. --- lib/game.rb | 47 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/lib/game.rb b/lib/game.rb index a77bacb7baf..d9957040fe2 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -78,18 +78,35 @@ def winner end def turn - count = 0 - while count == 0 || count.even? - a = self.player_1.move(board.cells) - if (a.to_i < 10) || (a.to_i > 0) - count += 1 - end - end - while count.odd? - b = self.player_2.move(board.cells) - if (b.to_i < 10) || (b.to_i > 0) - count += 1 - end - end - end -end \ No newline at end of file + a = player_1.move(board.cells) + if (a.to_i > 10) || (a.to_i < 1) + a = player_1.move(board.cells) + end + b = player_2.move(board.cells) + if (b.to_i > 10) || (b.to_i < 1) + b = player_2.move(board.cells) + end + end + end + + + + + #count = 0 + #until count.odd? && count > 0 + #a = player_1.move(board.cells) + #if (a.to_i < 10) || (a.to_i > 0) + #count += 1 + #end + #end + #end +#end + #end + #while count.odd? + #b = self.player_2.move(board.cells) + #if (b.to_i < 10) || (b.to_i > 0) + #count += 1 + #end + #end + #end +#end \ No newline at end of file From 0710baf00c5e7d0d1cbb570833f4dba3f8489de0 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Thu, 17 Oct 2019 17:07:16 +0000 Subject: [PATCH 08/21] Done. --- lib/game.rb | 23 +++++++++++++---------- lib/players/human.rb | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/lib/game.rb b/lib/game.rb index d9957040fe2..37057aa2d2f 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -78,17 +78,20 @@ def winner end def turn - a = player_1.move(board.cells) - if (a.to_i > 10) || (a.to_i < 1) - a = player_1.move(board.cells) - end - b = player_2.move(board.cells) - if (b.to_i > 10) || (b.to_i < 1) - b = player_2.move(board.cells) - end - end - end + #binding.pry + until board.turn_count == 9 + a = current_player.move(board) + if board.valid_move?(a) + board.update(a, current_player) + end + end +end +end + + #1. current player + #2. valid_move + #3. method inside method diff --git a/lib/players/human.rb b/lib/players/human.rb index 531ce93515d..a13471bd7b6 100644 --- a/lib/players/human.rb +++ b/lib/players/human.rb @@ -3,7 +3,7 @@ class Human < Player def move(board) puts "Enter a move:" input = gets.strip - input + input end end end \ No newline at end of file From 8913d7f63ae100c0c9fc8cb5e6417ed656aa658b Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Thu, 17 Oct 2019 19:45:53 +0000 Subject: [PATCH 09/21] Done. --- lib/game.rb | 42 +++++++++++++----------------------------- 1 file changed, 13 insertions(+), 29 deletions(-) diff --git a/lib/game.rb b/lib/game.rb index 37057aa2d2f..33099c01393 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -78,38 +78,22 @@ def winner end def turn - #binding.pry - until board.turn_count == 9 a = current_player.move(board) if board.valid_move?(a) board.update(a, current_player) + else + self.turn + end + end + + def play + while !self.over? + turn + end + if self.won? + puts "Congratulations #{self.winner}!" + elsif self.draw? + puts "It was a draw." end end end -end - - - #1. current player - #2. valid_move - #3. method inside method - - - - #count = 0 - #until count.odd? && count > 0 - #a = player_1.move(board.cells) - #if (a.to_i < 10) || (a.to_i > 0) - #count += 1 - #end - #end - #end -#end - #end - #while count.odd? - #b = self.player_2.move(board.cells) - #if (b.to_i < 10) || (b.to_i > 0) - #count += 1 - #end - #end - #end -#end \ No newline at end of file From f28f3db9765a60a309a50fc6f17251bc0d978274 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Thu, 17 Oct 2019 19:57:40 +0000 Subject: [PATCH 10/21] Done. --- lib/game.rb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/game.rb b/lib/game.rb index 33099c01393..f7e3d13154d 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -60,11 +60,7 @@ def draw? end def over? - if board.cells.include?(" ") - false - elsif self.won? || self.draw? - true - end + self.won? || self.draw? end def winner @@ -93,7 +89,7 @@ def play if self.won? puts "Congratulations #{self.winner}!" elsif self.draw? - puts "It was a draw." + puts "Cat's Game!" end end end From 260d722d5c655672b03354fc45f6bbffa9d61469 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Fri, 18 Oct 2019 20:55:20 +0000 Subject: [PATCH 11/21] Done. --- bin/tictactoe | 41 +++++++++++++++++ lib/game.rb | 5 +-- lib/players/computer.rb | 99 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 142 insertions(+), 3 deletions(-) diff --git a/bin/tictactoe b/bin/tictactoe index 7ddd394b19b..db433be1144 100755 --- a/bin/tictactoe +++ b/bin/tictactoe @@ -1,3 +1,44 @@ #!/usr/bin/env ruby require_relative '../config/environment' + +puts "Hello! Welcome to Tic Tac Toe." + +puts "What kind of game would you like to play?" +puts "1. 0 Player" +puts "2. 1 Player" +puts "3. 2 Player" +input_a = gets.strip + +if (a == 2) || (a == 3) + puts "Would you like to be "X" (Player #1) or "O" ("Player #2")?" + puts "Enter your selection("X" or "O"):" + input_b = gets.strip +end + +if (input_a == 1) + Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) + + elsif (input_a == 2) && (input_b == "X") + Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) + + elsif (input_a == 2) && (input_b == "O") + Game.new(player_1 = Players::Computer.new, player_2 = Players::Human.new("O"), board = Board.new).play(board = @board) + + elsif (input_a == 3) && (input_b == "X") + Game.new(player_1 = Players::Human.new, player_2 = Players::Human.new, board = Board.new).play(board = @board) + + elsif (input_a == 2) && (input_b == "O") + Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) +end + +if game.over? + puts "Would you like to play again?" + puts "1. Yes" + puts "2. No" + input_c = gets.strip +end + +if input_c = "Yes" + + diff --git a/lib/game.rb b/lib/game.rb index f7e3d13154d..b6a81d79e88 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -54,8 +54,8 @@ def won? end def draw? - if self.won? == false - true + if self.won? == false && board.cells.include?(" ") == false + true end end @@ -64,7 +64,6 @@ def over? end def winner - #binding.pry x = self.won? if x == false nil diff --git a/lib/players/computer.rb b/lib/players/computer.rb index e69de29bb2d..18c7f53d14d 100644 --- a/lib/players/computer.rb +++ b/lib/players/computer.rb @@ -0,0 +1,99 @@ +module Players + class Computer < Player + def move(board) + #binding.pry + @current_board = [] + @last_board = [] + x = 0 + board.cells.each do |index| + @current_board << "#{index}#{x}" + x += 1 + end + difference = (@current_board - @last_board)[0] + xxxy = @current_board.index(difference) + their_last_move = xxxy.to_i + 1 + + if !board.taken?(5) + @last_board = board.cells + "5" + else + @last_board = board.cells + a = [2, 4, 6, 8].sample + a + end + + if their_last_move == 1 + if !board.taken?(2) + @last_board = board.cells + "2" + elsif !board.taken?(4) + @last_board = board.cells + "4" + end + + elsif their_last_move == 2 + if !board.taken?(1) + @last_board = board.cells + "1" + elsif !board.taken?(3) + @last_board = board.cells + "3" + end + + elsif their_last_move == 3 + if !board.taken?(2) + @last_board = board.cells + "2" + elsif !board.taken?(6) + @last_board = board.cells + "6" + end + + elsif their_last_move == 4 + if !board.taken?(1) + @last_board = board.cells + "1" + elsif !board.taken?(7) + @last_board = board.cells + "7" + end + + elsif their_last_move == 6 + if !board.taken?(3) + @last_board = board.cells + "3" + elsif !board.taken?(9) + @last_board = board.cells + "9" + end + + elsif their_last_move == 7 + if !board.taken?(4) + @last_board = board.cells + "4" + elsif ! board.cells.taken?(8) + @last_board = board.cells + "8" + end + + elsif their_last_move == 8 + if !board.taken?(7) + @last_board = board.cells + "7" + elsif !board.taken?(9) + @last_board = board.cells + "9" + end + + elsif their_last_move == 9 + if !board.taken?(6) + @last_board = board.cells + "6" + elsif !board.taken?(8) + @last_board = board.cells + "8" + end + end + end + end +end \ No newline at end of file From ac543a059b8450d7aecc71d33657c3abad4dd497 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Mon, 21 Oct 2019 14:29:39 +0000 Subject: [PATCH 12/21] Done. --- bin/tictactoe | 71 ++++++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/bin/tictactoe b/bin/tictactoe index db433be1144..e57e033749c 100755 --- a/bin/tictactoe +++ b/bin/tictactoe @@ -2,43 +2,50 @@ require_relative '../config/environment' -puts "Hello! Welcome to Tic Tac Toe." - -puts "What kind of game would you like to play?" -puts "1. 0 Player" -puts "2. 1 Player" -puts "3. 2 Player" -input_a = gets.strip - -if (a == 2) || (a == 3) - puts "Would you like to be "X" (Player #1) or "O" ("Player #2")?" - puts "Enter your selection("X" or "O"):" - input_b = gets.strip -end - -if (input_a == 1) - Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) - - elsif (input_a == 2) && (input_b == "X") - Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) - - elsif (input_a == 2) && (input_b == "O") - Game.new(player_1 = Players::Computer.new, player_2 = Players::Human.new("O"), board = Board.new).play(board = @board) +input_d = nil + +def universal_welcome + puts "What kind of game would you like to play?" + puts "1. 0 Player" + puts "2. 1 Player" + puts "3. 2 Player" + input_a = gets.strip + if input_a == "2" || input_a == "3" + puts "Would you like to be X (Player 1), or O (Player 2)?" + puts "Enter your selection(X or O):" + input_b = gets.strip + end - elsif (input_a == 3) && (input_b == "X") - Game.new(player_1 = Players::Human.new, player_2 = Players::Human.new, board = Board.new).play(board = @board) - - elsif (input_a == 2) && (input_b == "O") - Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) + if (input_a == "1") + Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) + elsif (input_a == "2") && (input_b == "X") + Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) + elsif (input_a == "2") && (input_b == "O") + Game.new(player_1 = Players::Computer.new, player_2 = Players::Human.new("O"), board = Board.new).play(board = @board) + elsif (input_a == "3") && (input_b == "X") + Game.new(player_1 = Players::Human.new, player_2 = Players::Human.new, board = Board.new).play(board = @board) + elsif (input_a == "2") && (input_b == "O") + Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) + end end - -if game.over? + +if input_d != nil puts "Would you like to play again?" puts "1. Yes" puts "2. No" input_c = gets.strip + if input_c == "Yes" || input_c == "1" + self.universal_welcome + elsif input_c == "No" || input_c == "2" + puts "Thanks for playing!" + end end -if input_c = "Yes" - - +if input_d == nil + puts "Hello! Welcome to Tic Tac Toe." + puts "Please enter your name:" + input_d = gets.strip + if input_d != nil + universal_welcome + end +end \ No newline at end of file From eff712a712363e7fc16a05abf8539789b28481e2 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Mon, 21 Oct 2019 15:01:37 +0000 Subject: [PATCH 13/21] Done. --- bin/tictactoe | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/bin/tictactoe b/bin/tictactoe index e57e033749c..c214a103241 100755 --- a/bin/tictactoe +++ b/bin/tictactoe @@ -1,5 +1,5 @@ #!/usr/bin/env ruby - +require "pry" require_relative '../config/environment' input_d = nil @@ -17,15 +17,18 @@ def universal_welcome end if (input_a == "1") - Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) - elsif (input_a == "2") && (input_b == "X") - Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) - elsif (input_a == "2") && (input_b == "O") - Game.new(player_1 = Players::Computer.new, player_2 = Players::Human.new("O"), board = Board.new).play(board = @board) - elsif (input_a == "3") && (input_b == "X") - Game.new(player_1 = Players::Human.new, player_2 = Players::Human.new, board = Board.new).play(board = @board) - elsif (input_a == "2") && (input_b == "O") - Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play(board = @board) + Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play + elsif (input_a == "2") && (input_b == "X") + + + Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play + elsif (input_a == "2") && (input_b == "O") + + Game.new(player_1 = Players::Computer.new, player_2 = Players::Human.new("O"), board = Board.new).play + elsif (input_a == "3") && (input_b == "X") + Game.new(player_1 = Players::Human.new, player_2 = Players::Human.new, board = Board.new).play + elsif (input_a == "2") && (input_b == "O") + Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play end end From 799c6c988e94af4f968e9ffbd7f609f4931a1a85 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Mon, 21 Oct 2019 15:56:12 +0000 Subject: [PATCH 14/21] Done. --- bin/tictactoe | 6 +--- lib/players/computer.rb | 64 ++++++++++++++++++++--------------------- 2 files changed, 33 insertions(+), 37 deletions(-) diff --git a/bin/tictactoe b/bin/tictactoe index c214a103241..f096d60f977 100755 --- a/bin/tictactoe +++ b/bin/tictactoe @@ -3,7 +3,6 @@ require "pry" require_relative '../config/environment' input_d = nil - def universal_welcome puts "What kind of game would you like to play?" puts "1. 0 Player" @@ -15,15 +14,12 @@ def universal_welcome puts "Enter your selection(X or O):" input_b = gets.strip end - if (input_a == "1") Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play elsif (input_a == "2") && (input_b == "X") - - + binding.pry Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play elsif (input_a == "2") && (input_b == "O") - Game.new(player_1 = Players::Computer.new, player_2 = Players::Human.new("O"), board = Board.new).play elsif (input_a == "3") && (input_b == "X") Game.new(player_1 = Players::Human.new, player_2 = Players::Human.new, board = Board.new).play diff --git a/lib/players/computer.rb b/lib/players/computer.rb index 18c7f53d14d..c841cd6f57e 100644 --- a/lib/players/computer.rb +++ b/lib/players/computer.rb @@ -1,10 +1,10 @@ module Players class Computer < Player def move(board) - #binding.pry @current_board = [] @last_board = [] x = 0 + board.cells.each do |index| @current_board << "#{index}#{x}" x += 1 @@ -58,40 +58,40 @@ def move(board) "7" end - elsif their_last_move == 6 - if !board.taken?(3) - @last_board = board.cells - "3" - elsif !board.taken?(9) - @last_board = board.cells - "9" - end + #elsif their_last_move == 6 + #if !board.taken?(3) + #@last_board = board.cells + #"3" + #elsif !board.taken?(9) + #@last_board = board.cells + #"9" + #end - elsif their_last_move == 7 - if !board.taken?(4) - @last_board = board.cells - "4" - elsif ! board.cells.taken?(8) - @last_board = board.cells - "8" - end + #elsif their_last_move == 7 + #if !board.taken?(4) + #@last_board = board.cells + #"4" + #elsif ! board.cells.taken?(8) + #@last_board = board.cells + #"8" + #end - elsif their_last_move == 8 - if !board.taken?(7) - @last_board = board.cells - "7" - elsif !board.taken?(9) - @last_board = board.cells - "9" - end + #elsif their_last_move == 8 + #if !board.taken?(7) + #@last_board = board.cells + #"7" + #elsif !board.taken?(9) + #@last_board = board.cells + #"9" + #end - elsif their_last_move == 9 - if !board.taken?(6) - @last_board = board.cells - "6" - elsif !board.taken?(8) - @last_board = board.cells - "8" + #elsif their_last_move == 9 + #if !board.taken?(6) + #@last_board = board.cells + #"6" + #elsif !board.taken?(8) + #@last_board = board.cells + #"8" end end end From 91e596b82dcc9148349f63469d623923755c8efb Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Tue, 22 Oct 2019 15:01:44 +0000 Subject: [PATCH 15/21] Done. --- bin/tictactoe | 64 ++++++++--------- lib/game.rb | 71 ++++++++++++------ lib/players/computer.rb | 156 ++++++++++++++++++++++++++-------------- 3 files changed, 185 insertions(+), 106 deletions(-) diff --git a/bin/tictactoe b/bin/tictactoe index f096d60f977..b0f09999e65 100755 --- a/bin/tictactoe +++ b/bin/tictactoe @@ -1,50 +1,48 @@ #!/usr/bin/env ruby -require "pry" require_relative '../config/environment' -input_d = nil -def universal_welcome - puts "What kind of game would you like to play?" - puts "1. 0 Player" - puts "2. 1 Player" - puts "3. 2 Player" - input_a = gets.strip - if input_a == "2" || input_a == "3" +counter = 0 +def game_chooser(input) + input_b = " " + if (input == "2") || (input == "3") puts "Would you like to be X (Player 1), or O (Player 2)?" puts "Enter your selection(X or O):" input_b = gets.strip - end - if (input_a == "1") + end + if (input == "1") Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play - elsif (input_a == "2") && (input_b == "X") - binding.pry + elsif (input == "2") && (input_b== "X") Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play - elsif (input_a == "2") && (input_b == "O") + elsif (input == "2") && (input_b == "O") Game.new(player_1 = Players::Computer.new, player_2 = Players::Human.new("O"), board = Board.new).play - elsif (input_a == "3") && (input_b == "X") + elsif (input == "3") && (input_b == "X") Game.new(player_1 = Players::Human.new, player_2 = Players::Human.new, board = Board.new).play - elsif (input_a == "2") && (input_b == "O") + elsif (input == "2") && (input_b == "O") Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play end end - -if input_d != nil + + +puts "Hello! Welcome to Tic Tac Toe." +puts "Please enter your name:" +input_d = gets.strip + +puts "Hi, #{input_d}, what kind of game would you like to play?" +puts "1. 0 Player" +puts "2. 1 Player" +puts "3. 2 Player" +input_a = gets.strip +counter += 1 +game_chooser(input_a) + +if counter > 0 puts "Would you like to play again?" - puts "1. Yes" - puts "2. No" + puts "Yes" + puts "No" input_c = gets.strip - if input_c == "Yes" || input_c == "1" - self.universal_welcome - elsif input_c == "No" || input_c == "2" - puts "Thanks for playing!" - end -end - -if input_d == nil - puts "Hello! Welcome to Tic Tac Toe." - puts "Please enter your name:" - input_d = gets.strip - if input_d != nil - universal_welcome + if input_c == "Yes" + game_chooser(input_a) + elsif input_c == "No" + puts "Thanks for playing!" end end \ No newline at end of file diff --git a/lib/game.rb b/lib/game.rb index b6a81d79e88..75ee6ea6517 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -1,5 +1,4 @@ class Game - attr_accessor :board, :player_1, :player_2, :cells WIN_COMBINATIONS = [[0, 1, 2], [3, 4, 5], [6, 7, 8], @@ -16,29 +15,28 @@ def board end def current_player - player_one_array = [] - player_two_array = [] - x = player_1.token - y = player_2.token + #arr_1 = board.cells.select{|x| x.match(/X/)} + #arr_2 = board.cells.select{|x| x.match(/O/)} + arr_1 = [] + arr_2 = [] board.cells.each do |item| - if item == x - player_one_array << x - elsif item == y - player_two_array << y + if item == "X" + arr_1 << item + elsif item == "O" + arr_2 << item end end - if player_one_array.length > player_two_array.length - player_2 - elsif player_two_array.length > player_one_array.length - player_1 - elsif player_one_array.length == player_two_array.length - player_1 + if arr_1.length > arr_2.length + self.player_2 + elsif arr_1.length < arr_2.length + self.player_1 + elsif arr_1.length == arr_2.length + self.player_1 end end def won? y = [] - #binding.pry WIN_COMBINATIONS.each do |combo| if (board.cells[combo[0]] == "X" && board.cells[combo[1]] == "X" && board.cells[combo[2]] == "X") y << combo @@ -74,21 +72,54 @@ def winner def turn a = current_player.move(board) - if board.valid_move?(a) + if board.valid_move?(a) board.update(a, current_player) else self.turn end end + #def play + #while !over? + #turn + #end + #if won? + #puts "Congratulations #{self.winner}!" + #elsif draw? + #puts "Cat's Game!" + #end + #end +#end + def play while !self.over? - turn + self.turn end if self.won? puts "Congratulations #{self.winner}!" - elsif self.draw? + elsif self.draw? puts "Cat's Game!" + end + end + + def game_chooser(input) + input_b = " " + if (input == "2") || (input == "3") + puts "Would you like to be X (Player 1), or O (Player 2)?" + puts "Enter your selection(X or O):" + input_b = gets.strip + end + + if (input == "1") + Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play + elsif (input == "2") && (input_b== "X") + Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play + elsif (input == "2") && (input_b == "O") + Game.new(player_1 = Players::Computer.new, player_2 = Players::Human.new("O"), board = Board.new).play + elsif (input == "3") && (input_b == "X") + Game.new(player_1 = Players::Human.new, player_2 = Players::Human.new, board = Board.new).play + elsif (input == "2") && (input_b == "O") + Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play end end -end +end \ No newline at end of file diff --git a/lib/players/computer.rb b/lib/players/computer.rb index c841cd6f57e..f2808f1ae7b 100644 --- a/lib/players/computer.rb +++ b/lib/players/computer.rb @@ -1,62 +1,90 @@ module Players class Computer < Player def move(board) - @current_board = [] - @last_board = [] - x = 0 + binding.pry + + + + - board.cells.each do |index| - @current_board << "#{index}#{x}" - x += 1 - end - difference = (@current_board - @last_board)[0] - xxxy = @current_board.index(difference) - their_last_move = xxxy.to_i + 1 if !board.taken?(5) - @last_board = board.cells "5" - else - @last_board = board.cells + elsif board.taken?(5) a = [2, 4, 6, 8].sample - a - end - - if their_last_move == 1 - if !board.taken?(2) - @last_board = board.cells - "2" - elsif !board.taken?(4) - @last_board = board.cells - "4" - end + "#{a}" + elsif + end + + if + + end + end +end + #elsif !board.taken?(2) + #"2" + #elsif !board.taken?(4) + #"4" + #elsif !board.taken?(1) + #"1" + #elsif !board.taken?(3) + #"3" + #elsif !board.taken?(6) + #"6" + #elsif !board.taken?(7) + #"7" + #elsif !board.taken?(9) + #"9" + #elsif !board.taken?(8) + #"8" + #end + #end + #end +#end + +################################################################################# + + #if !board.taken?(5) + #"5" + #elsif board.taken?(5) + #a = [2, 4, 6, 8].sample + #"#{a}" + #elsif !board.taken?(2) + #"2" + #elsif !board.taken?(4) + #"4" + #elsif !board.taken?(1) + #"1" + #elsif !board.taken?(3) + #"3" + #elsif !board.taken?(6) + #"6" + #elsif !board.taken?(7) + #"7" + #elsif !board.taken?(9) + #"9" + #elsif !board.taken?(8) + #"8" + +########################################################################### - elsif their_last_move == 2 - if !board.taken?(1) - @last_board = board.cells - "1" - elsif !board.taken?(3) - @last_board = board.cells - "3" - end - elsif their_last_move == 3 - if !board.taken?(2) - @last_board = board.cells - "2" - elsif !board.taken?(6) - @last_board = board.cells - "6" - end + #elsif !board.taken?(9) + #@last_board = board.cells + #"9" + #end + #end - elsif their_last_move == 4 - if !board.taken?(1) - @last_board = board.cells - "1" - elsif !board.taken?(7) - @last_board = board.cells - "7" - end + #elsif their_last_move == 4 + #if !board.taken?(1) + #last_board = board.cells + #"1" + #elsif !board.taken?(7) + #last_board = board.cells + #"7" + #end + + #end #elsif their_last_move == 6 #if !board.taken?(3) @@ -92,8 +120,30 @@ def move(board) #elsif !board.taken?(8) #@last_board = board.cells #"8" - end - end - end - end -end \ No newline at end of file + #end + #end + #end + #end +#end + +#################################################### + + #board.cells.each do |item| + #current_board << "#{item}#{x}" + #x += 1 + #end + + #difference = (current_board - last_board)[0] + #xxxy = current_board.index(difference) + #their_last_move = xxxy.to_i + 1 + + #binding.pry + #end + #end +#end + +################################################# + + #current_board = [] + #last_board = [] + #x = 0 \ No newline at end of file From 017bb36a86bf485eb3ea812e0bbc9311fb791381 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Tue, 22 Oct 2019 15:19:34 +0000 Subject: [PATCH 16/21] Done. --- lib/players/computer.rb | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/lib/players/computer.rb b/lib/players/computer.rb index f2808f1ae7b..28c9c84538f 100644 --- a/lib/players/computer.rb +++ b/lib/players/computer.rb @@ -3,21 +3,35 @@ class Computer < Player def move(board) binding.pry + index_array = [1, 2, 3, 4, 5, 6, 7, 8, 9] + options_array = [] - - - + index_array.each do |item| + if !board.taken?(item) + options_array << item + end + end if !board.taken?(5) + options_array.delete(5) "5" - elsif board.taken?(5) - a = [2, 4, 6, 8].sample - "#{a}" - elsif + elsif !board.taken?(2) + options_array.delete(2) + "2" + elsif !board.taken?(4) + options_array.delete(4) + "2" + elsif !board.taken?(6) + options_array.delete(6) + "2" + elsif !board.taken?(8) + options_array.delete(8) + "2" end + + a = options_array.sample - if - + "#{a}" end end end From 1c1c30b93626ea964ffcaf3964500bb92c808b35 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Tue, 22 Oct 2019 17:01:43 +0000 Subject: [PATCH 17/21] Done. --- bin/tictactoe | 48 +++++++++++++++++++---------------------- lib/game.rb | 27 +++++++++++++++++------ lib/players/computer.rb | 21 +++++++++--------- 3 files changed, 53 insertions(+), 43 deletions(-) diff --git a/bin/tictactoe b/bin/tictactoe index b0f09999e65..d67ec5a720c 100755 --- a/bin/tictactoe +++ b/bin/tictactoe @@ -1,23 +1,16 @@ #!/usr/bin/env ruby require_relative '../config/environment' -counter = 0 -def game_chooser(input) - input_b = " " - if (input == "2") || (input == "3") - puts "Would you like to be X (Player 1), or O (Player 2)?" - puts "Enter your selection(X or O):" - input_b = gets.strip - end - if (input == "1") - Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play - elsif (input == "2") && (input_b== "X") +def game_chooser(input_a, input_b = 0) + if (input_a == "1") && (input_b == 0) + Game.new(player_1 = Players::Computer.new("X"), player_2 = Players::Computer.new("O"), board = Board.new).play + elsif (input_a == "2") && (input_b== "X") Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play - elsif (input == "2") && (input_b == "O") + elsif (input_a == "2") && (input_b == "O") Game.new(player_1 = Players::Computer.new, player_2 = Players::Human.new("O"), board = Board.new).play - elsif (input == "3") && (input_b == "X") + elsif (input_a == "3") && (input_b == "X") Game.new(player_1 = Players::Human.new, player_2 = Players::Human.new, board = Board.new).play - elsif (input == "2") && (input_b == "O") + elsif (input_a == "2") && (input_b == "O") Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play end end @@ -32,17 +25,20 @@ puts "1. 0 Player" puts "2. 1 Player" puts "3. 2 Player" input_a = gets.strip -counter += 1 -game_chooser(input_a) -if counter > 0 - puts "Would you like to play again?" - puts "Yes" - puts "No" - input_c = gets.strip - if input_c == "Yes" - game_chooser(input_a) - elsif input_c == "No" - puts "Thanks for playing!" - end +if input_a == 1 + game_chooser(input_a) +elsif (input_a == 2) || (input_a == 3) + puts "Would you like to be X or O?" + input_b = gets.strip + game_chooser(input_a, input_b) +end + + +puts "Would you like to play again?" +input_c = gets.strip +if input_c == "Yes" + game_chooser(input_a, input_b) +elsif input_c == "No" + puts "Thanks for playing!" end \ No newline at end of file diff --git a/lib/game.rb b/lib/game.rb index 75ee6ea6517..a8d2de948d6 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -70,11 +70,26 @@ def winner end end - def turn + #def turn + #a = current_player.move(board) + #if board.valid_move?(a) + #board.update(input, current_player) + #elsif !board.valid_move?(a) + #until board.valid_move?(input) + #puts "Enter input again:" + #input = gets.strip + #if board.valid_move?(input) + #board.update(input, current_player) + #end + #end + #end + #end + + def turn a = current_player.move(board) if board.valid_move?(a) board.update(a, current_player) - else + else self.turn end end @@ -92,12 +107,12 @@ def turn #end def play - while !self.over? - self.turn + while !over? + turn end - if self.won? + if won? puts "Congratulations #{self.winner}!" - elsif self.draw? + elsif draw? puts "Cat's Game!" end end diff --git a/lib/players/computer.rb b/lib/players/computer.rb index 28c9c84538f..3ba053067a3 100644 --- a/lib/players/computer.rb +++ b/lib/players/computer.rb @@ -1,7 +1,6 @@ module Players class Computer < Player def move(board) - binding.pry index_array = [1, 2, 3, 4, 5, 6, 7, 8, 9] options_array = [] @@ -12,25 +11,25 @@ def move(board) end end - if !board.taken?(5) + if !board.taken?("5") options_array.delete(5) "5" - elsif !board.taken?(2) + elsif !board.taken?("2") options_array.delete(2) "2" - elsif !board.taken?(4) + elsif !board.taken?("4") options_array.delete(4) - "2" - elsif !board.taken?(6) + "4" + elsif !board.taken?("6") options_array.delete(6) - "2" - elsif !board.taken?(8) + "6" + elsif !board.taken?("8") options_array.delete(8) - "2" + "8" end - a = options_array.sample - + a = options_array.sample + options_array.delete(a) "#{a}" end end From ed3eb533a01a180292f6494d9b25cac55746b680 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Tue, 22 Oct 2019 18:31:47 +0000 Subject: [PATCH 18/21] Done. --- bin/tictactoe | 15 +++----- lib/game.rb | 102 +++++++++++++++++++++++++++++++------------------- 2 files changed, 69 insertions(+), 48 deletions(-) diff --git a/bin/tictactoe b/bin/tictactoe index d67ec5a720c..dbf564a5d99 100755 --- a/bin/tictactoe +++ b/bin/tictactoe @@ -1,8 +1,8 @@ #!/usr/bin/env ruby require_relative '../config/environment' -def game_chooser(input_a, input_b = 0) - if (input_a == "1") && (input_b == 0) +def game_chooser(input_a, input_b) + if (input_a == "1") && (input_b != nil) Game.new(player_1 = Players::Computer.new("X"), player_2 = Players::Computer.new("O"), board = Board.new).play elsif (input_a == "2") && (input_b== "X") Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play @@ -25,14 +25,9 @@ puts "1. 0 Player" puts "2. 1 Player" puts "3. 2 Player" input_a = gets.strip - -if input_a == 1 - game_chooser(input_a) -elsif (input_a == 2) || (input_a == 3) - puts "Would you like to be X or O?" - input_b = gets.strip - game_chooser(input_a, input_b) -end +puts "Would you like to be X or O?" +input_b = gets.strip +game_chooser(input_a, input_b) puts "Would you like to play again?" diff --git a/lib/game.rb b/lib/game.rb index a8d2de948d6..cb8a81e1ca8 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -70,6 +70,29 @@ def winner end end + def turn + a = current_player.move(board) + if board.valid_move?(a) + board.update(a, current_player) + else + self.turn + end + end + + def play + while !over? + turn + end + if won? + puts "Congratulations #{self.winner}!" + elsif draw? + puts "Cat's Game!" + end + end +end + + + #def turn #a = current_player.move(board) #if board.valid_move?(a) @@ -85,14 +108,17 @@ def winner #end #end - def turn - a = current_player.move(board) - if board.valid_move?(a) - board.update(a, current_player) - else - self.turn - end - end + #def turn + #a = current_player.move(board) + #if board.valid_move?(a) + #board.update(a, current_player) +#<<<<<<< HEAD + #else + #self.turn + + #else + #turn + #def play #while !over? @@ -106,35 +132,35 @@ def turn #end #end - def play - while !over? - turn - end - if won? - puts "Congratulations #{self.winner}!" - elsif draw? - puts "Cat's Game!" - end - end + #def play + #while !over? + #turn + #end + #if won? + #puts "Congratulations #{self.winner}!" + #elsif draw? + #puts "Cat's Game!" + #end + #end - def game_chooser(input) - input_b = " " - if (input == "2") || (input == "3") - puts "Would you like to be X (Player 1), or O (Player 2)?" - puts "Enter your selection(X or O):" - input_b = gets.strip - end + #def game_chooser(input) + #input_b = " " + #if (input == "2") || (input == "3") + #puts "Would you like to be X (Player 1), or O (Player 2)?" + #puts "Enter your selection(X or O):" + #input_b = gets.strip + #end - if (input == "1") - Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play - elsif (input == "2") && (input_b== "X") - Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play - elsif (input == "2") && (input_b == "O") - Game.new(player_1 = Players::Computer.new, player_2 = Players::Human.new("O"), board = Board.new).play - elsif (input == "3") && (input_b == "X") - Game.new(player_1 = Players::Human.new, player_2 = Players::Human.new, board = Board.new).play - elsif (input == "2") && (input_b == "O") - Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play - end - end -end \ No newline at end of file + #if (input == "1") + #Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play + #elsif (input == "2") && (input_b== "X") + #Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play + #elsif (input == "2") && (input_b == "O") + #Game.new(player_1 = Players::Computer.new, player_2 = Players::Human.new("O"), board = Board.new).play + #elsif (input == "3") && (input_b == "X") + #Game.new(player_1 = Players::Human.new, player_2 = Players::Human.new, board = Board.new).play + #elsif (input == "2") && (input_b == "O") + #Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play + #end + #end +#end \ No newline at end of file From 4e8d2e7292ca6d28eb52999ca83c0e996b235d35 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Tue, 22 Oct 2019 20:35:59 +0000 Subject: [PATCH 19/21] Done. --- bin/tictactoe | 4 ++-- lib/board.rb | 13 ++---------- lib/game.rb | 1 + lib/players/computer.rb | 46 ++++++++++++++++++++++++----------------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/bin/tictactoe b/bin/tictactoe index dbf564a5d99..c878cff16fd 100755 --- a/bin/tictactoe +++ b/bin/tictactoe @@ -3,7 +3,7 @@ require_relative '../config/environment' def game_chooser(input_a, input_b) if (input_a == "1") && (input_b != nil) - Game.new(player_1 = Players::Computer.new("X"), player_2 = Players::Computer.new("O"), board = Board.new).play + Game.new(player_1 = Players::Computer.new, player_2 = Players::Computer.new("O"), board = Board.new).play elsif (input_a == "2") && (input_b== "X") Game.new(player_1 = Players::Human.new, player_2 = Players::Computer.new("O"), board = Board.new).play elsif (input_a == "2") && (input_b == "O") @@ -26,7 +26,7 @@ puts "2. 1 Player" puts "3. 2 Player" input_a = gets.strip puts "Would you like to be X or O?" -input_b = gets.strip +input_b = gets.strip.upcase game_chooser(input_a, input_b) diff --git a/lib/board.rb b/lib/board.rb index 036815d4f85..61ea6c63677 100644 --- a/lib/board.rb +++ b/lib/board.rb @@ -40,20 +40,11 @@ def turn_count end def taken?(x) - y = x.to_i - if @cells[y - 1] == " " - false - else - true - end + !@cells[x.to_i- 1] == " " || @cells[x.to_i - 1] == "" end def valid_move?(x) - if x.to_i.between?(1, 9) && taken?(x) == false - true - else - false - end + x.to_i.between?(1, 9) && !taken?(x) end def update(x, player) diff --git a/lib/game.rb b/lib/game.rb index cb8a81e1ca8..e945175fbf6 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -74,6 +74,7 @@ def turn a = current_player.move(board) if board.valid_move?(a) board.update(a, current_player) + board.display else self.turn end diff --git a/lib/players/computer.rb b/lib/players/computer.rb index 3ba053067a3..fab8bbda183 100644 --- a/lib/players/computer.rb +++ b/lib/players/computer.rb @@ -1,39 +1,47 @@ module Players class Computer < Player def move(board) - - index_array = [1, 2, 3, 4, 5, 6, 7, 8, 9] - options_array = [] - - index_array.each do |item| - if !board.taken?(item) - options_array << item - end - end - + #index_array = [1, 2, 3, 4, 5, 6, 7, 8, 9] + #options_array = [] + #index_array.each do |item| + #if !board.taken?(item) + #options_array << item + #end + #end if !board.taken?("5") - options_array.delete(5) "5" elsif !board.taken?("2") - options_array.delete(2) "2" elsif !board.taken?("4") - options_array.delete(4) "4" elsif !board.taken?("6") - options_array.delete(6) "6" elsif !board.taken?("8") - options_array.delete(8) "8" + elsif !board.taken?("1") + "1" + elsif !board.taken?("3") + "3" + elsif !board.taken?("7") + "7" + elsif !board.taken?("9") + "9" end - - a = options_array.sample - options_array.delete(a) - "#{a}" end end end + + + + + + #a = options_array.sample + #options_array.delete(a) + #"#{a}" + #end + #end + #end + #end #elsif !board.taken?(2) #"2" #elsif !board.taken?(4) From 50e62d33ad7303879abfb2b50151d4c53b9a3014 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Wed, 23 Oct 2019 14:02:46 +0000 Subject: [PATCH 20/21] Done. --- lib/game.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/game.rb b/lib/game.rb index e945175fbf6..661092e708d 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -15,8 +15,6 @@ def board end def current_player - #arr_1 = board.cells.select{|x| x.match(/X/)} - #arr_2 = board.cells.select{|x| x.match(/O/)} arr_1 = [] arr_2 = [] board.cells.each do |item| @@ -72,13 +70,19 @@ def winner def turn a = current_player.move(board) - if board.valid_move?(a) + if board.valid_move(a) board.update(a, current_player) board.display - else - self.turn + end + while !board.valid_move?(a) + puts "Please enter a valid position:" + b = gets.strip + if board.valid_move?(b) + board.update(b, current_player) + board.display end end + end def play while !over? From a85baf21a18c9a11f237909a1eaef13ed2364936 Mon Sep 17 00:00:00 2001 From: Olivia Kesler Date: Wed, 23 Oct 2019 15:02:55 +0000 Subject: [PATCH 21/21] Done. --- lib/board.rb | 2 +- lib/game.rb | 14 +++++--------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/board.rb b/lib/board.rb index 61ea6c63677..e55c3ebe784 100644 --- a/lib/board.rb +++ b/lib/board.rb @@ -40,7 +40,7 @@ def turn_count end def taken?(x) - !@cells[x.to_i- 1] == " " || @cells[x.to_i - 1] == "" + @cells[x.to_i- 1] == "X" || @cells[x.to_i - 1] == "O" end def valid_move?(x) diff --git a/lib/game.rb b/lib/game.rb index 661092e708d..b45271d86c3 100644 --- a/lib/game.rb +++ b/lib/game.rb @@ -70,18 +70,14 @@ def winner def turn a = current_player.move(board) - if board.valid_move(a) + b = " " + while !board.valid_move?(a) + a = current_player.move(board) + end + if board.valid_move?(a) board.update(a, current_player) board.display end - while !board.valid_move?(a) - puts "Please enter a valid position:" - b = gets.strip - if board.valid_move?(b) - board.update(b, current_player) - board.display - end - end end def play