开关盒第一次可以正常运行,但是会一遍又一遍地继续使用相同的初始选择。在运行此代码块之前,我需要将其重置,以便在需要时选择不同(或相同)的情况。
这是一个狐狸追赶兔子的学校项目。我必须给兔子编码。我已经开发了开关盒,以便将它与灌木丛的接近程度作为打开的参数。这决定了兔子会做什么。第一次可以正常工作,但是移动后继续处理相同的情况,下一个回合再次在兔子身上运行前一个情况。经过一番研究,我发现我应该将它包装在一个do-while语句中,并带有一些标志以退出循环,我这样做了,但是同样的问题仍然存在。
if (noMansLand == false) {
needDirection = true;
do{
switch (directionToBush) {
//N-------------------------------------------------------
case 0:
if (look(7) == Model.BUSH) {
if (distance(7) == 1) {
currentDirection = 6;
if (look(6) == Model.BUSH) {
if (distance(6) == 1) {
currentDirection = 5;
}
}
}
} else {
//WANTED DIRECTION
currentDirection = 7;
}
//FOX ESCAPE PLAN
//code...
needDirection = false;
return currentDirection;
//E-------------------------------------------------------
case 2:
//similar code...
//S--------------------------------------------------------
case 4:
//similar code...
//W--------------------------------------------------------
case 6:
//similar code...
}while(needDirection == true);
}
还有很多代码,将很高兴向您展示整个过程。该游戏在网格界面上工作,狐狸和兔子轮流“看”并在6个方向中的1个方向上移动了一个网格(我在切换代码的片段中只显示了4个基数)。我让兔子寻找最近的灌木丛,以使狐狸追赶它,直到最大转弯为止。兔子接近最接近的灌木丛,并在距灌木丛1英里处将“ noMansLand”转为假,并启动开关盒阻止。它的第一个回合完全按照书写的方式工作,并且兔子沿正确的方向移动,但是在兔子的下一回合上,它继续以与灌木丛在移动之前的最后一个回合相同的方向的情况下继续前进。我假设它使用开关盒存储旧方向,但是我不知道如何重置或刷新此数据。
答案 0 :(得分:0)
switch (directionToBush) {
directionToBush为0?
它在哪里改变?不在您的摘要中! 如果未更改,则在所有循环迭代中都保持为0。
答案 1 :(得分:0)
如果您可以显示切换案例变量'directionToBush'的初始化位置以及在切换案例中如何对其进行更改,这将有所帮助。只要您根据案例不断更改此变量,就可以了。无需重置任何内容。祝你好运!