示例#1
0
  /*
   * Durante el periodo de juego en la actualizacion se realizan diferentes comprobaciones
   * y acciones.
   */
  private void updateRunning(float deltaTime) {
    // Capturamos los eventos de usuario con la pantalla
    List<TouchEvent> touchEvents = game.getInput().getTouchEvents();
    int len = touchEvents.size();
    for (int i = 0; i < len; i++) {
      TouchEvent event = touchEvents.get(i);
      // comprobamos que el evento actual es de levantar el dedo.
      if (event.type != TouchEvent.TOUCH_UP) continue;

      // inicializamos el punto de pantalla
      touchPoint.set(event.x, event.y);
      // lo convertimos en coordenadas del juego.
      guiCam.touchToWorld(touchPoint);

      // Comprobamos si la pulsacion ha sido sobre el icono de pausa.
      if (OverlapTester.pointInRectangle(pauseBounds, touchPoint)) {
        // En caso afirmativo cambiamos el estado del juego y reproducimos un sonido.
        Assets.playSound(Assets.clickSound);
        state = GAME_PAUSED;
        return;
      }
      if (OverlapTester.pointInRectangle(moveRightBounds, touchPoint)) {
        world.bob.velocity.x = 10 / 10 * Bob.BOB_MOVE_VELOCITY;
        world.bob.update(deltaTime);
      }
      if (OverlapTester.pointInRectangle(moveLeftBounds, touchPoint)) {
        world.bob.velocity.x = -10 / 10 * Bob.BOB_MOVE_VELOCITY;
        world.bob.update(deltaTime);
      }
    }

    // Actualizamos la puntuacion actual
    world.update(deltaTime, game.getInput().getAccelX());
    if (world.score != lastScore) {
      lastScore = world.score;
      scoreString = "" + lastScore;
    }
    // Comprobamos si hemos llegado al destino, para finalizar el juego.
    if (world.state == World.WORLD_STATE_NEXT_LEVEL) {
      state = GAME_LEVEL_END;
    }
    // Comprobamos si el estado del mundo es game over, para finalizarel juego.
    if (world.state == World.WORLD_STATE_GAME_OVER) {
      state = GAME_OVER;
      // Si la puntuacion obtenida es mejor a las existintes lo indicamos
      if (lastScore >= Settings.highscores[4]) scoreString = "nuevo record: " + lastScore;
      else scoreString = "puntos: " + lastScore;
      // Actualizamos las puntuaciones y guardamos el fichero de propiedades.
      Settings.addScore(lastScore);
      Settings.save(game.getFileIO());
    }
  }
示例#2
0
  @Override
  public void present(float deltaTime) {
    GL10 gl = glGraphics.getGL();
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    gl.glEnable(GL10.GL_TEXTURE_2D);

    // En primer lugar representamos el mundo sobre el que jugaremos.
    renderer.render();

    guiCam.setViewportAndMatrices();
    gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
    batcher.beginBatch(Assets.items);

    // En segundo lugar representaremos los elementos de la UI segun
    // el estado en el que nos encontremos.

    switch (state) {
      case GAME_READY:
        presentReady();
        break;
      case GAME_RUNNING:
        presentRunning();
        break;
      case GAME_PAUSED:
        presentPaused();
        break;
      case GAME_LEVEL_END:
        presentLevelEnd();
        break;
      case GAME_OVER:
        presentGameOver();
        break;
    }
    batcher.endBatch();
    gl.glDisable(GL10.GL_BLEND);
    fpsCounter.logFrame();
  }
示例#3
0
  /*
   * En el metodo actualizar pausa, simplemente controlamos si las pulsaciones del usuario
   * han interaccionado con nuestro menu de opciones.
   */
  private void updatePaused() {
    List<TouchEvent> touchEvents = game.getInput().getTouchEvents();
    int len = touchEvents.size();
    for (int i = 0; i < len; i++) {
      TouchEvent event = touchEvents.get(i);
      if (event.type != TouchEvent.TOUCH_UP) continue;

      touchPoint.set(event.x, event.y);
      guiCam.touchToWorld(touchPoint);

      if (OverlapTester.pointInRectangle(resumeBounds, touchPoint)) {
        Assets.playSound(Assets.clickSound);
        state = GAME_RUNNING;
        return;
      }

      if (OverlapTester.pointInRectangle(quitBounds, touchPoint)) {
        Assets.playSound(Assets.clickSound);
        game.setScreen(new MainMenuScreen(game));
        return;
      }
    }
  }