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; } }
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(); } }
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(); } }