示例#1
0
bool Jogo::pegaLixo(int tipo)
{
    Lixo aux;
    filaLixo.pegaOPrimeiro(aux);
    if((aux.getPosition().x > 10.5*gui.getWidth()/20)&&(aux.getPosition().x < 100 + (10.5*gui.getWidth()/20)))
    {
        filaLixo.retira(aux);
        if(aux.getTipo()== tipo)
        {
            if(!lixeiras[tipo-1].cheia())
            {
                this->lixeiras[tipo-1].incrementa();
                if(lixeiras[tipo-1].cheia())
                {
                    incrementaLevel();
                    gui.lixeiraCheia.play();
                }
            }
            return true;
        }

        else
        {
            if(lixeiras[tipo-1].cheia())
            {
                decrementaLevel();
            }

            this->lixeiras[tipo-1].zera();
            return false;
        }

    }
    else
    {
        if(lixeiras[tipo-1].cheia())
        {
            decrementaLevel();
        }

        this->lixeiras[tipo-1].zera();
        return false;
    }
}
示例#2
0
void Jogo::intro()
{
    Objeto logo(gui.logo_tex);
    logo.setPosition(gui.getWidth()/2, gui.getHeigth()/2.3);

    /*---Texto---*/
    sf::Clock clk_intro;
    int controlAlpha = 2;
    bool sobe = true;

    while(gui.tela.isOpen())
    {
        sf::Event evento;

        gui.limpaTela();

        while (gui.tela.pollEvent(evento))
        {
            switch(evento.type)
            {
            case(sf::Event::Closed):
                gui.tela.close();
                break;
            case(sf::Event::KeyPressed):
            {
                if(evento.key.code == sf::Keyboard::Escape)
                {
                    gui.tela.close();
                }
                else
                {
                    gui.inicio.play();
                    incrementaLevel();
                    sf::Time tempo = sf::milliseconds(500);
                    sf::sleep(tempo);
                    tutorial();

                    return;
                }
                break;
            }
            default:
                break;
            }
        }

        /*---Texto---*/
        sf::Time elapsed = clk_intro.getElapsedTime();

        if(elapsed.asSeconds() > 0.1)
        {
            if(sobe)
                controlAlpha++;
            else
                controlAlpha--;

            if(controlAlpha == 10 || controlAlpha == 2)
                sobe = !sobe;

            clk_intro.restart();
        }

        sf::Color color(100,100,100, 25 * controlAlpha);

        gui.limpaTela();

        gui.desenhaTexto("Pressione qualquer tecla para começar", 30, color, gui.getWidth()/2, gui.getHeigth()/1.2, true);

        gui.tela.draw(logo);
        gui.renderiza();
    }

}
示例#3
0
void Board::timerEvent(QTimerEvent *event)
{    
    saveSocore = score; //atribui o valor de score para salvar em arquivo
    QSound som("Media/Speech On.wav");
    if(pos_x <0 || pos_x > 200 || pos_y < 0 || pos_y > 296){ //Checa se o nake bateu nas bordas
        this->update();
        fimJogo();
    }else{
        switch(direcao){
        case 1:
            pos_x = pos_x - veloc;
            break;
        case 2:
            pos_x = pos_x + veloc;            
            break;
        case 3:
            pos_y = pos_y - veloc;
            break;
        case 4:
            pos_y = pos_y + veloc;
            break;
        }
        if(pos_x >= 0 && pos_x <= 200 && pos_y >=0 && pos_y < 297){ //Checa se o Snake não bateu nas bordas
            this->update();
        }

        //Colisão da Snake com a maçã quando a direçao do Snake for para esquerda
        if(direcao==1 && (pos_x + veloc) == (maca_x)&& (pos_y == maca_y)){
            score = score +1;
            tamSnake++; //variável que determia o tamnho do corpo do Snake
            som.play();
            posicaoMaca();
            emit pontosGanho(score);            
            emit barra_Progresso();
        }

        //Colisão da Snake com a maçã quando a direçao do Snake for para direita
        if(direcao==2 && pos_x == (maca_x + veloc) && (pos_y == maca_y ) ){
            score = score +1;
            tamSnake++;
            som.play();
            posicaoMaca();
            emit pontosGanho(score);            
            emit barra_Progresso();
        }

        //Colisão da Snake com a maçã quando a direçao do Snake for para cima
        if(direcao==3 && (pos_y + veloc) == (maca_y)&& (pos_x == maca_x)){
            score = score +1;
            tamSnake++;
            som.play();
            posicaoMaca();
            emit pontosGanho(score);            
            emit barra_Progresso();
        }

        //Colisão da Snake com a maçã quando a direçao do Snake for para baico
        if(direcao==4 && (pos_y) == (maca_y + veloc)&& (pos_x == maca_x)){
            score = score +1;
            tamSnake++;
            som.play();
            posicaoMaca();
            emit pontosGanho(score);            
            emit barra_Progresso();
        }
    }    
    colisaoSanke();
    vetorSnakeX.push_front(pos_x); //Cria o corpo do Snake
    vetorSnakeY.push_front(pos_y); //Cria o corpo do Snake

    //Apaga o corpo do Snake até o limite do tamanho do Snake
    while(vetorSnakeX.size() > tamSnake){
        vetorSnakeX.pop_back();
        vetorSnakeY.pop_back();
    }

    if(score == gameOver){
        fimJogo();
    }else{
        incrementaLevel();
    }
}