def __noaction_state(self): ''' @brief Método que actualiza al coche en su estado noaction(En marcha sin pulsar ningun boton de direccion) ''' #Según la tecla pulsada cambiamos de estado o no if keyboard.pressed(self.UP): self.old_state = gameobject.NOACTION self.state = gameobject.RUN if keyboard.pressed(self.DOWN): self.old_state = gameobject.NOACTION self.state = gameobject.REVERSE #Controlamos la desaceleración del mismo if self.actual_speed > self.desaceleration: self.actual_speed -= self.desaceleration elif self.actual_speed < -self.desaceleration: self.actual_speed += self.desaceleration else: self.actual_speed = 0 self.state = gameobject.NORMAL #Controlamos la rotación del coche self.control_rotation() #Y la trigonometria del mismo self.trigonometry()
def __noaction_state(self): ''' @brief Método que actualiza al coche en su estado noaction(En marcha sin pulsar ningun boton de direccion) ''' #Según la tecla pulsada cambiamos de estado o no if keyboard.pressed(self.UP): self.old_state = NOACTION self.state = RUN if keyboard.pressed(self.DOWN): self.old_state = NOACTION self.state = REVERSE #Controlamos la desaceleración del mismo if self.actual_speed > self.desaceleration: self.actual_speed -= self.desaceleration elif self.actual_speed < -self.desaceleration: self.actual_speed += self.desaceleration else: self.actual_speed = 0 self.state = NORMAL #Controlamos la rotación del coche self.control_rotation() #Y la trigonometria del mismo self.trigonometry()
def run(self): ''' Función que contiene el bucle principal del juego. Actualiza y dibuja el estado actual. ''' while not keyboard.quit(): self.clock.tick(self.fps) keyboard.update() self.screen.fill((0,0,0)) #self.__actual_state.update() #self.__actual_state.draw(screen) if keyboard.pressed(K_DOWN): self.circuit.move(0, self.circuit.get_y() + 50) elif keyboard.pressed(K_UP): self.circuit.move(0, self.circuit.get_y() - 50) self.circuit.draw(self.screen, 0) self.circuit.draw(self.screen, 1) self.circuit.draw(self.screen, 2) pygame.display.flip()
def run(self): ''' Función que contiene el bucle principal del juego. Actualiza y dibuja el estado actual. ''' while not keyboard.quit(): self.clock.tick(self.fps) keyboard.update() self.screen.fill((0,0,0)) #self.__actual_state.update() #self.__actual_state.draw(screen) if keyboard.pressed(K_DOWN): if self.circuit.get_y() < self.circuit.get_tile_height() * self.circuit.get_height() - self.screen.get_height(): self.circuit.move(self.circuit.get_x(), self.circuit.get_y() + 25) elif keyboard.pressed(K_UP): if self.circuit.get_y() > 0: self.circuit.move(self.circuit.get_x(), self.circuit.get_y() - 25) if keyboard.pressed(K_LEFT): if self.circuit.get_x() > 0: self.circuit.move(self.circuit.get_x() - 25, self.circuit.get_y()) elif keyboard.pressed(K_RIGHT): if self.circuit.get_x() < self.circuit.get_tile_width() * self.circuit.get_width() - self.screen.get_width(): self.circuit.move(self.circuit.get_x() + 25, self.circuit.get_y()) self.circuit.draw(self.screen, 0) self.circuit.draw(self.screen, 1) self.circuit.draw(self.screen, 2) pygame.display.flip()
def __update(self): ''' Movimiento básico sin actualización de estado. Actualmente si uso. ''' if keyboard.pressed(self.LEFT): self.actual_angle -= self.rotation_angle * self.actual_speed elif keyboard.pressed(self.RIGHT): self.actual_angle += self.rotation_angle * self.actual_speed if keyboard.pressed(self.UP): self.move(+1) elif keyboard.pressed(self.DOWN): self.move(-1) else: # Reduce la velocidad de manera gradual. if self.actual_speed > self.desaceleration: self.actual_speed -= self.desaceleration elif self.actual_speed < -self.desaceleration: self.actual_speed += self.desaceleration else: self.actual_speed = 0 angle = radians(self.actual_angle) self.dx = cos(angle) * self.actual_speed self.dy = sin(angle) * self.actual_speed self.update_position() self.update_image()
def control_rotation(self): ''' @brief Método que actualiza la rotación del coche ''' if keyboard.pressed(self.LEFT): self.actual_angle -= self.rotation_angle * self.max_speed elif keyboard.pressed(self.RIGHT): self.actual_angle += self.rotation_angle * self.max_speed
def __normal_state(self): ''' Control del estado normal, el coche esta detenido. ''' if keyboard.pressed(self.UP): self.state = RUN elif keyboard.pressed(self.DOWN): self.state = REVERSE
def control_rotation(self): ''' Control del cambio de dirección. ''' if keyboard.pressed(self.LEFT): self.actual_angle -= self.rotation_angle * self.actual_speed elif keyboard.pressed(self.RIGHT): self.actual_angle += self.rotation_angle * self.actual_speed
def __normal_state(self): ''' @brief Método que actualiza al coche en su estado normal ''' #Según la tecla pulsada cambiamos de estado o no if keyboard.pressed(self.UP): self.old_state = NORMAL self.state = RUN elif keyboard.pressed(self.DOWN): self.old_state = NORMAL self.state = REVERSE
def __normal_state(self): ''' @brief Método que actualiza al coche en su estado normal ''' #Según la tecla pulsada cambiamos de estado o no if keyboard.pressed(self.UP): self.old_state = gameobject.NORMAL self.state = gameobject.RUN elif keyboard.pressed(self.DOWN): self.old_state = gameobject.NORMAL self.state = gameobject.REVERSE
def __noaction_state(self): ''' Control del estado, no se pulsa ningún boton de dirección. ''' if keyboard.pressed(self.UP): state = RUN if keyboard.pressed(self.DOWN): state = REVERSE if self.actual_speed > self.desaceleration: self.actual_speed -= self.desaceleration elif self.actual_speed < -self.desaceleration: self.actual_speed += self.desaceleration else: self.actual_speed = 0 self.state = NORMAL self.control_rotation() self.trigonometry()
def __reverse_state(self): ''' Control del estado, marcha atrás. ''' self.move(-1) if keyboard.release(self.DOWN): self.state = NOACTION if keyboard.pressed(self.UP): self.state = RUN self.control_rotation() self.trigonometry()
def __run_state(self): ''' Control del estado, el coche va hacia el frente. ''' self.move(+1) if keyboard.release(self.UP): self.state = NOACTION if keyboard.pressed(self.DOWN): self.state = REVERSE self.control_rotation() self.trigonometry()
def __run_state(self): ''' @brief Método que actualiza al coche en su estado run(en marcha) ''' self.move(+1) #Según la tecla pulsada cambiamos de estado o no if keyboard.release(self.UP): self.old_state = gameobject.RUN self.state = gameobject.NOACTION if keyboard.pressed(self.DOWN): self.old_state = gameobject.RUN self.state = gameobject.REVERSE #Controlamos la rotación del coche self.control_rotation() #Y la trigonometria del mismo self.trigonometry()
def __run_state(self): ''' @brief Método que actualiza al coche en su estado run(en marcha) ''' self.move(+1) #Según la tecla pulsada cambiamos de estado o no if keyboard.release(self.UP): self.old_state = RUN self.state = NOACTION if keyboard.pressed(self.DOWN): self.old_state = RUN self.state = REVERSE #Controlamos la rotación del coche self.control_rotation() #Y la trigonometria del mismo self.trigonometry()
def __reverse_state(self): ''' @brief Método que actualiza al coche en su estado de marcha atras ''' self.move(-1) #Controlamos la desaceleración del mismo if keyboard.release(self.DOWN): self.old_state = gameobject.REVERSE self.state = gameobject.NOACTION if keyboard.pressed(self.UP): self.old_state = gameobject.REVERSE self.state = gameobject.RUN #Controlamos la rotación del coche self.control_rotation() #Y la trigonometria del mismo self.trigonometry()
def __reverse_state(self): ''' @brief Método que actualiza al coche en su estado de marcha atras ''' self.move(-1) #Controlamos la desaceleración del mismo if keyboard.release(self.DOWN): self.old_state = REVERSE self.state = NOACTION if keyboard.pressed(self.UP): self.old_state = REVERSE self.state = RUN #Controlamos la rotación del coche self.control_rotation() #Y la trigonometria del mismo self.trigonometry()
def run(self): ''' Función que contiene el bucle principal del juego. Actualiza y dibuja el estado actual. ''' while not keyboard.quit(): self.clock.tick(self.fps) keyboard.update() if keyboard.pressed(K_UP) or self.__actual_state.get_status() == 'done': print "pulsandooo" #self.__actual_state = particle.SystemParticle(400, 300, ['particle', 'particle2'], 100, 1, 10, 300, 1) self.__actual_state.restart() self.screen.fill((255,255,255)) self.__actual_state.update() self.__actual_state.draw(self.screen) pygame.display.flip()
def update(self): ''' @brief Método que actualiza la intro ''' #Si vamos de negro a transparente if self.to_opaque: #Si pulsamos alguna de las teclas cancelamos al intro if keyboard.pressed(pygame.K_ESCAPE) or \ keyboard.pressed(pygame.K_SPACE) or \ keyboard.pressed(pygame.K_RETURN): self.quit = True #Vamos aumentado el alpha segun la velocidad indicada self.actual_alpha += self.speed self.surface.set_alpha(self.actual_alpha) #Si la superficie es completamente transparente cambiamos de estado if self.actual_alpha >= 255: self.to_opaque = False #Si vamos de transparente a negro else: #si pulsamos alguna de las teclas cancelamos la intro if keyboard.pressed(pygame.K_ESCAPE) or \ keyboard.pressed(pygame.K_SPACE) or \ keyboard.pressed(pygame.K_RETURN): self.quit = True #Vamos disminuyendo el canal alpha de la superficie self.actual_alpha -= self.speed self.surface.set_alpha(self.actual_alpha) #Cuando llegamos de nuevo al negro completo, indicamos que la #intro ha terminado if self.actual_alpha <= 0: self.quit = True #Si la intro se ha terminado o se ha cancelado if self.quit: print "Al menú principal" #Pasamos al menu principal self.game.change_state(mainmenu.MainMenu(self.game, 'menu/mainmenu.xml'))
def update(self): ''' @brief Método encargado de actualizar todos los componentes del circuito ''' if self.fadein: self.actual_alpha -= self.fade_speed self.fade_surface.set_alpha(self.actual_alpha) if self.actual_alpha <= 0: self.fadein = False self.actual_state = 'countdown' else: #Si estamos en la cuenta atrás actualizamos la cuenta atrás if self.actual_state == 'countdown': self.count_down.update() for animation in self.static_animations: animation.update() #Si se ha completado cambiamos el estado del juego if self.count_down.complete(): if self.music_file and config.Config().get_current_music() != self.music_file: config.Config().set_current_music(self.music_file) pygame.mixer.music.load(data.get_path_music(self.music_file)) pygame.mixer.music.play(-1) self.actual_state = 'race' self.actual_time.start() self.total_time.start() #Si estamos en pause, actualizamos el menú de pause elif self.actual_state == 'pause': self.pause.update() #Si estamos el estado en carrera, actualizamos todos los estado de carrera elif self.actual_state == 'race': if not self.complete: #Actualizamos el tiempo actual self.actual_time.update() self.total_time.update() #Actualizamos al coche del jugador. self.player.update() #Actualizamos la IA. for ia_car in self.ia_cars: #Actualizamos el coche de la IA ia_car[0].update() if not self.complete: #Actualizamos los puntos de control para la IA dada ia_car[1].update(ia_car[0]) for ball in self.balls: ball.update() #Actualizamos las balas. for bullet in self.bullets: bullet.update() #Actualizamos las balas. for oil in self.oils: oil.update() for gum in self.gums: gum.update() for i in range(len(self.advices)): self.advices[i].update() i = 0 deleted = False while i < len(self.advices) and not deleted: if self.advices[i].complete(): del self.advices[i] deleted = True if self.complete: self.fadeout = True i += 1 #Controlamos el scroll de la pantalla self.scroll_control() #Controlamos posibles colisiones self.check_collisions() if not self.complete: #Controlamos todos los puntos de control self.checkpoints.update(self.player, True) #Obtenemos la posicion del jugador actualizando el marcador self.position_board.update((self.player, self.checkpoints), self.ia_cars) #Si pulsamos el espacio o escape, cambiamos al estado pause if (keyboard.pressed(config.Config().get_pause_key()) \ or not pygame.key.get_focused()) and not self.fadeout: self.actual_state = 'pause' pygame.mixer.music.pause() self.actual_time.pause() self.player.set_state(gameobject.NOACTION) if self.fadeout: self.actual_alpha += self.fadeout_speed self.fade_surface.set_alpha(self.actual_alpha) if self.actual_alpha >= 255: self.fadeout = False if config.Config().get_mode() == config.TIMED: self.game_mode.completed_race(self.player, self.total_time, self.best_lap_player, self.lap_times) else: self.game_mode.completed_race(self.position_board.get_all_players_position()) for animation in self.static_animations: animation.update() if self.actual_state != 'pause': #Actualizamos las cajas de items for box in self.items_box: if self.on_screen(box): box.update()
def update(self): ''' @brief Método encargado de actualizar todos los componentes del circuito ''' if self.fadein: self.actual_alpha -= self.fade_speed self.fade_surface.set_alpha(self.actual_alpha) if self.actual_alpha <= 0: self.fadein = False self.actual_state = 'countdown' else: #Si estamos en la cuenta atrás actualizamos la cuenta atrás if self.actual_state == 'countdown': self.count_down.update() for animation in self.static_animations: animation.update() #Si se ha completado cambiamos el estado del juego if self.count_down.complete(): if self.music_file and config.Config().get_current_music( ) != self.music_file: config.Config().set_current_music(self.music_file) pygame.mixer.music.load( data.get_path_music(self.music_file)) pygame.mixer.music.play(-1) self.actual_state = 'race' self.actual_time.start() self.total_time.start() #Si estamos en pause, actualizamos el menú de pause elif self.actual_state == 'pause': self.pause.update() #Si estamos el estado en carrera, actualizamos todos los estado de carrera elif self.actual_state == 'race': if not self.complete: #Actualizamos el tiempo actual self.actual_time.update() self.total_time.update() #Actualizamos al coche del jugador. self.player.update() #Actualizamos la IA. for ia_car in self.ia_cars: #Actualizamos el coche de la IA ia_car[0].update() if not self.complete: #Actualizamos los puntos de control para la IA dada ia_car[1].update(ia_car[0]) for ball in self.balls: ball.update() #Actualizamos las balas. for bullet in self.bullets: bullet.update() #Actualizamos las balas. for oil in self.oils: oil.update() for gum in self.gums: gum.update() for i in range(len(self.advices)): self.advices[i].update() i = 0 deleted = False while i < len(self.advices) and not deleted: if self.advices[i].complete(): del self.advices[i] deleted = True if self.complete: self.fadeout = True i += 1 #Controlamos el scroll de la pantalla self.scroll_control() #Controlamos posibles colisiones self.check_collisions() if not self.complete: #Controlamos todos los puntos de control self.checkpoints.update(self.player, True) #Obtenemos la posicion del jugador actualizando el marcador self.position_board.update((self.player, self.checkpoints), self.ia_cars) #Si pulsamos el espacio o escape, cambiamos al estado pause if (keyboard.pressed(config.Config().get_pause_key()) \ or not pygame.key.get_focused()) and not self.fadeout: self.actual_state = 'pause' pygame.mixer.music.pause() self.actual_time.pause() self.player.set_state(gameobject.NOACTION) if self.fadeout: self.actual_alpha += self.fadeout_speed self.fade_surface.set_alpha(self.actual_alpha) if self.actual_alpha >= 255: self.fadeout = False if config.Config().get_mode() == config.TIMED: self.game_mode.completed_race(self.player, self.total_time, self.best_lap_player, self.lap_times) else: self.game_mode.completed_race( self.position_board.get_all_players_position()) for animation in self.static_animations: animation.update() if self.actual_state != 'pause': #Actualizamos las cajas de items for box in self.items_box: if self.on_screen(box): box.update()
def update(self): ''' @brief Método encargado de actualizar todos los componentes del circuito ''' #Si estamos en la cuenta atrás actualizamos la cuenta atrás if self.actual_state == 'countdown': self.count_down.update() #Si se ha completado cambiamos el estado del juego if self.count_down.complete(): self.actual_state = 'race' self.actual_time.start() self.total_time.start() #Si estamos en pause, actualizamos el menú de pause elif self.actual_state == 'pause': self.pause.update() #Si estamos el estado en carrera, actualizamos todos los estado de carrera elif self.actual_state == 'race': #Actualizamos el tiempo actual self.actual_time.update() self.total_time.update() #Actualizamos al coche del jugador. self.player.update() #Actualizamos la IA. for ia_car in self.ia_cars: ia_car.update(self.player.rect.x, self.player.rect.y) #Actualizamos las cajas de items for box in self.items_box: if self.on_screen(box): box.update() for ball in self.balls: ball.update() #Actualizamos las balas. for bullet in self.bullets: bullet.update() #Actualizamos las balas. for oil in self.oils: oil.update() #Controlamos el scroll de la pantalla self.scroll_control() #Controlamos posibles colisiones self.check_collisions() #Controlamos todos los puntos de control self.checkpoints.update(self.player) #Si pulsamos el espacio o escape, cambiamos al estado pause if keyboard.pressed(K_ESCAPE) or keyboard.pressed(K_p) \ or not pygame.key.get_focused(): self.actual_state = 'pause' self.actual_time.pause() self.player.set_state(gameobject.NOACTION)