【发布时间】:2013-11-13 01:03:53
【问题描述】:
我正在编写一个井字游戏程序。该程序是热座型游戏(用户对用户)。我编写了程序的一部分,它在板上的任何地方打印一个 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
【问题讨论】:
-
您可能希望将
Board设为一个自己的对象,而不仅仅是一个数组,然后让它在内部跟踪状态,同时将修饰符操作呈现为公共方法。 -
另一个技巧是让 board 是一个数组数组,这样你就可以像这个 board[x][y] 一样检查它并取出一百万个 if 语句
-
另外,如果您只是制作游戏(没有 webapp 端),我建议您使用 hosu(它是由 gosu 构建的)。在这里找到一个例子:github.com/tomprats/blast
标签: ruby-on-rails ruby ruby-on-rails-3 class tic-tac-toe