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
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
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