Ayuda juego pilas

Tengo un problema:
Estamos haciendo un juego llamado “Planet Defender”, que se trata de un ovni que debe proteger a su planeta de unas rocas que se le acercan.
Acá dejo el link de descarga por si quieren verlo.

El problema que tenemos es con las colisiones, no podemos hacer que cuando el ovni choca a las piedras, exploten las piedras.

El codigo que puse para esto es así:

def eliminar_piedras(ovn, enem):
tab> enem.eliminar()
tab> puntos.aumentar(1)
pilas.colisiones.agregar(ovni, enemigo, romper)

(pongo >tab> en este mensaje para diferenciar donde hay espacios)

Pero el juego se ejecuta normalmente solo que al colisionar el ovni con las piedras no pasa nada. Ya probamos de todo y aún no encontramos la solución.

Oh, creo que te respondí este hilo por privado… no me había dado cuenta que estaba acá…

En fin, te reproduzco la respuesta para que otros miembros del foro también puedan verlo:

El juego está muy bueno!!!, tenía algunos problemas de tabulación y las colisiones estaban definidas sin usar etiquetas (lo que lo hacía difícil para encontrar el error).

Este es el código corregido:

# -*- encoding: utf-8 -*-
import pilasengine
import os
import random

pilas = pilasengine.iniciar()

planeta = pilas.actores.Planeta()
planeta.aprender('PuedeExplotar')
fondo = pilas.fondos.Espacio()

ovni = pilas.actores.Ovni()
ovni.etiquetas.agregar('ovni')
ovni.x = 100
ovni.aprender('moversecomocoche')

    
def romper(ovn, enem):
   enem.eliminar() 
   puntos.aumentar(1)
        
pilas.colisiones.agregar("ovni", "enemigo", romper)

def crear_enemigo():
    enemigo = pilas.actores.Piedra()
    x = random.randrange(-320, 320)
    y = random.randrange(-240, 240)
    enemigo.escala = 0.5
    enemigo.etiquetas.agregar('enemigo')
   
    enemigo.aprender("PuedeExplotar")

    if x >= 0 and x <= 100:
        x = 180
    elif x <= 0 and x >= -100:
        x = -180

    if y >= 0 and y <= 100:
        y = 180
    elif y <= 0 and y >= -100:
        y = -180

    enemigo.x = x
    enemigo.y = y

    enemigos.append(enemigo)

    tipo_interpolacion = ["lineal",
                          "aceleracion_gradual",
                          "desaceleracion_gradual",
                          "gradual"]

    interpolacion = random.choice(tipo_interpolacion)
    tiempo = 10
    pilas.utils.interpolar(enemigo, 'x', 0, duracion=tiempo, tipo=interpolacion)
    pilas.utils.interpolar(enemigo, 'y', 0, duracion=tiempo, tipo=interpolacion)
           

    if fin_de_juego:
        return False
    else:
        return True

def perder(planet, e):
    global fin_de_juego

    planeta.eliminar()
    ovni.eliminar()
    pilas.escena_actual().tareas.eliminar_todas()
    fin_de_juego = True
    pilas.avisar("Perdiste. Conseguiste %d puntos" %(puntos.obtener()))


pilas.colisiones.agregar("planeta", "enemigo", perder)
 

puntos = pilas.actores.Puntaje(x=-230, y=200, color=pilas.colores.blanco)
puntos.magnitud = 40


enemigos = []

fin_de_juego = False

sonido = pilas.actores.Sonido()

pilas.tareas.siempre(2, crear_enemigo)

aviso = pilas.avisar("No dejes que las piedras choquen con tu planeta, destruyelas para conseguir puntos")

pilas.ejecutar()

Avisanos si te funciona bien!!!

1 Like

Si funciona!! Muchas gracias!!