コード例 #1
0
ファイル: Pong.cpp プロジェクト: catlin0123/Pong
/**************************************************************************//**
* @author Paul Blasi
*
* @par Description:
* Stores the state of the pressed key and does an initial update of the left
* player. Also handles the key presses for space, which pauses, escape, which
* exits the game, and +/-, which incresses and decreases the speed of the ball
* respectively.
*
* @param[in] key - the key that was pressed
* @param[in] x - the x position of the mouse when the key was pressed
* @param[in] y - the y position of the mouse when the key was pressed
*
*****************************************************************************/
void Keyboard(unsigned char key, int x, int y)
{
	KEYSTATE[key] = true;

	if ((KEYSTATE['w'] || KEYSTATE['W']) && !PAUSED)
	{
		LEFT_PLAYER.ChangeYSpeed(PADDLE_INC);
	}

	if ((KEYSTATE['a'] || KEYSTATE['A']) && !PAUSED)
	{
		LEFT_PLAYER.ChangeXSpeed((-1)*PADDLE_INC);
	}

	if ((KEYSTATE['s'] || KEYSTATE['S']) && !PAUSED)
	{
		LEFT_PLAYER.ChangeYSpeed(-1 * PADDLE_INC);
	}

	if ((KEYSTATE['d'] || KEYSTATE['D']) && !PAUSED)
	{
		LEFT_PLAYER.ChangeXSpeed(PADDLE_INC);
	}

	if (KEYSTATE['+'] && !PAUSED)
    {
        BALL.IncreaseMinVelocity();
    }

	if (KEYSTATE['-'] && !PAUSED)
    {
        BALL.DecreaseMinVelocity();
    }

    if (KEYSTATE[' '])
    {
        PAUSED = !PAUSED;

		if (PAUSED)
		{
			glutPostRedisplay();
		}
		else
		{
			glutTimerFunc(30, Animate, 0);
		}
    }

    if (KEYSTATE[ESCAPE_KEY])
    {
        glutExit();
    }
}
コード例 #2
0
ファイル: Pong.cpp プロジェクト: catlin0123/Pong
/**************************************************************************//**
* @author Paul Blasi
*
* @par Description:
* Stores the state of the special key that was released.
*
* @param[in] key - the special key that was pressed
* @param[in] x - the x position of the mouse when the key was pressed
* @param[in] y - the y position of the mouse when the key was pressed
*
*****************************************************************************/
void SpecialKeys(int key, int x, int y)
{
	SPECKEYSTATE[key] = true;

	if (SPECKEYSTATE[GLUT_KEY_LEFT] && !PAUSED)
	{
		RIGHT_PLAYER.ChangeXSpeed(-1 * PADDLE_INC);
	}

	if (SPECKEYSTATE[GLUT_KEY_RIGHT] && !PAUSED)
	{
		RIGHT_PLAYER.ChangeXSpeed(PADDLE_INC);
	}

	if (SPECKEYSTATE[GLUT_KEY_UP] && !PAUSED)
	{
		RIGHT_PLAYER.ChangeYSpeed(PADDLE_INC);
	}

	if (SPECKEYSTATE[GLUT_KEY_DOWN] && !PAUSED)
	{
		RIGHT_PLAYER.ChangeYSpeed(-1 * PADDLE_INC);
	}
}
コード例 #3
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);
		}
	}
}