【发布时间】:2016-11-23 18:44:42
【问题描述】:
我真的是 C++ 的新手,而且很不擅长,但我正在为我的大学项目制作太空入侵者游戏。我在外星人的移动系统以及如何让外星人排成一排生成时遇到了问题(一旦他们到达屏幕的一侧,他们就会向下移动然后穿过)。
首先是我用来移动外星人运动的代码
if (currentSpritePos.x < 975 || currentSpritePos.x > 0)
{
this->AlienVelocity.x = this->AlienVelocity.x*-1;
}
if (currentSpritePos.x == 0)
{
cout << "Im at the wall wooo and going to move down";
//AlievVelocity.x*+1;
setSpritePos({ 0, 75 });
}
我可以让外星人向左移动并向下移动,但由于某种原因他们没有向右移动,我评论了“AlienVelocity.x*+1”这一行,我认为这会让他们向右移动,因为“-1”让他们向左走……
为了让外星人排成一行,我制作了一个数组并设置了两个外星人,仅用于测试目的。
for (int aly = 0; aly < 2; aly++) // Change the 35 to number of desired aliens
{
theAliens.push_back(new cAliens);
theAliens[aly]->setSpritePos({ (100, 50) + 200 });
theAliens[aly]->setSpriteTranslation({ 0, 0 });
theAliens[aly]->setTexture(theTextureManager->getTexture("alien"));
theAliens[aly]->setSpriteDimensions(theTextureManager->getTexture("ship")->getTWidth(), theTextureManager->getTexture("alien")->getTHeight());
}
在 for 语句的第二行,我输入了“+200+,因为我认为这只会给下一个外星人 +200 分,但显然不是。我也不确定如何解决这个问题......
【问题讨论】:
-
乘以 1 不会改变速度,-1 也适用于向右移动。在循环中,您可能希望将 200 乘以迭代器值 aly。
-
StackOverflow 不是调试服务;它最适用于特定问题的特定答案。使用调试器,找出哪些事情没有做您认为他们应该做的事情,并提出一个尖锐的问题(除非您首先找到了答案),然后我们可以提供帮助。
标签: c++