-1
我正在創建一個大富翁遊戲。我搜索了一種方法來創建一個take_turn方法(或一個Class),這樣我就可以在player1和player2之間自動切換(以及將來的player3等)。如何從玩家1轉到玩家2並保持代碼DRY
尋找答案here,也發現在OOP開發遊戲this full-on PDF但還沒有找到這個具體問題的答案。
下面是代碼我'TDDed並與其他幾個對象構建。目前所有效果都很好,我只是想自動爲player1和player2自動重複這些步驟,而不必手動(DRY)。
class Engine
attr_reader :dice, :player1, :player2, :move, :board
def initialize
@player1 = Player.new
@board = Board.new
@player2 = Player.new
@dice = Dice.new
@move = Move.new
end
def run
3.times do
roll_and_move
print_current_balance
player_action
end
end
def roll_and_move
dice.roll
move.move(player1, board, dice.value)
end
def print_current_balance
player1.balance
end
def player_action
player1.buy(board.tile(player1.position))
end
end
我會更進一步,甚至沒有'@ player1'和'@ player2'的變量。只需使用'@播放器'即可。我也不會在你的'next_player'方法中硬編碼2,而是使用數組的長度。 – miorel
你是對的,我相應地更新了我的答案,謝謝! – Martin
酷!這真棒傢伙非常感謝:) –