예제 #1
0
void gameLoop() {
	
	--pipe.x;
	if(pipe.x < 232 && pipe.x > 160) {
		initPipe();
	}
	movePipe();
	
	//Scroll ground
	if(WX_REG == 0)
		WX_REG = 7;
	else
		--WX_REG;
	
	if(updateBird() != 0) {
		//Kill bird
		flash_frames = 0;
		bird_flag = FALSE;
		
		set_sprite_prop(0, S_FLIPY);
		set_sprite_prop(1, S_FLIPY);
		
		gameState = GAME_STATE_DEAD;
	}
	
	if(!pipe.counted && pipe.x+24 < bird_x) {
		pipe.counted = TRUE;
		if(score != 99) {
			++score;
			updateScore();
		}
	}
	
	moveBird();
}
예제 #2
0
int updateWorld(char keyPressed) {	// run this method every frame
	if (!paused) {
		if (!gameover) {
			switch (keyPressed) {
				case 27:				// puase the game
					gamePause();
					break;
				case 32:				// jump the bird
				case 10:
					updateBird(1);
					updatePipe(PIPE);
					break;
				default:				// falling bird
					updateBird(0);
					updatePipe(PIPE);
					break;
			}
		} else {
				switch (keyPressed) {
					case 'r':
					case 'R':
					case 27:
						initializeWorld();
						break;
					case 'c':
					case 'C':
						QUIT = 1;
					default:			// do nothing
						break;
				}
		}
	}	else {
			if (keyPressed == 27)
				gamePause();
	}
	return paused;	
}
예제 #3
0
int startGame(Pipe* lead, Pipe* trail, int scrWidth, int scrHeight) {

	int loop = 1; 
    int score = 0;
    double birdX = 150, birdY = 275, birdR = 12, birdV = 0, t = .05;
    int flap = 0;
   //#1 - to see game over screen make this while (loop < 5) and uncomment #2
	while (loop) {
        //if bird touches the drawpipe loop = 2

		gfx_clear();
        
        
        //draw background
        drawBackground(scrWidth, scrHeight);
        
        //check for loss
        if ((lead->leadingX-3 <= birdX+16 && lead->trailingX+3 >= birdX-16) &&
            (lead->topHeight >= birdY-16 || lead->bottomHeight <= birdY-16+24)) 
            break;
        if (birdY-16+24 >= scrHeight)
            break;
        
        flap = drawBird(birdX, birdY, birdR, flap);
        updateBird(&birdY, &birdV, &t, birdY, birdV, t);

        if(gfx_event_waiting()){
            char c = gfx_wait();
            if(c == ' ') birdV = -40;
        }
		
        //draw leading pipe
		drawPipe(lead, scrWidth, scrHeight);
        updatePipe(lead);

        //increase the score upon passing through a pair of pipes
        if(lead->trailingX == birdX){
            score++;
        }

        if (lead->trailingX < scrWidth/2) {
            drawPipe(trail, scrWidth, scrHeight);
            updatePipe(trail);
        }
        if (lead->trailingX <= 0) {
            //swap the leader
            Pipe *temp = lead;
            lead = trail;
            trail = temp;
            initializePipe(trail, scrWidth, scrHeight);
        }
   
        //print the score on the top of the screen
        printScore(score, scrWidth);

		gfx_flush(); 
        usleep(10000);
        t+=.001;
		//loop++ #2  -- to see end screen uncomment this and above
	}

    return score;

}