int prox_ball_y(int pos){ if(maxY==0){ return ultimaPosY; }else if(ultimaPosY>=maxY-radioBola && (direccion==ARR_DER||direccion==ARR_IZQ)){ if(direccion==ARR_DER) direccion=ABA_DER; else direccion=ABA_IZQ; }else if(ultimaPosY<=minY+radioBola && (direccion==ABA_IZQ||direccion==ABA_DER)){ ultimaPosY=maxY; direccion=ARR_IZQ; return ultimaPosY; }else if(choque(pos)==1){ if(direccion==ABA_DER) direccion=ARR_DER; else direccion=ARR_IZQ; } if(direccion==ARR_IZQ||direccion==ARR_DER){ ultimaPosY+=10; } if(direccion==ABA_IZQ||direccion==ABA_DER){ ultimaPosY-=10; } return ultimaPosY; }
//Metodo principal void Juego::jugar() { //Cargo las variables de la partida a 0 reset(); //Loop principal while (true) { if (GetAsyncKeyState(VK_ESCAPE)) break; //Actualizo el auto del jugador jugador.mover(); jugador.dibujar(); //Chequeo colision colision = checkColision(jugador.getX(), jugador.getY(), enemigos[ultimoEnemigo]->getX(), enemigos[ultimoEnemigo]->getY()); if (colision) { //Si hay, disparo el metodo choque choque(); //Si no perdio el jugador, continuo la partida if (vidas > 0) continue; } //Si se cumplio el timer del enemigo (dado por su velocidad), lo actualizo if (tempo+paso < clock()) { //Aumento puntaje puntos+=10; mostrarPuntos(); //Actualizo y luego evaluo si aumento la dificultad actualizarEnemigos(); evaluaNivel(); //Reinicio el timer tempo = clock(); } } }