bug fixes on tic tac toe, inheritance modeling, mastermind

This commit is contained in:
Mikayla Dobson
2023-05-29 21:36:27 -05:00
parent d41ec1b5ee
commit fdb5b211b3
11 changed files with 99 additions and 39 deletions

13
common/BoardBase.rb Normal file
View 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
View 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

View File

@@ -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
View 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
View File

16
mastermind/Game.rb Normal file
View 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
View File

0
mastermind/main.rb Normal file
View File

View 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

View File

@@ -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

View File

@@ -1,5 +1,3 @@
require_relative "Board.rb"
require_relative "Player.rb"
require_relative "Game.rb"
game = Game.new