コード例 #1
0
ファイル: Pong.cpp プロジェクト: catlin0123/Pong
/**************************************************************************//**
* @author Paul Blasi
*
* @par Description:
* The action the right paddle is to take when it collides with any wall. Keeps
* the paddles from travelling through walls.
*
* @param[in] col - the type of collision that occurred
*
*****************************************************************************/
void RightCollideWithWall(CollisionTypeEnum col)
{
    if (col == RIGHT_COLLISION)
    {
        if (RIGHT_PLAYER.X_Vel() > 0)
        {
            RIGHT_PLAYER.ResetXSpeed(); 
        }
    }
    if (col == LEFT_COLLISION)
    {
        if (RIGHT_PLAYER.X_Vel() < 0)
        {
            RIGHT_PLAYER.ResetXSpeed();
        }
    }
    if (col == TOP_COLLISION)
    {
        if (RIGHT_PLAYER.Y_Vel() > 0)
        {
            RIGHT_PLAYER.ResetYSpeed();
        }
    }
    if (col == BOTTOM_COLLISION)
    {
        if (RIGHT_PLAYER.Y_Vel() < 0)
        {
            RIGHT_PLAYER.ResetYSpeed();
        }
    }
}
コード例 #2
0
ファイル: Pong.cpp プロジェクト: catlin0123/Pong
/**************************************************************************//**
* @author Paul Blasi
*
* @par Description:
* Updates each of the paddles x and y speeds every 1/3rd of a second
*
*****************************************************************************/
void UpdatePaddles()
{
	if ((KEYSTATE['w'] || KEYSTATE['W']) && !PAUSED)
	{
		LEFT_PLAYER.ChangeYSpeed(PADDLE_INC);
	}
	else if (LEFT_PLAYER.Y_Vel() > 0)
	{
		if (LEFT_PLAYER.Y_Vel() < PADDLE_DEC)
		{
			LEFT_PLAYER.ResetYSpeed();
		}
		else
		{
			LEFT_PLAYER.ChangeYSpeed(-1 * PADDLE_DEC);
		}
	}

	if ((KEYSTATE['a'] || KEYSTATE['A']) && !PAUSED)
	{
		LEFT_PLAYER.ChangeXSpeed((-1)*PADDLE_INC);
	}
	else if (LEFT_PLAYER.X_Vel() < 0)
	{
		if (LEFT_PLAYER.X_Vel() > -1 * PADDLE_DEC)
		{

			LEFT_PLAYER.ResetXSpeed();
		}
		else
		{
			LEFT_PLAYER.ChangeXSpeed(PADDLE_DEC);
		}
	}

	if ((KEYSTATE['s'] || KEYSTATE['S']) && !PAUSED)
	{
		LEFT_PLAYER.ChangeYSpeed(-1 * PADDLE_INC);
	}
	else if (LEFT_PLAYER.Y_Vel() < 0)
	{
		if (LEFT_PLAYER.Y_Vel() >  -1 * PADDLE_DEC)
		{

			LEFT_PLAYER.ResetYSpeed();
		}
		else
		{
			LEFT_PLAYER.ChangeYSpeed(PADDLE_DEC);
		}
	}

	if ((KEYSTATE['d'] || KEYSTATE['D']) && !PAUSED)
	{
		LEFT_PLAYER.ChangeXSpeed(PADDLE_INC);
	}
	else if (LEFT_PLAYER.X_Vel() > 0)
	{
		if (LEFT_PLAYER.X_Vel() < PADDLE_DEC)
		{

			LEFT_PLAYER.ResetXSpeed();
		}
		else
		{
			LEFT_PLAYER.ChangeXSpeed(-1 * PADDLE_DEC);
		}
	}

	if (SPECKEYSTATE[GLUT_KEY_LEFT] && !PAUSED)
	{
		RIGHT_PLAYER.ChangeXSpeed(-1 * PADDLE_INC);
	}
	else if (RIGHT_PLAYER.X_Vel() < 0)
	{
		if (RIGHT_PLAYER.X_Vel() > -1 * PADDLE_DEC)
		{

			RIGHT_PLAYER.ResetXSpeed();
		}
		else
		{
			RIGHT_PLAYER.ChangeXSpeed(PADDLE_DEC);
		}
	}

	if (SPECKEYSTATE[GLUT_KEY_RIGHT] && !PAUSED)
	{
		RIGHT_PLAYER.ChangeXSpeed(PADDLE_INC);
	}
	else if (RIGHT_PLAYER.X_Vel() > 0)
	{
		if (RIGHT_PLAYER.X_Vel() < PADDLE_DEC)
		{

			RIGHT_PLAYER.ResetXSpeed();
		}
		else
		{
			RIGHT_PLAYER.ChangeXSpeed(-1 * PADDLE_DEC);
		}
	}

	if (SPECKEYSTATE[GLUT_KEY_UP] && !PAUSED)
	{
		RIGHT_PLAYER.ChangeYSpeed(PADDLE_INC);
	}
	else if (RIGHT_PLAYER.Y_Vel() > 0)
	{
		if (RIGHT_PLAYER.Y_Vel() < PADDLE_DEC)
		{

			RIGHT_PLAYER.ResetYSpeed();
		}
		else
		{
			RIGHT_PLAYER.ChangeYSpeed(-1 * PADDLE_DEC);
		}
	}

	if (SPECKEYSTATE[GLUT_KEY_DOWN] && !PAUSED)
	{
		RIGHT_PLAYER.ChangeYSpeed(-1 * PADDLE_INC);
	}
	else if (RIGHT_PLAYER.Y_Vel() < 0)
	{
		if (RIGHT_PLAYER.Y_Vel() > -1 * PADDLE_DEC)
		{

			RIGHT_PLAYER.ResetYSpeed();
		}
		else
		{
			RIGHT_PLAYER.ChangeYSpeed(PADDLE_DEC);
		}
	}
}