Algunas dudas!

Si tienes alguna duda sobre cómo usar pilas, o tienes problemas para instalar o hacer algo en pilas comentalo aquí.

Algunas dudas!

Notapor programx » Mié Ago 03, 2011 5:27 am

Buenas, soy nuevo por aqui, e probado pilas un poco y me parece un proyecto totalmente original, no se parece a ningun otro game engine que halla probado antes (slick, rubygame, gosu-chingu, xna, etc...), bueno quizas un poco pero pilas me parece otra forma de programar juegos, me parecio muy llamativo ademas de que acorta bastante codigo :) . Ahora tengo las siguientes dudas:

1).Estoy intentando hacer una nave que dispara y me di cuenta de que hay una clase en actores que se llama "disparo" y hasta tiene un sprite animado, ahora: como funciona? como puedo hacer para que mi clase "Player" (a la cual le coloque una imagen png de una nave y se mueve normalmente) dispare con la clase "disparo"?, debo heredar de esa clase o el codigo mismo va dentro de Player?

2). Noté al ver la lista de metodos de "pilas.mundo.control." que posee izquierda, derecha, arriba, abajo y unos cuantos F#, pero y si quiero usar otra tecla, por ejemplo, la tecla "k" para disparar? Donde puede ver la lista de teclas disponibles para usar?, intente con un "pilas.mundo.control.k" por ejemplo pero lanzo un error.

3). Recuerdo que en chingu podia crear un "viewport", es decir, como un area que limitaba al personaje y podia ser del tamaño que uno quisiera (mucho mas grande que la ventana si se queria), la cual mediante un metodo la camara se centraba en el personaje (actor) y lo seguia a todas partes hasta que llegaba a uno de los bordes del viewport y hay se detenia. Existe entonces algo parecido a un viewport en pilas? como usarlo?

4). No se si esto esta en el manual pero, es posible hacer un efecto de desplazamiento al fondo?, es decir, si voy hacer un juego de naves espaciales necesito que el fondo (espacio) se mueva constantemente repitiendose, simulando que la nave esta volando a gran velocidad por el espacio. Esto si no mal recuerdo se llamaba "parallax" en chingu.

5). Ultima y quizas las mas importante: como hago para importar directorios al programa? por ejemplo, tengo una carpeta en el escritorio llamada "recursos" donde tengo todas las imagenes y sonidos que voy a usar en el juego y quiero que el programa la reconosca sin necesidad de colocar la ruta ni nada de eso, que con un "pilas.imagenes.cargar("imagen.png")" baste y sobre. Por el momento lo que e hecho es colocar mis recursos junto a los que trae pilas por defecto: C:\Python26\Lib\site-packages\pilas\data.

Bueno eso es todo por el momento jeje, Saludos!
Avatar de Usuario
programx
 
Mensajes: 34
Registrado: Mié Ago 03, 2011 4:46 am

Re: Algunas dudas!

Notapor hugoruscitti » Mié Ago 03, 2011 2:21 pm

programx escribió:Buenas, soy nuevo por aqui, e probado pilas un poco y me
parece un proyecto totalmente original, no se parece a ningun otro game engine
que halla probado antes (slick, rubygame, gosu-chingu, xna, etc...), bueno
quizas un poco pero pilas me parece otra forma de programar juegos, me parecio
muy llamativo ademas de que acorta bastante codigo :) . Ahora tengo las
siguientes dudas:


Buenas, bienvenido!!!. Mil gracias por tus comentarios sobre pilas, que
bueno que tengas conocimiento de otras bibliotecas de juegos, avisanos
si a pilas le falta algo que te gustaría que implementemos.

Abajo en este post voy a tratar de contestar tus preguntas.

programx escribió:1).Estoy intentando hacer una nave que dispara y me di cuenta de que hay una
clase en actores que se llama "disparo" y hasta tiene un sprite animado, ahora:
como funciona? como puedo hacer para que mi clase "Player" (a la cual le
coloque una imagen png de una nave y se mueve normalmente) dispare con
la clase "disparo"?, debo heredar de esa clase o el codigo mismo va dentro de
Player?


Sí, el mismo código tendría que ir en tu clase Player.

En realidad, el disparo es un nuevo actor, cuando quieras que tu nave
dispare simplemente tienes que crear un actor a partir de la clase
disparo y listo... incluso podrías decirle en que dirección y
a que velocidad tiene que salir:

if pilas.mundo.control.boton:
pilas.actores.Disparo(x=self.x, y=self.y, rotacion=90, velocidad=20)


Este es un prototipo de una nave (con apariencia de aceituna) que podría
disparar hacia la derecha. De ahí tomé las dos lineas de mas
arriba:

import pilas
from pilas.actores import Actor

pilas.iniciar()


class Player(Actor):

def __init__(self):
Actor.__init__(self)
self.imagen = "aceituna.png"
self.x = -200

def actualizar(self):
if pilas.mundo.control.arriba:
self.y += 5

if pilas.mundo.control.abajo:
self.y -= 5

if pilas.mundo.control.boton:
pilas.actores.Disparo(x=self.x, y=self.y, rotacion=90, velocidad=20)


Player()
pilas.ejecutar()



Imagen


programx escribió:2). Noté al ver la lista de metodos de "pilas.mundo.control." que posee
izquierda, derecha, arriba, abajo y unos cuantos F#, pero y si quiero usar otra
tecla, por ejemplo, la tecla "k" para disparar? Donde puede ver la lista de
teclas disponibles para usar?, intente con un "pilas.mundo.control.k" por
ejemplo pero lanzo un error.


Si, los métodos de "pilas.mundo.control" son para los controles mas
usados en los juegos, es decir, las flechas del teclado y otros
botones.

Para que la nave use otras teclas, tal vez podrías usar el evento "pulsa_tecla", que
dispara una función cuando se pulsa una tecla.

El código anterior adaptado para que dispare con la tecla k sería así:

import pilas
from pilas.actores import Actor

pilas.iniciar()


class Player(Actor):

def __init__(self):
Actor.__init__(self)
self.imagen = "aceituna.png"
self.x = -200
pilas.eventos.pulsa_tecla.conectar(self.cuando_pulsa_tecla)

def actualizar(self):
if pilas.mundo.control.arriba:
self.y += 5

if pilas.mundo.control.abajo:
self.y -= 5

def cuando_pulsa_tecla(self, evento):
if evento.texto == 'k':
pilas.actores.Disparo(x=self.x, y=self.y, rotacion=90, velocidad=20)


Player()
pilas.ejecutar()



programx escribió:3). Recuerdo que en chingu podia crear un "viewport", es decir, como un area
que limitaba al personaje y podia ser del tamaño que uno quisiera (mucho mas
grande que la ventana si se queria), la cual mediante un metodo la
camara se centraba en el personaje (actor) y lo seguia a todas partes hasta que
llegaba a uno de los bordes del viewport y hay se detenia. Existe entonces algo
parecido a un viewport en pilas? como usarlo?


M... no, no tenemos algo como un vierwport. Estaría bueno crear algo
parecido, ¿como sería exactamente?.

Lo que sí puedes hacer, es delimitar el area del personaje nave (por ejemplo)
usando un limitador del movimiento cuando se pulsa una tecla.

Por ejemplo, si no quiero que la nave se salga de la pantalla por arriba
podría modificar esta parte del código:

if pilas.mundo.control.arriba:
self.y += 5


por esta otra:

if pilas.mundo.control.arriba and self.arriba < 230:                                                    
self.y += 5


programx escribió:4). No se si esto esta en el manual pero, es posible hacer un efecto de
desplazamiento al fondo?, es decir, si voy hacer un juego de naves espaciales
necesito que el fondo (espacio) se mueva constantemente repitiendose, simulando
que la nave esta volando a gran velocidad por el espacio. Esto si no mal
recuerdo se llamaba "parallax" en chingu.


No, pero voy a investigarlo, no creo que sea difícil hacer algo parecido, y
me parece una muy buena idea.

Actualmente en pilas, uno tendría que hacer eso a mano... básicamente consiste
en crear una clase, que herede de fondo, y que en el método actualizar se mueva
a la izquierda, y cuando llega a un punto en particular regresa...

Creo que no es difícil, si me hago un tiempito a la tarde lo escribo.

¿Podrías escribir otro post del foro con la idea?, así no me olvido y
tengo a donde escribir si lo termino.

programx escribió:5). Ultima y quizas las mas importante: como hago para importar directorios al
programa? por ejemplo, tengo una carpeta en el escritorio llamada "recursos"
donde tengo todas las imagenes y sonidos que voy a usar en el juego y quiero
que el programa la reconosca sin necesidad de colocar la ruta ni nada de eso,
que con un "pilas.imagenes.cargar("imagen.png")" baste y sobre. Por el
momento lo que e hecho es colocar mis recursos junto a los que trae pilas
por defecto: C:\Python26\Lib\site-packages\pilas\data.


Simplemente tendrías que colocar las imágenes en el mismo directorio que
tu programa, o dentro de un directorio llamado ``data``, también dentro
del directorio de tu juego.

Por ejemplo, si tengo mi juego en el directorio "home/hugo", y mi juego
en "home/hugo/juego". Puedo escribir en mí código:

imange= pilas.imagenes.cargar("nave.png")


y pilas va a ir a buscar la imagen en estos directorios (y en este orden):


- busca abrir "/home/hugo/juego/nave.png"
- si no existe, intenta "home/hugo/juego/data/nave.png"
- si no exite, busca dentro del directorio 'data' de pilas (en tu caso sería C:\Python26\Lib\site-pack...)

programx escribió:Bueno eso es todo por el momento jeje, Saludos!


Genial!, me alegra mucho que estés usando pilas, avisanos
cualquier cosa y por favor tratá de escribir el post sobre
el fondo de los juegos así trato de solucionarlo hoy o mañana.

Ah, y por supuesto, bienvenido!!

Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Algunas dudas!

Notapor programx » Mié Ago 03, 2011 6:55 pm

Muchas gracias hugo por aclarar mis dudas, ya mas o menos le capto la logica al engine, pues la verdad es que al principio es un poco lioso debido a que la filosofia es un tanto distinta a los demas motores, pero una vez le agarras la vuelta se nota que pilas es bastante sencillo y cumple perfectamente su cumplido, el cual segun veo es proporcionar la mayor cantidad de clases y metodos posibles para todo tipo de necesidades, con algoritmos ya hechos para ponerse a hacer el juego de una y tener todo a la mano; por cierto, lo mejor es que esta completamente en español jeje!.

Voy a crear otro post en la seccion de sugerencias e ideas donde te muestro mas o menos lo del parallax y el viewport a como se haria en chingu para que tengas una idea. Saludos!
Avatar de Usuario
programx
 
Mensajes: 34
Registrado: Mié Ago 03, 2011 4:46 am


Volver a Consultas, problemas o bugs.

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados