[英]Ruby class inheritance returning undefined method
我正在編寫 Ruby 中的 Mastermind 游戲,並希望為游戲添加更多功能,讓玩家可以選擇成為“codemaker”或“codebreaker”。 為此,我創建了兩個名為 Codebreaker 和 Codemaker 的類,它們繼承自 Players class。
由於未知原因,當我創建 Codebreaker 的實例時,然后調用它應該從 Players Class 繼承的 random_code 方法,我收到“未定義的方法隨機播放”錯誤消息。 然而,這種方法在更簡單的版本之前沒有問題。
class Players
attr_accessor :peg_colors, :select_role, :select_player
def initialize
@peg_colors = :peg_colors
@select_role = :select_role
@select_player = :select_player
end
def random_code
mix_colors = @peg_colors.shuffle
mix_colors[0...4]
end
def player
puts "Would you like to be the Codebreaker or Codemaker? Type your answser:"
@select_role= gets.chomp
@select_role = @select_role.downcase
end
def select_player(choice)
if choice == "codebreaker"
@select_player = Codebreaker
else
@select_player = Codemaker
end
end
def pegs
@peg_colors = ['Blue', 'Pink', 'Yellow', 'White', 'Purple', 'Green']
end
end
class Codemaker < Players
def random_code
get_code
end
def get_code ## thids needs re-coding
puts "\n"
puts "#{@peg_colors}"
puts "\n"
code = []
while code.length < 5
code.push(gets.chomp)
end
end
end
class Codebreaker < Players
def initialize
super
end
end
require_relative 'board.rb'
require_relative 'players.rb'
require_relative 'game.rb'
play = Players.new
pegs = play.pegs
codebreaker_or_codemaker = play.player
select_player = play.select_player(codebreaker_or_codemaker)
player = select_player.new
code = player.random_code
board = Board.new(code, pegs)
game = Game.new(board)
game.play
“shuffle”是 Array class 中的方法,它應該適用於所有 Array 實例。 我看到它在您共享的 repl.com 鏈接上運行良好。 如果您仍然遇到此問題,請分享錯誤消息或驗證調用 shuffle 方法的 object。 我希望這有幫助。 謝謝你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.