Here is an interaction in a tic-tac-toe game, with user input in bold: >> gm = G
ID: 3926305 • Letter: H
Question
Here is an interaction in a tic-tac-toe game, with user input in bold: >> gm = Game.new('andy', 'mike') => # >> gm.play_game('mike') Mike, enter your next O move (1-9): 1 O-- --- --- Andy, enter your next X move (1-9): 3 O-X --- --- Mike, enter your next O move (1-9): 5 O-X -O- --- Andy, enter your next X move (1-9): 3 Bad move dude! You go again. O-X -O- --- Andy, enter your next X move (1-9): 6 O-X - OX --- Mike, enter your next O move (1-9): 9 O-X - OX --O Mike, you won! => nil >> gm.play_game('karen') I don't know that player. Please try again. => nil >> gm.play_game('andy') Andy, enter your next O move (1-9): 5 --- -O- --- Implement this output using Ruby
Explanation / Answer
Answer:
class BoardTic
def initializeBoard
@Board1 = Array.new(3) { Array.new(3, " ") }
end
def printInstructions
puts "1 | 2 | 3",
"---------",
"4 | 5 | 6",
"---------",
"7 | 8 | 9"
print " "
end
def printBoard1
(0..2).each do |rows|
print " "
(0..2).each do |cols|
print @Board1[rows][cols]
print " | " unless cols == 2
end
print " "
print " --------- " unless rows == 2
end
print " "
end
def isTie
@Board1.join.split('').include?(" ")
end
def findWinnerTac
(0..2).each do |i|
if @Board1[i][0] == @Board1[i][1] && @Board1[i][1] == @Board1[i][2]
return @Board1[i][0] unless @Board1[i][0] == " "
elsif @Board1[0][i] == @Board1[1][i] && @Board1[1][i] == @Board1[2][i]
return @Board1[0][i] unless @Board1[0][i] == " "
end
end
if ( @Board1[0][0] == @Board1[1][1] && @Board1[1][1] == @Board1[2][2] ) ||
( @Board1[0][2] == @Board1[1][1] && @Board1[1][1] == @Board1[2][0] )
return @Board1[1][1] unless @Board1[1][1] == " "
end
return "C" unless isTie
return false
end
def is_empty(rows,cols)
@Board1[rows][cols] === " "
end
def inside_Board1(rows,cols)
(0..2) === rows and (0..2) === cols
end
def valid_moves(rows,cols)
is_empty(rows,cols) and inside_Board1(rows,cols)
end
def dropPiece(piece, rows, cols)
@Board1[rows][cols] = piece if valid_moves(rows,cols)
end
end
def clear_screen
puts " " * 100
end
def prompt_moves(active_players)
puts " #{active_players}'s turn. Choose a box!",
" **~V~**"
print " "
moveVal= gets.chomp.to_i - 1
rows = moveVal/ 3
cols = moveVal% 3
return rows,cols
end
def alert_winner(winnerS,Board1)
puts " --**~^^^^^^^~**--"
if winnerS == "C"
puts " C A T S G A M E"
else
puts " #{winnerS} ' S W I N"
end
puts " ----**~vVv~**----"
puts " "
Board1.printBoard1
puts " **~V~**"
end
def ticTacToe(Board1Class)
Board1 = Board1Class.new
active_players = "X"
clear_screen
Board1.printInstructions
while not Board1.findWinnerTac
rows,cols = prompt_moves(active_players)
clear_screen
if Board1.dropPiece(active_players, rows, cols)
if active_players == "X"
active_players = "O"
else
active_players = "X"
end
else
puts " INVALID MOVE, PLEASE SELECT AGAIN "
end
Board1.printBoard1
end
winnerS = Board1.findWinnerTac
clear_screen
alert_winner(winnerS,Board1)
end
while true
clear_screen
puts "DO YOU WANT TO PLAY AGAIN? (y/n)"
if ["no","n"].include? (gets.chomp.downcase)
puts "GOODBYE"
break
end
ticTacToe(Board1)
end
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.