我对链接列表很陌生,我似乎无法弄清楚为什么这不起作用。
程序不会崩溃,编译器没有显示错误但doActions()
永远不会运行。
这是函数的代码,它在主循环中调用。
void Action()
{
clsParent* pCurrent;
pCurrent = pHead;
while(pCurrent != NULL)
{
clsPlayer* pPlayer;
pPlayer = dynamic_cast<clsPlayer*>(pCurrent);
if(pPlayer != NULL)
{
pPlayer->doActions();
}
pCurrent = pCurrent->pNext;
}
}
这应该要求doActions()
列表中的每个玩家(尽管只有一个)。
doAction()
在我尝试在代码中实现链表之前工作得非常好,所以我知道不是这样。对于那些对它的作用感到好奇的人,它会检查玩家是否在跳跃并相应地移动玩家。
编辑:我注意到我可以放入其他功能,它会工作
这有效:
void clsPlayer::jump()
{
if(onGround)
{
jumping = true;
yPos -= gravitySpeed;
animationState = 3;
}
}
虽然这不是
void clsPlayer::doActions()
{
if(!onGround)
{
yPos += gravitySpeed;
}
if(jumping)
{
jumpTimeCounter++;
yPos -= 20;
if(jumpTimeCounter > 10)
{
jumping = false;
jumpTimeCounter = 0;
}
}
}