我正在写一个tic-tac-toe程序。该程序是热门型游戏(用户v用户)。我写了程序的一部分,在板上的任何地方打印x,但我需要帮助才能保持移动。现在它将x放在你想要它在板上的位置,但它不能保存下一步。
这是代码(我没有完成程序的其余部分):
class Game
def initialize
@board=Array.new
@board[1]="__|"
@board[2]="__"
@board[3]="|__"
@board[4]="\n__|"
@board[5]="__"
@board[6]="|__"
@board[7]="\n |"
@board[8]=" "
@board[9]="| "
@turn = "x"
end
def show_board
@board.each do |i|
print i
end
end
def set_turn #switches turns
if @turn == "x"
@turn == "o"
else @turn == "o"
@turn == "x"
end
end
def make_move
puts "Enter x coordinate"
x=gets.to_i
puts "Enter y coordinate"
y=gets.to_i
if y==1
if y==1
if x==1
@board[1]="_x|"
end
end
if y==2
if x==1
@board[2]="_x"
end
end
if y==3
if x==1
@board[3]="|x_"
end
end
if y==1
if x==2
@board[4]="\n_x|"
end
end
if y==2
if x==2
@board[5]="_x"
end
end
if y==3
if x==2
@board[6]="|x_"
end
end
if y==1
if x==3
@board[7]="\nx |"
end
end
if y==2
if x==3
@board[8]="x "
end
end
end
if y==3
if x==3
@board[9]="|x"
end
end
end
def check_win
end
end
class Square
def set_value
end
def value
end
def initialize
@value
end
end
g=Game.new
g.show_board
g.make_move
g.show_board
答案 0 :(得分:0)
抛开:所以这可能是一个很好的练习,可以开始自己的工作。编写您想要查看的行为的测试,观察它失败然后通过。这将有助于您制定解决方案。
无论如何,如果/现在开始和结束都不匹配。这可能会引起你的问题。如果y == 1两次,那么在make move中。
class Game
def initialize
@board=Array.new
@board[1]="__|"
@board[2]="__"
@board[3]="|__"
@board[4]="\n__|"
@board[5]="__"
@board[6]="|__"
@board[7]="\n |"
@board[8]=" "
@board[9]="| "
@turn = "x"
end
def show_board
@board.each do |i|
print i
end
end
def set_turn #switches turns
if @turn == "x"
@turn == "o"
else @turn == "o"
@turn == "x"
end
end
def make_move
puts "Enter x coordinate"
x=gets.to_i
puts "Enter y coordinate"
y=gets.to_i
# if y==1
if y==1
if x==1
@board[1]="_x|"
end
end
if y==2
if x==1
@board[2]="_x"
end
end
if y==3
if x==1
@board[3]="|x_"
end
end
if y==1
if x==2
@board[4]="\n_x|"
end
end
if y==2
if x==2
@board[5]="_x"
end
end
if y==3
if x==2
@board[6]="|x_"
end
end
if y==1
if x==3
@board[7]="\nx |"
end
end
if y==2
if x==3
@board[8]="x "
end
end
if y==3
if x==3
@board[9]="|x"
end
end
end
def check_win
end
end
class Square
def set_value
end
def value
end
def initialize
@value
end
end
修复并正常工作: - )
此外 - 这种结构可以更容易地看到那些if / end不匹配:
def make_move
puts "Enter x coordinate"
x=gets.to_i
puts "Enter y coordinate"
y=gets.to_i
@board[1]="_x|" if y==1 && x==1
@board[2]="_x" if y==2 && x==1
@board[3]="|x_" if y==3 && x==1
@board[4]="\n_x|" if y==1 && x==2
@board[5]="_x" if y==2 && x==2
@board[6]="|x_" if y==3 && x==2
@board[7]="\nx |" if y==1 && x==3
@board[8]="x " if y==2 && x==3
@board[9]="|x" if y==3 && x==3
end