class Scene_Riversi < Scene_MenuBase
  #● 敵の行動
  def cpu_put_stone
    @ai_puttable.clear 
    @cpu_ai.clear
    @empty_cells = get_empty_cells(@board)
    @ai_puttable = find_puttable_cell(cpu_color)
    
    get_cpu_ai = @ai_puttable[decide_put_cell]

    set_board_data(get_cpu_ai % BOARDWIDTH , get_cpu_ai / BOARDWIDTH , cpu_color) 
    @reversi_window.get_board_info(@board)

    @reversi_window.refresh
    wait(20)    
    reverse_stone(get_cpu_ai % BOARDWIDTH , get_cpu_ai / BOARDWIDTH , cpu_color)
    @turn_count += 1 #ターン数の更新
    @reversi_window.get_board_info(@board)
    @reversi_window.refresh
    wait(20)
    play_reversi
  end  
   
  #● 置くことが出きる位置の取得
  def find_puttable_cell(color , board = @board)
    array = []
    @empty_cells.each do |i|
      ix = i % BOARDWIDTH
      iy = i / BOARDWIDTH      
      array.push i if reverse_stone_puttable?(ix , iy , color ,board)
      
    end  
    return array
  end  
  
    #● CPUのおく位置決定
  def decide_put_cell
    sum = 0
    make_cpu_ai
    sum = array_elements_plus(@cpu_ai)
    return_value =  num_array_position(rand(sum) , @cpu_ai)
    show_debug_num(return_value)
    return  return_value
   
  end
  #● 配列要素の総和
  def array_elements_plus(array)
    sum = 0
    array.each do |i|
      sum += i 
    end   
    return sum
  end 
  
  #● 数値が配列要素の分割でどこに当たるか(以上未満　●-----○)
  def num_array_position(num , array)
    index = 0
    array.each do |i|
      num -= i
      return index  if num < 0
      index += 1
    end  
  end     
  #● CPUの優先度配列の作成
  def make_cpu_ai
    @ai_puttable.each do |i|
      put_value = 100000
      ix = i % BOARDWIDTH
      iy = i / BOARDWIDTH
      
      @cpu_ai.push(put_value)    
    end  
  end  
  
  def show_debug_num(return_value)
   
  end   
end  