Exemple #1
0
void initDefaultBall(Ball *ball)
{
    ball->x = FPMAKE((DEFAULT_COURT_WIDTH/2 - DEFAULT_BALL_WIDTH/2),0);
    ball->y = FPMAKE((DEFAULT_COURT_HEIGHT/2 - DEFAULT_BALL_HEIGHT/2),0);
    
    ball->xVel = 0;
    ball->yVel = 0;

    ball->height = FPMAKE(DEFAULT_BALL_HEIGHT,0);
    ball->width = FPMAKE(DEFAULT_BALL_WIDTH,0);
}
Exemple #2
0
void assembleDefaultPongGame() {
    gPngGame.ball = &ball;
    gPngGame.paddleOne = &paddleOne;
    gPngGame.paddleTwo = &paddleTwo;
    gPngGame.court = &court;
    gPngGame.useGravity = 1;
    gPngGame.gravity = 1;
    gPngGame.epsilon = FPMAKE(2,8);
}
Exemple #3
0
void initDefaultCourt(Court *court)
{
    court->width = FPMAKE(DEFAULT_COURT_WIDTH,0);
    court->height = FPMAKE(DEFAULT_COURT_HEIGHT,0);
    court->x = FPMAKE(SCREEN_START_X, 0);
    court->y = FPMAKE(SCREEN_START_Y, 0);
    
    court->leftAccAreaWidth = FPMAKE(DEFAULT_LEFT_ACCAREA_WIDTH,0);
    court->leftAccAreaX = FPMAKE(DEFAULT_LEFT_ACCAREA_X,0);
    court->rightAccAreaWidth = FPMAKE(DEFAULT_RIGHT_ACCAREA_WIDTH,0);
    court->rightAccAreaX = FPMAKE(DEFAULT_RIGHT_ACCAREA_X,0);
}
Exemple #4
0
void initDefaultPaddleTwo(Paddle *paddle2)
{
    paddle2->x = FPMAKE(DEFAULT_RIGHT_ACCAREA_X,0);
    paddle2->y = FPMAKE(DEFAULT_COURT_HEIGHT/2,0);

    paddle2->xVel = FPMAKE(0,0);
    paddle2->yVel = FPMAKE(0,0);

    paddle2->height = FPMAKE(DEFAULT_PADDLE_HEIGHT,0);
    paddle2->width = FPMAKE(DEFAULT_PADDLE_WIDTH,0);
}
Exemple #5
0
void initDefaultPaddleOne(Paddle *paddle1)
{
    paddle1->x = FPMAKE(DEFAULT_LEFT_ACCAREA_WIDTH,0);
    paddle1->y = FPMAKE(DEFAULT_COURT_HEIGHT/2,0);
    
    paddle1->xVel = FPMAKE(0,0);
    paddle1->yVel = FPMAKE(0,0);
    
    paddle1->height = FPMAKE(DEFAULT_PADDLE_HEIGHT,0);
    paddle1->width = FPMAKE(DEFAULT_PADDLE_WIDTH,0);
}
Exemple #6
0
#include <stdlib.h>
#include <time.h>

static int firstTimeRandom = 1;
GravityDirection randomGravityDirection() {
    int randomNumber;
    if(firstTimeRandom) {
	srand(time(NULL));
	firstTimeRandom = 0;
    }
    
    randomNumber = rand() % 9;
    return (GravityDirection)randomNumber;
}

const GPINT gravityStepPositive = FPMAKE(0,1);
const GPINT gravityStepNegative = -1 * FPMAKE(0,1);
void updateGravity(GPngGame *gPngGame) {
    switch(gPngGame->gravityDirection) {
    case noGravity:
	gPngGame->xGravity = 0;
	gPngGame->yGravity = 0;
	break;
    case northGravity:
	gPngGame->xGravity = 0;
	gPngGame->yGravity = gravityStepNegative;
	break;
    case northEastGravity:
	gPngGame->xGravity = gravityStepPositive;
	gPngGame->yGravity = gravityStepNegative;
	break;
Exemple #7
0
void initGameObjects(StartState startState)
{
    initDefaultBall(&ball);
    initDefaultCourt(&court);
    initDefaultPaddleOne(&paddleOne);
    initDefaultPaddleTwo(&paddleTwo);

    gPngGame.isPlayerOneHuman = 0;
    gPngGame.isPlayerTwoHuman = 0;


    switch(startState) {
    case straightLeft:
	paddleTwo.x = FPMAKE(280,0);
	paddleTwo.y = FPMAKE(FPINT(gPngGame.court->y), 0);
	
	setBallXVel(-1*FPMAKE(0, 8), &ball);
	
	break;

    case straightLeftPaddleTopCollision:
	paddleTwo.x = FPMAKE(280,0);
	paddleTwo.y = FPMAKE(FPINT(gPngGame.court->y), 0);

	paddleOne.x = FPMAKE(35,0);
	paddleOne.y = FPMAKE(110,0);
	paddleOne.xVel = FPMAKE(0,0);
	paddleOne.yVel = FPMAKE(-1,0);
	ball.x = FPMAKE(45,0);
	ball.y = FPMAKE(100-DEFAULT_BALL_HEIGHT-8,0);
	ball.xVel = FPMAKE(-1,0);
	ball.yVel = FPMAKE(0,0);


	setBallXVel(-1*FPMAKE(0, 8), &ball);
	break;
    case straightLeftPaddleBottomCollision:
	paddleTwo.x = FPMAKE(280,0);
	paddleTwo.y = FPMAKE(FPINT(gPngGame.court->y), 0);

	paddleOne.x = FPMAKE(35,0);
	paddleOne.y = FPMAKE(90,0);
	paddleOne.xVel = FPMAKE(0,0);
	paddleOne.yVel = FPMAKE(1,0);
	ball.x = FPMAKE(45,0);
	ball.y = FPMAKE(100+DEFAULT_PADDLE_HEIGHT+8,0);
	ball.xVel = FPMAKE(-1,0);
	ball.yVel = FPMAKE(0,0);

	setBallXVel(-1*FPMAKE(0, 8), &ball);
	
	break;
    case straightLeftPaddleNonTopCollision:
	paddleOne.x = FPMAKE(24,0);
	paddleOne.y = FPMAKE(100,0);
	paddleOne.yVel = 0;
	paddleOne.xVel = MAX_PADDLE_SPEED_X;
	
	ball.x = FPMAKE(34+DEFAULT_PADDLE_WIDTH,0);
	ball.y = FPMAKE(100-DEFAULT_BALL_HEIGHT+1, 0);
	ball.xVel = MIN_BALL_SPEED_X;
	ball.yVel = 0;
	break;
    case straightRightNonTopCollision:
	paddleOne.x = FPMAKE(344-paddleTwo.width,0);
	paddleTwo.y = FPMAKE(100,0);
	paddleTwo.yVel = 0;
	paddleTwo.xVel = MIN_PADDLE_SPEED_X;
	
	ball.x = FPMAKE(334-ball.width,0);
	ball.y = FPMAKE(100-DEFAULT_BALL_HEIGHT+1, 0);
	ball.xVel = MAX_BALL_SPEED_X;
	ball.yVel = 0;
	break;
    case straightRightPaddleTopCollision:
	paddleTwo.x = FPMAKE(280,0);
	paddleTwo.y = FPMAKE(110, 0);
	paddleTwo.xVel = FPMAKE(0,0);
	paddleTwo.yVel = FPMAKE(-1,0);

	paddleOne.x = FPMAKE(35,0);
	paddleOne.y = FPMAKE(110,0);

	ball.x = FPMAKE(270,0);
	ball.y = FPMAKE(100-DEFAULT_BALL_HEIGHT-8,0);
	ball.xVel = FPMAKE(1,0);
	ball.yVel = FPMAKE(0,0);


	setBallXVel(FPMAKE(0, 8), &ball);
	
	break;

    case straightRightPaddleBottomCollision:
	paddleTwo.x = FPMAKE(280,0);
	paddleTwo.y = FPMAKE(90,0);
	paddleTwo.xVel = FPMAKE(0,0);
	paddleTwo.yVel = FPMAKE(1,0);
	
	paddleOne.x = FPMAKE(35,0);
	paddleOne.y = FPMAKE(90,0);

	ball.x = FPMAKE(270,0);
	ball.y = FPMAKE(100+DEFAULT_PADDLE_HEIGHT+8,0);
	ball.xVel = FPMAKE(1,0);
	ball.yVel = FPMAKE(0,0);

	setBallXVel(FPMAKE(0, 8), &ball);
	
	break;

    case straightRightPaddleRearCollision:
	paddleOne.x = FPMAKE(DEFAULT_LEFT_ACCAREA_X + DEFAULT_LEFT_ACCAREA_WIDTH - DEFAULT_PADDLE_WIDTH, 0);
	paddleOne.y = FPMAKE(100,0);
	ball.x = FPMAKE(FPINT(paddleOne.x) - DEFAULT_BALL_WIDTH - 5, 0);
	ball.y = FPMAKE(100,0);
	setBallXVel(-1*FPMAKE(0, 6), &ball);
	setPaddleXVel(FPMAKE(-1,0), &paddleOne);

     	break;
    case straightLeftPaddleRearCollision:
	paddleTwo.x = FPMAKE(DEFAULT_RIGHT_ACCAREA_X, 0);
	paddleTwo.y = FPMAKE(100,0);
	ball.x = FPMAKE(FPINT(paddleTwo.x) + DEFAULT_BALL_WIDTH + 5, 0);
	ball.y = FPMAKE(100,0);
	setBallXVel(FPMAKE(0, 6), &ball);
	setPaddleXVel(FPMAKE(1,0), &paddleTwo);
	break;

    case noStartState:
	gPngGame.isPlayerOneHuman = 1;
	gPngGame.isPlayerTwoHuman = 0;
	break;
    default:
	printf("default - please provide a value");
	break;
    }

    assembleDefaultPongGame();
 }