Рубиновый элегантный способ раздачи карт массивов объектам игроков - PullRequest
1 голос
/ 26 июня 2010

У меня проблемы с поиском хорошего элегантного рубинового способа сделать это.У меня есть массив колода с 52 Card объектами, и я хочу перебрать его и перебрать массив Player объектов, сдавая по одной карте за раз в их руку массив.Что-то вроде:

deck = Card.deck.shuffle!
deck.each do |card|
    @players.NEXTELEMENT.hand << card
end

, где NEXTELEMENT выдаст следующий элемент и вернется к началу массива при встрече с концом.Я попытался добавить такой метод в массив, но я получил LocalJumpError.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 26 июня 2010

Просто мод, на какой карте вы находитесь по количеству игроков.

num_players = @players.size

deck.each_with_index do |card,index|
  @players[ index % num_players ].hand << card
end
2 голосов
/ 26 июня 2010

Как насчет

deck.each_slice(@players.size) do |cardSet|
 @players.zip(cardSet).each {|player,card| player << card}
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...