Que tal? Mucho gusto. Mi nombre es Damián. Este es mi primer lenguaje Python2, luego de averiguar mucho por la web y decidirme a que aprender opte por python. Entre otros tantos lenguajes, y me convenci a mi mismo que la mejor forma de avanzar más rapido es con la practica y teoria en conjunto. Así que, ¿Qué mejor practica que el desarrollo de un juego?. Luego de buscar un poco, entendi lo de librerias y otras cosas, de ayudas externas para adelantar el trabajo y di con este engine. Pilas realmente me resulta algo confuso ya que todavia no tengo grandes conocimientos del lenguaje base, pero creo que lo lograre dominar. Por ahora vengo a consultar y preguntar por un posible bug. Este es el codigo que llevo escribiendo:
#Importacion e inicializacion de motor.
import shelve
import pilas
from pilas.escenas import Normal
pilas.iniciar() #Funcion de inicializacion, con parametros. Faltan argumentos colocar.
#Variables externas e internas.
#Funciones
#Funciones y clases del menu de intro.
class iniciar(Normal):
def __init__(self):
Normal.__init__(self)
fondo = pilas.actores.Actor(pilas.imagenes.cargar("Recursos/Imagenes/Productor.jpg"))
pilas.eventos.pulsa_tecla.conectar(self.cuando_pulsa_tecla)
fondo.transparencia = [90], 10
def cuando_pulsa_tecla(self, evento):
if evento.codigo == "q" or "w" or "e" or "r" or "t" or "y" or "u" or "i" or "o" or "p" or "a" or "s" or "d" or "f" or "g" or "h" or "j" or "k" or "l" or "z" or "x" or "c" or "v" or "b" or "n" or "m" or 4 or 3 or 5 or 2 or 1 or 6 or "F1" or "F2" or "F3" or "F4" or "F5" or "F6" or "F7" or "F8" or "F9" or "F10" or "F11" or "F12":
warsong_logo_menu()
class warsong_logo_menu(Normal):
def __init__(self):
Normal.__init__(self)
fondo = pilas.actores.Actor(pilas.imagenes.cargar("Recursos/Imagenes/Logo.jpg"))
pilas.eventos.pulsa_tecla.conectar(self.cuando_pulsa_tecla)
fondo.transparencia = [90], 10
def cuando_pulsa_tecla(self, evento):
if evento.codigo == "q" or "w" or "e" or "r" or "t" or "y" or "u" or "i" or "o" or "p" or "a" or "s" or "d" or "f" or "g" or "h" or "j" or "k" or "l" or "z" or "x" or "c" or "v" or "b" or "n" or "m" or 1 or 2 or 3 or 4 or 5 or 6 or "F1" or "F2" or "F3" or "F4" or "F5" or "F6" or "F7" or "F8" or "F9" or "F10" or "F11" or "F12":
menu_juego()
def menu_juego():
fondo = pilas.actores.Actor(pilas.imagenes.cargar("Recursos/Imagenes/Fondo_Menu.jpg"))
fondo.transparencia = 100
fondo.transparencia = [0], 5
def selecciona_iniciar():
pilas.actores.utils.destruir_a_todos()
dificultades()
def selecciona_continuar():
if shelve.open("Data.dat")["guardado"] == "1":
pass
elif shelve.open("Data.dat")["guardado"] == "0":
pilas.avisar("No hay ninguna partida guardada.")
def selecciona_creditos():
creditos = pilas.actores.Texto("Creador General: DarkDemi\n\n\n\n\nRecursos: La web en general.\n\n\n\n\nEngine: Pilas Engine\n\n\n\n\nLenguaje: Python2", y=-100)
creditos.y = [1000], 20
menu.x = [-500, menu.x], 20
def selecciona_salir():
pilas.terminar()
opciones = [
('Iniciar', selecciona_iniciar),
('Continuar', selecciona_continuar),
('Creditos', selecciona_creditos),
('Salir', selecciona_salir)]
menu = pilas.actores.Menu(opciones)
menu.transparencia = 100
menu.transparencia = [0], 10
class dificultades(Normal):
def __init__(self):
Normal.__init__(self)
fondo = pilas.actores.Actor(pilas.imagenes.cargar("Recursos/Imagenes/Fondo_Menu.jpg"))
if shelve.open("Data.dat")["dificultad"] == "1":
opciones = [
('Facil', self.facil)]
self.menu = pilas.actores.Menu(opciones)
self.menu.transparencia = 100
self.menu.transparencia = [0], 10
if shelve.open("Data.dat")["dificultad"] == "2":
opciones = [
('Facil', self.facil),
('Medio', self.medio),]
self.menu = pilas.actores.Menu(opciones)
self.menu.transparencia = 100
self.menu.transparencia = [0], 10
if shelve.open("Data.dat")["dificultad"] == "3":
opciones = [
('Facil', self.facil),
('Medio', self.medio),
('Dificil', self.dificil)]
self.menu = pilas.actores.Menu(opciones)
self.menu.transparencia = 100
self.menu.transparencia = [0], 10
def facil(self):
#pilas.actores.utils.destruir_a_todos()
capitulo1()
print "Enter logrado"
def medio(self):
pass
def dificil(self):
pass
#Funciones de juego.
def capitulo1():
fondo = pilas.actores.Actor(pilas.imagenes.cargar("Recursos/Transcisiones/1.jpg"))
fondo.transparencia = [100], 2
if fondo.transparencia == 0:
fondo = pilas.actores.Actor(pilas.imagenes.cargar("Recursos/Imagenes/Preludio.png"))
fondo.transparencia = 100
fondo.transparencia = [0], 10
iniciar()
pilas.ejecutar()
Mi sintaxis es la de un principiante como notaran, me guio como puedo, así que tal vez se les haga un poco confuso, pero eso fue lo que me atrajo a este lenguaje por que mi propia confusión igual es legible gracias a lo limpio de python.
Van a necesitar tambien el desarrollo del "Data.dat" de hay que es lo que uso como base de datos.
import shelve
shelve.open("Data.dat")["dificultad"] = "1"
shelve.open("Data.dat")["guardado"] = "0"
print shelve.open("Data.dat")["dificultad"]
print shelve.open("Data.dat")["guardado"]
shelve.open("Data.dat").close()
Esto es todo lo que he hecho, ahora a lo siguiente.
Lo que se supone que hace, aparece una imagen al principio que se desvanece (cambia su transparencia) con la idea de simular una difucion, y luego al apretar una tecla se proxiga a la siguiente imagen. Aqui el primer inconveniente, use un If un tanto largo para añadir la mayor cantidad de teclas posibles, si hubiera alguna forma más simple de indicar "cualquier tecla", pido ayuda en eso (y tambien al hacer click con el mouse si es posible). Luego tambien quisiera saber si es posible que por ejemplo la imagen que mencionamos, guardada como fondo, al llegar al valor de transparencia 90 en este caso, se proxiga a pasar a la otra imagen. Lo he intantado con If's en esa condicion basicamente if fondo.trasparencia == 90: y luego el pedasito de codigo para pasar a la otra imagen pero no logro que lo haga, espero que se entienda lo que intento decir (ya que la imagen al llegar a transparencia 90, se queda quieta y necesita presionar alguna tecla para proseguir).
Luego el programa sigue con la siguiente imagen(suponiendo que presionamos algunas de las teclas del if exagerado) que seria una repeticion en cuanto a codigo de la primera imagen, pero que se junta la difucion con la 3ra imagen de fondo que seria el fondo del menu. Ahora una parte importante aqui, el menu me anda excelente así como esta el codigo puesto, pero solo con el mouse, en cuanto uso el teclado y "enter", se quedan las letras por ejemplo en creditos, se saltea un menu en iniciar, no se seleccionan bien en cuanto al movimiento de las flechitas de abajo a arriba. Supongo yo que es un bug, por que con el mouse reitero anda bien. Pero si de la segunda imagen presionan directamente enter, se saltea el primer menu y el segundo, parte directamente desde la funcion llamada capitulo1. Cosa que con el mouse no lo hace, va todo acorde al plan.
Si me recomiendan algunas mejoras para mi sintaxis tambien se los agradeceria, así voy mejorando. Soy nuevo pero con cada duda que me surga me tendran aquí para preguntarles. Gracias de antemano.