Buenas! estas últimas 3 semanas estuve codificando mi juego de proyecto final. Se podía realizar cualquier juego a gusto, por el mismo motivo recurrí a un código que había hecho en el 2013, y traté de amoldarlo a pilas-engine v1.4.11.
El juego elegido se basaba en preguntas, con 3 respuestas posibles de las cuales solo 1 es correcta. Para ello en pilas utilicé al actor banana(3), y al actor mono.
Gracias a el manual de pilas y al foro, logré realizar mi juego. El mismo aún tiene cosas para modificar, como visuales y quizá de movimiento pero mi objetivo y lo que se me pedía era entregar un trabajo funcional mas allá de que carece de “cosas decorativas”.
Les dejo un video que subí a youtube para que vean que funciona correctamente.
Dejo la imagen que coloque de fondo en la opción ayuda:
Sin más les dejo el código debajo para que puedan verlo y modificarlo a gusto.
import pilasengine
pilas = pilasengine.iniciar()
class EscenaMenu(pilasengine.escenas.Escena):
def iniciar(self):
self.fondo_menu = pilas.fondos.Volley()
dialogo=pilas.actores.Dialogo()
self.mono1 = pilas.actores.Mono()
self.mono1.x=180
dialogo.decir(self.mono1, "Presiona en mi")
dialogo.decir(self.mono1, "Si respondes 10 veces bien ganas, si erras 3 veces pierdes")
dialogo.comenzar()
self.Mi_Menu = pilas.actores.Menu(
[
(u"Jugar", self.Ir_al_juego),
(u"Ayuda", self.Ayuda),
(u"Salir", self.Salir_de_Pilas)
])
Nombre_de_juego = pilas.actores.Texto(u"Comelon el Respondon")
Nombre_de_juego.color = pilas.colores.rojo
Nombre_de_juego.y = 170
def actualizar(self):
pass
def Ayuda(self):
pilas.escenas.EscenaAyuda()
def Salir_de_Pilas(self):
pilas.terminar()
def Ir_al_juego(self):
pilas.escenas.EscenaJuego()
class EscenaAyuda(pilasengine.escenas.Escena):
def iniciar(self):
self.fondo_juego=pilas.fondos.Noche()
self.fondo_juego.imagen="fondodeljuego1.png"
self.Boton_Volver =pilas.interfaz.Boton("Volver al Menu")
self.Boton_Volver.y = 220
self.Boton_Volver.x = 250
self.Boton_Volver.conectar(self.Volver)
def Volver(self):
pilas.escenas.EscenaMenu()
def actualizar(self):
pass
class EscenaJuego(pilasengine.escenas.Escena):
def iniciar(self):
self.nombre=raw_input("Ingrese su nombre: ")
self.lista=[["El albinismo se presenta por la carencia de:", "Pigmentacion", "Calcio", "Vitamina A"],["Al periodico que se publica en horas de la tarde, se denomina", "Vespertino", "Clandestino", "Matutino"],["Es el paso del agua del estado liquido al estado gaseoso", "Evaporacion", "Sublimacion", "Infiltracion"], ["Que elemento quimico es representado por el simbolo P?", "Fosforo", "Boro", "Rubidio"],["Segun el refran, el que se acuesta a dormir, es porque cria:", "Fama", "Flojera", "Suenio"], ["Cual es el idioma oficial de Israel?", "Hebreo", "Griego", "Japones"], ["El timbal es un instrumento de:", "Percusion", "Viento metal", "Cuerda"],["A que tipo de animales se refiere la palabra aviario?", "Aves", "Peces", "Moluscos"],["En la mitologia griega, Eros es considerado el dios del:", "Amor", "Miedo", "Odio"], ["Cual de estos animales es un rumiante?", "La vaca", "La Ardilla", "El loro"],["En que pais se encuentra la torre de Pisa:", "Italia", "Francia", "Espania"],["Quien pinto la ultima cena:", "Leonardo Da Vinci", "Miguel Angel Buonarrotti", "Benito Quinquela Martin"],["Que son los humanos?:","Omnivoros", "Carnivoros", "Herbivoros"],["En que anio llego Cristobal Colon a America?:", "1492", "1490", "1495"],["Quien es el padre del Psicoanalisis?:","Sigmund Freud", "Carl Jung","Thomas Freud"],["Cual es el pais mas grande del mundo?:", "Rusia", "Estados Unidos", "Alemania"],["Donde se encuentra la famosa Torre Eiffel?:", "Francia", "Ecuador", "Croacia"],["Que deporte practicaba Michael Jordan?:","Basquet","Tenis","Futbol"],["En que anio comenzo la Segunda Guerra Mundial?:","1939","1918","1945"],["Cual es el pais mas poblado de la tierra?", "China", "Japon", "Suecia"]]
self.fondo_juego = pilas.fondos.Tarde()
self.puntaje = pilas.actores.Puntaje(color="rojo") #self
self.puntaje.x = -150 #self
self.puntaje.y = -190 #self
self.puntaje.valor = 0 #añadido
self.correctosaparecer=pilas.actores.Texto("Correctos:")
self.correctosaparecer.x=-220
self.correctosaparecer.y=-190
self.error=pilas.actores.Puntaje(color="rojo")
self.error.valor=0
self.error.x=-150
self.error.y=-220
self.incorrectosaparecer=pilas.actores.Texto("Incorrectos:")
self.incorrectosaparecer.x=-230
self.incorrectosaparecer.y=-220
self.mono = pilas.actores.Mono()
self.mono.escala = 0.8 #añadido, el mono era muy grande
self.mono.aprender('arrastrable') #modificado
self.mono.aprender('MoverseConElTeclado') #modificado
self.mono.decir("Bienvenido/a "+ self.nombre + " puedes arrastrarme")
self.mono.x=[0,200],1
self.Boton_Volver =pilas.interfaz.Boton("Volver al Menu")
self.Boton_Volver.y = -220
self.Boton_Volver.x = 250
self.Boton_Volver.conectar(self.Volver)
#Agrego las colisiones
pilas.colisiones.agregar('banana', 'mono', self.el_mono_come)#añadido
#Agrego tarea
pilas.tareas.agregar(3, self.Preguntando)
def Reiniciar(self):
# Obtiene todos los actores de la pantalla.
actores = pilas.actores.listar_actores()
# Elimina todos los actores excepto el fondo y el puntaje
for actor in actores:
if actor not in [self.puntaje, self.fondo_juego, self.mono,self.error,self.correctosaparecer,self.incorrectosaparecer,self.Boton_Volver]:
actor.eliminar()
# Genera una pregunta nueva
self.Preguntando()
def Preguntando(self):
self.b1=pilas.actores.Banana()
self.b1.x=-300
self.b1.y=100
self.b1.esverdadera=False
self.b2=pilas.actores.Banana()
self.b2.x=-300
self.b2.y=0
self.b2.esverdadera=False
self.b3=pilas.actores.Banana()
self.b3.x=-300
self.b3.y=-100
self.b3.esverdadera=False
self.poslista=pilas.azar(0,19)
self.encuentrapreg=self.lista[self.poslista][0]
self.mostrar_pregunta=pilas.actores.Texto(self.encuentrapreg)
self.mostrar_pregunta.y=220
self.mostrar_pregunta.escala=0.8
self.respuesta_correcta = self.lista[self.poslista][1] #Respuesta Correcta
self.respuesta_incorrecta_1 = self.lista[self.poslista][2] #Respuesta incorrecta 1
self.respuesta_incorrecta_2 = self.lista[self.poslista][3] #Respuesta incorrecta 2
self.rta_1 = pilas.actores.Texto("")
self.rta_1.x=-250
self.rta_1.y=100
self.rta_2 = pilas.actores.Texto("")
self.rta_2.x=-250
self.rta_2.y=0
self.rta_3 = pilas.actores.Texto("")
self.rta_3.x=-250
self.rta_3.y=-100
#Banana verdadera
self.bananas_posibles = [self.b1,self.b2,self.b3]
self.textos_posibles = [self.rta_1,self.rta_2,self.rta_3]
self.indiceok=pilas.azar(0,2)
self.banana_verdadera=self.bananas_posibles[self.indiceok]
self.banana_verdadera.esverdadera=True
self.texto_respuesta_verdadera=self.textos_posibles[self.indiceok]
self.texto_respuesta_verdadera.texto=str(self.respuesta_correcta)
if self.b1.esverdadera:
self.rta_1.texto=str(self.respuesta_correcta)
self.rta_2.texto = str(self.respuesta_incorrecta_1)
self.rta_3.texto = str(self.respuesta_incorrecta_2)
elif self.b2.esverdadera:
self.rta_2.texto=str(self.respuesta_correcta)
self.rta_1.texto = str(self.respuesta_incorrecta_1)
self.rta_3.texto = str(self.respuesta_incorrecta_2)
elif self.b3.esverdadera:
self.rta_3.texto= str(self.respuesta_correcta)
self.rta_1.texto = str(self.respuesta_incorrecta_1)
self.rta_2.texto = str(self.respuesta_incorrecta_2)
def ganaste(self):
actores = pilas.actores.listar_actores()
# Elimina todos los actores excepto el fondo y el puntaje
for actor in actores:
if actor not in [self.mono]:
actor.eliminar()
self.fondo_juego=pilas.fondos.Noche()
self.Boton_Volver =pilas.interfaz.Boton("Volver al Menu")
self.Boton_Volver.y = 220
self.Boton_Volver.x = 250
self.Boton_Volver.conectar(self.Volver)
self.puntajefinal=pilas.actores.Texto(str(self.puntaje.valor))
self.puntajefinal.escala=2
self.cartelfelicidades=pilas.actores.Texto("Felicidades "+self.nombre+" has ganado")
self.cartelfelicidades.y=220
self.cartelfelicidades=pilas.actores.Texto("Comelon esta feliz y lleno")
self.cartelfelicidades.y=150
self.cartelpuntaje=pilas.actores.Texto("Tu puntaje es: ")
self.cartelpuntaje.x=-100
self.errorestotales=pilas.actores.Texto(str(self.error.valor))
self.errorestotales.y=-100
self.errorestotales.escala=2
self.cartelerror=pilas.actores.Texto("Cantidad de errores: ")
self.cartelerror.x=-150
self.cartelerror.y=-100
self.mono.sonreir()
def perdiste(self):
actores = pilas.actores.listar_actores()
# Elimina todos los actores excepto el fondo y el puntaje
for actor in actores:
if actor not in [self.mono]:
actor.eliminar()
self.fondo_juego=pilas.fondos.Noche()
self.Boton_Volver =pilas.interfaz.Boton("Volver al Menu")
self.Boton_Volver.y = 220
self.Boton_Volver.x = 250
self.Boton_Volver.conectar(self.Volver)
self.puntajefinal=pilas.actores.Texto(str(self.puntaje.valor))
self.puntajefinal.escala=2
self.cartelfelicidades=pilas.actores.Texto(self.nombre+ " PERDISTE :(")
self.cartelfelicidades.y=220
self.cartelfelicidades=pilas.actores.Texto("Comelon se enfermo")
self.cartelfelicidades.y=150
self.cartelpuntaje=pilas.actores.Texto("Tu puntaje es: ")
self.cartelpuntaje.x=-100
self.errorestotales=pilas.actores.Texto(str(self.error.valor))
self.errorestotales.y=-100
self.errorestotales.escala=2
self.cartelerror=pilas.actores.Texto("Cantidad de errores: ")
self.cartelerror.x=-150
self.cartelerror.y=-100
self.mono.gritar()
def Volver(self):
pilas.escenas.EscenaMenu()
def actualizar(self):
pass
def el_mono_come(self, bananas, mono):
if not bananas.esverdadera: #bananas es la banana colisionada
if self.error.valor<2:
pilas.camara.vibrar()
bananas.eliminar()
mono.gritar()
mono.decir("MAL MAL MAL")
self.error.aumentar() #aumenta 1 error. En total puede ser hasta 3 errores.
pilas.tareas.agregar(3, self.Reiniciar)
else:
pilas.avisar("Fin del juego")
self.error.aumentar()
self.perdiste()
else:
if self.puntaje.valor<9:
bananas.eliminar() #hay que eliminar la banana colisionada
mono.rotacion=[0,360]
mono.decir("Muy bien")
estrella = pilas.actores.Estrella()
estrella.x = bananas.x
estrella.y = bananas.y
estrella.escala = 0.2
estrella.escala = [2, 1] * 2
self.puntaje.aumentar()
pilas.tareas.agregar(3, self.Reiniciar)
else:
pilas.avisar("Felicidades has ganado")
self.puntaje.aumentar()
self.ganaste()
def Volver(self):
pilas.escenas.EscenaMenu()
def actualizar(self):
pass
pilas.escenas.vincular(EscenaAyuda)
pilas.escenas.vincular(EscenaMenu)
pilas.escenas.vincular(EscenaJuego)
pilas.escenas.EscenaMenu()
pilas.ejecutar()
Le agradezco a @jordinur por la ayuda que me brindó y el tiempo que se tomó en contestar mis consultas.
Espero les sirva y les guste.
Saludos, Maxi.