gpt4 book ai didi

C++ 做 while 循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:51 25 4
gpt4 key购买 nike

我有一个包含 10 个项目的 vector (为简单起见,所有项目都属于同一类,称其为“a”)。我想要做的是检查“A”不是 a) 隐藏墙壁或 b) 隐藏另一个“A”。我有一个碰撞函数可以做到这一点。

想法只是让这个循环类遍历并将“A”移动到下一个位置,如果该药水导致碰撞,那么它需要在屏幕上给自己一个新的随机位置。因为屏幕很小,所以元素很有可能会放在另一个屏幕上(或墙顶等)。代码的逻辑在我的脑海中运作良好 - 但调试对象只是卡在循环中的代码,并保持在相同的位置。 “A”应该在屏幕上移动,但它保持静止!

当我注释掉 Do while 循环并将“MoveObject()”函数向上移动时,代码完美运行,“A”在屏幕上移动。就在我尝试向它添加额外功能时,它不起作用。

    void Board::Loop(void){


//Display the postion of that Element.
for (unsigned int i = 0; i <= 10; ++i){


do {

if (checkCollisions(i)==true){
moveObject(i);
}
else{
objects[i]->ResetPostion();

}

}
while (checkCollisions(i) == false);
objects[i]->SetPosition(objects[i]->getXDir(),objects[i]->getYDir());
}

}

下面的类是碰撞检测。这个我后面会展开。

    bool Board::checkCollisions(int index){

char boundry = map[objects[index]->getXDir()][objects[index]->getYDir()];

//There has been no collisions - therefore don't change anything
if(boundry == SYMBOL_EMPTY){
return false;
}
else{
return true;

}

}

任何帮助将不胜感激。我会给你买一杯虚拟啤酒:-)

谢谢

编辑:

ResetPostion -> 这将给元素 A 在屏幕上一个随机位置moveObject -> 这将查看对象的方向并适当调整 x 和 Y 线。

最佳答案

我猜你需要:

do { ...
... } while (checkCollisions(i));

此外,如果您有 10 个元素,则 i = 0; i < 10; i++

顺便说一句。不要写 if (something == true) , 简单 if (something)if (!something)

关于C++ 做 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16022402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com