一门课的作业让我们重新创作了“猎杀文帕斯”。射出箭头后,我可以选择将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),wumpu在房间15 (索引15)。我射了一箭,但没射中。沃姆普现在必须搬家了,他的选择是15号房,0号房,1号房,4号房,7号房。我一直在尝试random.Next,尝试在这5个房间之间随机产生一个数字,但没有任何运气。我猜random.Next可能不是合适的选择。如果有人能给我一些提示或帮助我,我将万分感激!
发布于 2018-11-27 07:36:33
Wumpus的选择将是一个由5个元素组成的数组,其中包括:{same},{ on },以及基于Wumpus所在位置的3x相邻房间。对于上面的选择,您的随机边界将是1-5 (或0-4),其中您在这些选择数组的位置选择房间#。因此,如果Wumpus在3号房间,你在1号房间,2,4和13号房间,你可以选择{3,1,2,4,13}如果Rnd #返回为"3“(从0-4中),那么Wumpus将移动到4号房间。
那么问题就是,如果你在隔壁房间呢?例如,如果Wumpus在#3,而你在#4。这是不是意味着{3,4,2,4,13},或者你只是从4个房间中挑选。{3,4,2,13}您需要根据这两种解决方案中的一种来构建逻辑。
使用简单的随机生成,确保您只初始化随机序列一次,而不是每次游戏循环,因为它是基于计时器的,并且当在循环中运行时,您将生成类似的选择。您可以阅读C#的更好的伪随机解决方案,以获得更多类似随机的选择。
发布于 2018-11-27 08:14:46
要从一组指定的数字中随机选取一个数字,请执行以下操作:
// 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];
https://stackoverflow.com/questions/53490492
复制相似问题