这是用于从特定位置的国际象棋游戏中的每个棋子生成移动的代码。
class Characters
def initialize(behaviours)
@position=behaviours.fetch(:assigning_position)
@right=behaviours.fetch(:moving_right)
end
def perform_position
@position.kmoves
end
def perform_right
@right.rightmove
end
end
这是为特定棋子指定位置的方法。
class Position
def kmoves
print "enter x value"
xpos=STDIN.gets.chomp
print "enter y value"
ypos=STDIN.gets.chomp
print "#{xpos}, #{ypos}\n"
end
end
这是将棋子向右移动一个位置的方法
class Right_move < Position
def rightmove
puts "compute right moves"
xpos+=1
end
end
king = Characters.new( assigning_position:Position.new,moving_right:Right_move.new)
king.perform_position
king.perform_right
我收到错误:
<{1}} xpos'中的#(NameError)
答案 0 :(得分:0)
您似乎已将Characters
类中的attr_accessors包含在Position
类中,而不是class Position
attr_accessor :xpos, :ypos
def kmoves
print "enter x value"
xpos = STDIN.gets.chomp
print "enter y value"
ypos = STDIN.gets.chomp
print "#{xpos}, #{ypos}\n"
end
end
类。您放置结肠时也会出现拼写错误。试试这个:
Characters
此外,您可能希望将Character
课程重命名为player
,因为它似乎代表个别角色而非其集合。