Ayuda Juego Chavito

Saludos

Con los niños estamos preparando un juego para mostrar las ventajas de PilasEngine en el proximo FLISoL y estoy trabado en algo, me gustaría que me ayuden, no logro hacer las colisiones entre las Tortas de Jamón y el Chavito por ende si no tengo eso el puntaje no aumenta, el código lo subí en github en el siguiente enlace

Gracias de antemano

1 Like

Hola @Statick !!!, que buena pinta tiene el juego :smile:

Lo probé en mi equipo y le hice unos cambios para que funcione, me parece que tenemos un bug con las colisiones entre grupos…

Para hacerlo funcionar usé colisiones con etiquetas, Etiquetas - pilas-engine, y funcionó bien.

Otra cosa que le modifiqué es el area de colisión del chavo y las tortas de jamón :smile:

Te paso un video de cómo quedó:

Ah, y te adjunto el código:

# -*- coding:utf-8 -*-
"""
Autor: @Statick
Objetivo del Juego: Atrapar la mayor cantidad de Tortas de Jamon que caen del cielo

"""

#Importamos la Biblioteca de Pilas-Engine
import pilasengine
import random

#Iniciando PilasEngine en un sola variable parara facilitar la programación
pilas = pilasengine.iniciar()


pilas.reiniciar_si_cambia(__file__)

#Declarando la clase Chavo
class Chavo(pilasengine.actores.Actor):


    #Creando la función iniciar del actor chavo
    def iniciar(self):

        self.imagen = "data/chavo.png"
        self.y = -144
        self.escala = 0.9
        self.etiquetas.agregar('chavo')
        self.figura_de_colision = pilas.fisica.Rectangulo(0, 0, 60, 170, sensor=True)

    #Creando la función actualizar del actor chavo
    def actualizar(self):

        #Haciendo que el actor chavo se mueva a la derecha con tecla derecha
        if pilas.control.izquierda:
            self.x -= 5
            self.espejado = True

        if self.x <= -280:
                self.x = -280

	#Haciendo que el actor chavo se mueva a la izquierda con la tecla izquierda
        if pilas.control.derecha:
            self.x += 5
            self.espejado = False

        if self.x >= 280:
                self.x = 280

#Creando la clase Torta de Jamon
class Torta_de_Jamon(pilasengine.actores.Aceituna):

    #Inicializando la clase Torta de Jamon
    def iniciar(self):
        self.imagen = "data/torta_de_jamon.png"
        self.aprender(pilas.habilidades.PuedeExplotarConHumo)
        self.x = pilas.azar(-280, 280)
        self.y = 290
        self.velocidad = pilas.azar(5, 30)/10.0
        self.etiquetas.agregar('torta')
        self.figura_de_colision = pilas.fisica.Rectangulo(0, 0, 60, 40, sensor=True)

    #Creando función actualizar
    def actualizar(self):
        self.rotacion += 5
        self.y -= self.velocidad

        #Eliminar el objeto cuando sale de la pantalla.
        if self.y < -300:
            self.eliminar()

#Agregando Fondo
fondo = pilas.fondos.Fondo()
fondo.imagen = pilas.imagenes.cargar("data/vecindad_fondo.jpg")

#Creando el grupo tortas
tortas = pilas.actores.Grupo()

#Creando la función crear_torta, esta función permite crear los enemigos
def crear_torta():
    actor = Torta_de_Jamon(pilas)
    tortas.agreagar(actor)

#Agregar la tarea de crear el enemigo cada 0.5 segundos
pilas.tareas.siempre(1, crear_torta)

#crear el objeto chavo
chavo = Chavo(pilas)

#Agregando el Puntaje
puntaje = pilas.actores.Puntaje(-280, 200, color = pilas.colores.blanco)


#Crear la función que permite al objeto chavo comer las Tortas de Jamon
def cuando_toca_torta(v, i):
    i.eliminar()
    puntaje.aumentar(1)
    puntaje.escala = 2
    puntaje.escala = [1],0.2
    puntaje.rotacion = random.randint(30, 60)
    puntaje.rotacion = [0], 0.2


pilas.colisiones.agregar("chavo", "torta", cuando_toca_torta)


pilas.avisar(u"Intente atrapar la mayor cantidad de Tortas de Jamon")

pilas.ejecutar()
1 Like

Excelente gracias

Lo seguire mejorando, los comentarios son por los niños, es necesario documentar todo para que sepan para que sirve cada linea de código y porque es necesaria