Juego de Disparos

Vamos a comentar el siguiente codigo del juego disparar a aceitunas

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import pilasengine

import random

pilas = pilasengine.iniciar()

# Variables y Constantes
balas_simples = pilasengine.actores.Banana [En esta linea ponemos al actor banana como municion para la torreta]
aceitunas = [] [Aqui ponemos a las aceitunas como conjunto vacio]
tiempo=6
fin_de_juego=False

# Funciones
def aceituna_destruida(disparo, enemigo):
# Eliminar la aceituna alcanzada
enemigo.eliminar() [Estas 2 lineas nos ayudan a que el enemigo se elimine tras recibir un disparo]
disparo.eliminar()
# Actualizar el marcador con un efecto bonito
puntos.escala = 0
puntos.escala = pilas.utils.interpolar(puntos, 'escala', 1, duracion=0.5)
puntos.aumentar(1)


def crear_aceituna():
# Crear un enemigo nuevo
enemigo = pilas.actores.Aceituna() [Aqui creamos al actor Aceituna que sera el enemigo]
# Hacer que se aparición sea con un efecto bonito
enemigo.escala = 0
enemigo.escala =pilas.utils.interpolar(enemigo, 'escala', 1.5, duracion=5) [Esta linea hace que la aceituna aparezca con una transicion de 5 segundos y su tamaño vaya aumentando hasta 1.5]
# Dotarle de la habilidad de que explote al ser alcanzado por un disparo
enemigo.aprender(pilas.habilidades.PuedeExplotar) [Esta linea hace que el enemigo aprenda la habilidad de explotar tras ser alcanzado por la banana]
# Situarlo en una posición al azar, no demasiado cerca del jugador
x = random.randrange(-320, 320) [Este bloque de lineas nos da la posicion de la X y la Y en la pantalla de juego de las aceitunas, es decir sus puntos de aparicion]
y = random.randrange(-240, 240)
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
a=random.randrange(-320, 320)
b=random.randrange(-1000, 1000)
enemigo.x = [a, b], 1
enemigo.y = [b, a], 1
# Añadirlo a la lista de enemigos
aceitunas.append(enemigo) [Aqui añadimos a las aceitunas como enemigo]
# Permitir la creación de enemigos mientras el juego esté en activo
if fin_de_juego:
return False
else:
return True

def perder(aceituna, enemigo):
# Indicar fin de juego y eliminar lo que ya no se necesita
global fin_de_juego
torreta.eliminar() [Elimina la torreta tras que una aceituna alcance la torreta]
pilas.tareas.eliminar_todas()
fin_de_juego = True
pilas.avisar("GAME OVER. Conseguiste %d puntos" % (puntos.obtener()))


# Usar un fondo estándar
pilas.fondos.Tarde() [Usa el fondo de Tarde para el fondo del juego]

# Añadir un marcador
puntos = pilas.actores.Puntaje(x=-230, y=200, color=pilas.colores.rojo) [Con esta linea añadimos el marcador de puntos y ponemos su posicion y color, en este caso rojo]
puntos.magnitud = 40

# Añadir el conmutador de Sonido
pilas.actores.Sonido()

# Añadir la torreta del jugador
torreta = pilas.actores.Torreta(municion_bala_simple=balas_simples,
enemigos=aceitunas,
cuando_elimina_enemigo=aceituna_destruida)
# Crear un enemigo cada segundo
pilas.tareas.agregar(1, crear_aceituna) [Esta linea hace que se cree una aceituna cada segundo]

# Añadir la colisión de enemigos con la torreta para finalizar el juego
pilas.colisiones.agregar(torreta, aceitunas, perder) [Tras el impacto de la aceituna con la torreta se acaba el juego]


# Arrancar el juego
pilas.ejecutar()

Comentarios