当前位置 : 首页 » 互动问答 » 正文

棋盘上可能的动作,使用另一个类中的实例。

分类 : 互动问答 | 发布时间 : 2017-09-30 02:31:47 | 评论 : 1 | 浏览 : 25 | 喜欢 : 0

我正在制作一款象棋游戏。我想保留所有与每类作品类别内可能的移动有关的事情。为了做到这一点,我需要回顾@board [] []。在possible_moves方法中,代码的注释部分是我想要做的,除非它不起作用并且会引发错误。

 class Board
  attr_accessor:board,:选择
  def初始化
    @board = Array.new(8){Array.new(8,“”)}
    @选择=选择
  结束

  def set_board
    @board [0] [2] = Bishop.new([0,2],false)
  结束
结束

班主教
  attr_accessor:x_position,:y_position,:piece,:color,:moves
  def初始化(position,is_white)
    @x_position =位置[0]
    @y_position =职位[1]
    @piece = is_white? “♝”:“♗”
    @color = is_white? “白色”:“黑色”
    @moves = [[+ 1,-1],
              [+ 1,+ 1],
              [-1,+ 1],
              [-1,-1]]
  结束

def possible_moves
  move_list = Array.new
  @ moves.each do | moves |
    x = @x_position
    y = @y_position
    循环做
      x + =移动[0]
      y + =移动[1]
      如果x.between?(0,7)== false,则打破
      打破如果y.between?(0,7)== false
    #这是我想从委员会类重新引用@board的地方。
    #if @board [x] [y] .color .....
        move_list << [x,y]
      #结束
    结束
  结束
  p move_list
结束


结束

回答(1)

  • 1楼
  • 您可以将板传入Bishop构造函数:

     class Bishop
      attr_reader:board
      #等等
      def初始化(position,is_white,board)
        @board = board.board#或者只是@board = board,稍后可以获取矩阵
        #等等
      结束
    结束
    
    班级董事会
      #等等
      def set_board
        @board [0] [2] = Bishop.new([0,2],false,self)
      结束
    结束

相关阅读: