bug fixes on tic tac toe, inheritance modeling, mastermind
This commit is contained in:
13
common/BoardBase.rb
Normal file
13
common/BoardBase.rb
Normal file
@@ -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
|
||||
27
common/GameBase.rb
Normal file
27
common/GameBase.rb
Normal file
@@ -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
|
||||
@@ -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
|
||||
11
mastermind/Board.rb
Normal file
11
mastermind/Board.rb
Normal file
@@ -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
|
||||
0
mastermind/CodeSet.rb
Normal file
0
mastermind/CodeSet.rb
Normal file
16
mastermind/Game.rb
Normal file
16
mastermind/Game.rb
Normal file
@@ -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
|
||||
0
mastermind/KeySet.rb
Normal file
0
mastermind/KeySet.rb
Normal file
0
mastermind/main.rb
Normal file
0
mastermind/main.rb
Normal file
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
require_relative "Board.rb"
|
||||
require_relative "Player.rb"
|
||||
require_relative "Game.rb"
|
||||
|
||||
game = Game.new
|
||||
|
||||
Reference in New Issue
Block a user