一个课堂作业让我们重新创建了“ Hunt The Wumpus”。射完箭后,我可以选择将Wumpus留在原处,或者将Wumpus移到我当前所在的房间,或者移到我当前所在的房间附近的三个房间中的任何一个。
adjacentRooms = new int[,]
{
{1, 4, 7}, {0, 2, 9}, {1, 3, 11}, {2, 4, 13}, {0, 3, 5},
{4, 6, 14}, {5, 7, 16}, {0, 6, 8}, {7, 9, 17}, {1, 8, 10},
{9, 11, 18}, {2, 10, 12}, {11, 13, 19}, {3, 12, 14}, {5, 13, 15},
{14, 16, 19}, {6, 15, 17}, {8, 16, 18}, {10, 17, 19}, {12, 15, 18}
这是我拥有的数组。例如,假设我在房间0(索引0)中,而wumpus在房间15(索引15)中。我射箭而错过。 Wumpus现在必须移动,他的选择是房间15,房间0,房间1,房间4,房间7。我一直在尝试random.Next尝试在这5个房间之间产生一个随机数,但没有任何运气。我假设是随机的,下一步可能不是走的路。如果有人能给我一些提示或帮助我,我将万分感谢!
答案 0 :(得分:3)
Wumpus的选择将是由5个元素组成的数组,这些元素包括:{same},{mine}和3个相邻的房间(基于Wumpus所在的位置)。对于上述选择,您在这些选择的数组位置选择房间#的随机界限将是1-5(或0-4)。因此,如果Wumpus位于3号会议室,则您位于1号会议室,而2号,4号和13号会议室则您可以选择{3,1,2,4,13,13}如果Rnd#返回为“ 3” (0-4分),然后Wumpus将移至4号房。
然后的问题是,如果您在相邻的房间里怎么办?例如,如果Wumpus在#3中,而您在#4中。是{3,4,2,4,13}还是您只是从4个房间中挑选。 {3,4,2,13}您需要根据这两种解决方案之一来构建逻辑。
使用简单的随机数生成,请确保仅初始化一次随机序列,而不是对每个游戏循环初始化一次,因为它是基于计时器的,并且在循环内运行时,您将生成类似的选择。您可以阅读有关C#的更好的伪随机解决方案,以获取更多类似随机的选择。
答案 1 :(得分:2)
要从一组指定的数字中随机选择一个数字:
// Prepare a random number generator
var rng = new Random();
// Get the set of options in a list.
var choices = new List<int> { 15, 0, 1, 4, 7 };
// Pick a random index into that list.
// Note that first parameter is inclusive, and second is exclusive.
var randomSelection = rng.Next(0, choices.Count);
// Take the option at that index
var chosen = choices[randomSelection];