在战斗计划中,我有两个阵容:
players = [brad, josh]
我想随机选择两个不同的玩家,其中一个将攻击另一个,示意图如下:
random_player.attack(other_random_player)
我想确保玩家永远不会攻击自己。如果我这样做:
players[rand(0..1)].attack(players[rand(0..1)])
一个玩家有可能会自己战斗。一旦第一个玩家被选中并与阵列中剩余的玩家战斗,我该如何做到这一点?
答案 0 :(得分:9)
您可以使用.sample
:
match = players.sample(2);
match[0].attack(match[1]);
这将从阵列中随机挑选两名玩家,然后你让他们互相争斗。没有办法同时选择同一个玩家。
更干净:
p1, p2 = players.sample(2)
p1.attack p2
答案 1 :(得分:-2)
你可以这样做:
players.delete_at(rand(players.length)).attack(players.sample)
这样每次都会从阵列中删除1个玩家。如果你有超过2名玩家,并希望其中一名玩家攻击其他玩家,那将会奏效。
如果你只有2名玩家,你可以这样做:
players.delete_at(rand(players.length)).attack(players[0])