//the game loop, calls all of the supplemental
//methods of the application to continuously
//update and maintain the functionality of the
//game
void Application::gameLoop()
{
    while(gameRunning)
    {
        handleEnvironment();

        updateMonsters();

        handleEvents();

        updatePlayer();

        handleArrows();

        handlePhysics();

        delta.start();

        checkBoundaries();
        updateFPS();
        updatePoints();
        drawSurface();

        if(finished)
        {
            showFinal();
        }

    }
}
Example #2
0
void updateObject(Game* game){

    int i;

    for(i=0; i<game->objectNumber; i++){

        switch (game->map->objects[i].type){


            case FLY :

            if(game->map->objects[i].initialized == 0) initializeMonster(&(game->map->objects[i]),game->map->objects[i].x,game->map->objects[i].y);

            if(game->map->objects[i].initialized == 1) updateMonsters(game, &(game->map->objects[i]));

            break;

            case COIN :

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0))
                {
                    getItem(game);
                    game->map->objects[i].initialized =1 ;
                }

                break;

            case DOOR :

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0)){

                    game->level++;

                    endLevel(game);
                }

                break;

            case BLUE_BLOCK :

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0)){
                    isSolid(game->player,&(game->map->objects[i]));
                }

                break;

            case GREEN_BLOCK :

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0)){
                    isSolid(game->player,&(game->map->objects[i]));
                }

                break;

            case YELLOW_BLOCK :


                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0)){
                    isSolid(game->player,&(game->map->objects[i]));
                }

                break;

            case RED_BLOCK :

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1)){
                    isSolid(game->player,&(game->map->objects[i]));
                }

                break;


            case PICK :

                if((collidePick(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0)){
                    if(game->life > 0)
                    {
                        game->life--;
                        game->player->timerMort = 1;
                        if(game->life<1) playerGameover(game);
                    }
                }

                break;

            case ELEVATOR_BLOCK :


                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1)){
                    isSolid(game->player,&(game->map->objects[i]));
                }

                break;

            case ELEVATOR_SWITCH :


                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0) && (game->input->use == 1)){
                    activateSwitch(ELEVATOR_BLOCK,game);
                    game->map->objects[i].initialized = 1;
                    game->input->use =0;
                    playSoundFx(SWITCHSOUND,game);
                    break;
                }

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1) && (game->input->use == 1)){
                    desactivateSwitch(ELEVATOR_BLOCK,game);
                    game->map->objects[i].initialized = 0;
                    game->input->use = 0;
                    playSoundFx(SWITCHSOUND,game);
                    break;
                }

                break;

            case BLUE_SWITCH :

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0) && (game->input->use == 1)){
                    activateSwitch(BLUE_BLOCK,game);
                    game->map->objects[i].initialized = 1;
                    game->input->use =0;
                    playSoundFx(SWITCHSOUND,game);
                    break;
                }

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1) && (game->input->use == 1)){
                    desactivateSwitch(BLUE_BLOCK,game);
                    game->map->objects[i].initialized = 0;
                    game->input->use = 0;
                    playSoundFx(SWITCHSOUND,game);
                    break;
                }

                break;

            case GREEN_SWITCH :

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0) && (game->input->use == 1)){
                    activateSwitch(GREEN_BLOCK,game);
                    game->map->objects[i].initialized = 1;
                    game->input->use =0;
                    playSoundFx(SWITCHSOUND,game);
                    break;
                }

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1) && (game->input->use == 1)){
                    desactivateSwitch(GREEN_BLOCK,game);
                    game->map->objects[i].initialized = 0;
                    game->input->use = 0;
                    playSoundFx(SWITCHSOUND,game);
                    break;
                }

                break;

            case YELLOW_SWITCH :

                 if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0) && (game->input->use == 1)){
                    activateSwitch(YELLOW_BLOCK,game);
                    game->map->objects[i].initialized = 1;
                    game->input->use =0;
                    playSoundFx(SWITCHSOUND,game);
                    break;
                }

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1) && (game->input->use == 1)){
                    desactivateSwitch(YELLOW_BLOCK,game);
                    game->map->objects[i].initialized = 0;
                    game->input->use = 0;
                    playSoundFx(SWITCHSOUND,game);
                    break;
                }

                break;

            case RED_SWITCH :

                 if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0) && (game->input->use == 1)){
                    activateSwitch(RED_BLOCK,game);
                    game->map->objects[i].initialized = 1;
                    game->input->use =0;
                    playSoundFx(SWITCHSOUND,game);
                    break;
                }

                if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1) && (game->input->use == 1)){
                    desactivateSwitch(RED_BLOCK,game);
                    game->map->objects[i].initialized = 0;
                    game->input->use = 0;
                    playSoundFx(SWITCHSOUND,game);
                    break;
                }

                break;

            default :

                break;
        }
    }
}