![]() |
1
3
很难在代码中找到任何问题,但您调用了该代码之外的许多方法。从gettopleftpoint()开始,我的第一个疑点是,您确定要对坐标使用相同的引用吗?如果gettopleftpoint()返回最左边、最上面的点,但setNextTarget设置了中间点,那么我们就有问题了! 下一步:screentogame()还会更改坐标…也可能是问题的根源。 如果部分正确的话
你只能走一条不是小路的广场?(与问题无关…) 另一个:blocked()不确定realy做了什么。如果所有的方块都在人的右侧和侧面被阻挡,他将在左上角结束。 最后一个几乎与第一个相同:setNextTarget()与screentogame()具有相同的坐标引用?
总结:最好创建一些单元测试来测试没有这些“噪声”的随机漫游算法。
还有一点:我更喜欢使用随机列表,而不是把所有的列表都洗掉,只得到其中的一个元素… |
![]() |
2
8
一些要点,其中一些是在其他答案中提出的:
|
![]() |
3
6
只初始化一次随机。你反复地重新测试随机生成器,破坏了随机性。 最好使用整个应用程序的工厂来创建随机的单例。
|
![]() |
4
2
假设
用:
|
![]() |
5
1
正如其他人所说,您应该只实例化一次随机对象,然后重用它,shuffle()调用意味着您根本不需要使用随机对象。但是对于bug的根本原因,每次调用它时,它都会在这里初始化。getTopLeftPoint(),所以我不知道它如何不总是转到左上角。我认为您应该在角色的实际位置(而不是左上角)实例化它。 |
![]() |
6
1
你说你把周围所有的点都放在列表中,但是你的代码排除了水平线和垂直线,所以你的对象倾向于只沿对角线方向移动,这可能解释了对左上角的偏好。 顺便说一句,您的条件可以放得更可读一些,这样可以节省一些不必要的执行过程:
|
![]() |
7
0
Person对象列表的顺序是什么(您正在运行此代码)?如果你按照预先设定的顺序迭代它们,那么你可能会在那里引入一个偏差,因为第一个结果会对第二个结果产生影响(等等)。 在处理人员列表之前,您可以尝试对其进行洗牌。 |
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |