diff --git a/common/BoardBase.rb b/common/BoardBase.rb new file mode 100644 index 0000000..f9e59df --- /dev/null +++ b/common/BoardBase.rb @@ -0,0 +1,13 @@ +class BoardBase + attr_accessor :turn + + def initialize(turn = 1) + @turn = turn + end + + def to_s + print " + Current turn: #{@turn}\n + " + end +end diff --git a/common/GameBase.rb b/common/GameBase.rb new file mode 100644 index 0000000..7a43393 --- /dev/null +++ b/common/GameBase.rb @@ -0,0 +1,27 @@ +class GameBase + def initialize + puts "Welcome to Tic Tac Toe!" + puts "Player 1, what is your name?" + @player_one_name = gets.chomp + + puts "Player 2, what is your name?" + @player_two_name = gets.chomp + + @playerOne = Player.new(@player_one_name) + @playerTwo = Player.new(@player_two_name) + @statusMessage = "" + @board = Board.new() + @winner = nil + @turn = 1 + end + + def to_s + print " + Player one: #{@playerOne.name}\n + Player two: #{@playerTwo.name}\n + Current turn: #{@turn}\n + #{@statusMessage} + #{@board.to_s} + " + end +end diff --git a/tic_tac_toe/Player.rb b/common/Player.rb similarity index 81% rename from tic_tac_toe/Player.rb rename to common/Player.rb index 4154ef3..586f1e3 100644 --- a/tic_tac_toe/Player.rb +++ b/common/Player.rb @@ -2,7 +2,7 @@ class Player attr_accessor :turn_active attr_reader :name, :symbol, :turn_active - def initialize(name, symbol) + def initialize(name, symbol = nil) @name = name @symbol = symbol @turn_active = false diff --git a/mastermind/Board.rb b/mastermind/Board.rb new file mode 100644 index 0000000..a1daa76 --- /dev/null +++ b/mastermind/Board.rb @@ -0,0 +1,11 @@ +require_relative "../common/BoardBase.rb" + +class Board < BoardBase + def initialize(turn = 1) + super(turn) + end + + def to_s + print "wew" + end +end diff --git a/mastermind/CodeSet.rb b/mastermind/CodeSet.rb new file mode 100644 index 0000000..e69de29 diff --git a/mastermind/Game.rb b/mastermind/Game.rb new file mode 100644 index 0000000..88cc09f --- /dev/null +++ b/mastermind/Game.rb @@ -0,0 +1,16 @@ +require_relative "../common/GameBase.rb" + +class Game < GameBase + def initialize + puts "Welcome to Mastermind!" + puts "Player 1, what is your name?" + player_one_name = gets.chomp + + puts "Player 2, what is your name?" + player_two_name = gets.chomp + + @playerOne = Player.new(player_one_name) + @playerTwo = Player.new(player_two_name) + @statusMessage = "" + end +end diff --git a/mastermind/KeySet.rb b/mastermind/KeySet.rb new file mode 100644 index 0000000..e69de29 diff --git a/mastermind/main.rb b/mastermind/main.rb new file mode 100644 index 0000000..e69de29 diff --git a/tic_tac_toe/Board.rb b/tic_tac_toe/Board.rb index 19004f5..18853fe 100644 --- a/tic_tac_toe/Board.rb +++ b/tic_tac_toe/Board.rb @@ -1,8 +1,10 @@ -class Board +require_relative "../common/BoardBase.rb" + +class Board < BoardBase attr_accessor :turn, :squares, :update_square def initialize(turn = 1) - @turn = turn + super(turn) @squares = [ [" ", " ", " "], [" ", " ", " "], @@ -43,11 +45,11 @@ class Board # check whether all squares in a row match for row in @squares if row.all? { |square| square == "X" } - if !winner + if not winner winner = "X" end elsif row.all? { |square| square == "O" } - if !winner + if not winner winner = "O" end end @@ -55,12 +57,10 @@ class Board # check whether all columns match if not winner - for column in 0..2 - if @squares[column].all? { |square| square == "X" } - winner = "X" - elsif @squares[column].all? { |square| square == "O" } - winner = "O" - end + if (@squares[0][0] == "X" and @squares[1][0] == "X" and @squares[2][0] == "X") + winner = "X" + elsif (@squares[0][0] == "O" and @squares[1][0] == "O" and @squares[2][0] == "O") + winner = "O" end end diff --git a/tic_tac_toe/Game.rb b/tic_tac_toe/Game.rb index 8293393..5c4c741 100644 --- a/tic_tac_toe/Game.rb +++ b/tic_tac_toe/Game.rb @@ -1,28 +1,12 @@ -class Game +require_relative "../common/GameBase.rb" +require_relative "../common/Player.rb" +require_relative "Board.rb" + +class Game < GameBase def initialize - puts "Welcome to Tic Tac Toe!" - puts "Player 1, what is your name?" - player_one_name = gets - - puts "Player 2, what is your name?" - player_two_name = gets - - @playerOne = Player.new(player_one_name, "X") - @playerTwo = Player.new(player_two_name, "O") - @statusMessage = "" - @board = Board.new() - @winner = nil - @turn = 1 - end - - def to_s - print " - Player one: #{@playerOne.name}\n - Player two: #{@playerTwo.name}\n - Current turn: #{@turn}\n - #{@statusMessage} - #{@board.to_s} - " + super + @playerOne = Player.new(@player_one_name, "X") + @playerTwo = Player.new(@player_two_name, "O") end def play @@ -30,10 +14,17 @@ class Game self.turn() end - @statusMessage = "#{@statusMessage + "\nPress 'x' to exit"}" + @statusMessage = "#{@statusMessage + "\nPress 'x' to exit or 'a' to play again."}" print self.to_s - until gets.chomp == "x" + if gets.chomp == "a" + @board = Board.new() + @winner = nil + @statusMessage = "" + @turn = 1 + self.play() + elsif gets.chomp != "x" + @statusMessage = "Please provide a valid input" print self.to_s end end @@ -58,6 +49,10 @@ class Game self.turn() end + if @statusMessage == "Invalid input. This square is already taken." + @statusMessage = "" + end + winner_this_turn = @board.check_for_winner if winner_this_turn diff --git a/tic_tac_toe/main.rb b/tic_tac_toe/main.rb index bc82ac2..c8956df 100644 --- a/tic_tac_toe/main.rb +++ b/tic_tac_toe/main.rb @@ -1,5 +1,3 @@ -require_relative "Board.rb" -require_relative "Player.rb" require_relative "Game.rb" game = Game.new