Guia de programación
Cocos2d es un framework para el desarrollo de juegos en 2D, presentaciones y otras aplicaciones graficas interactivas.
Cocos2d simplifica el desarrollo de juegos en las siguientes áreas:
Control de Flujo (Flow Control): manejo de una forma fácil el control de flujo entre las diferentes escenas.
- Sprites: Rápido y fácil.
- Acciones (Actions): Solo le decimos a los sprites lo que quieremos que haga. Acciones como mover, rotar, escalar, etc
- Efectos (Effect): Efectos como waves (ondas), twirl (giros), lens(lentes) y muchos mas
- Mapas de mosaicos (Tiled maps): soportes a tiled maps rectangulares y a hexagonales
- Transiciones (Transitions): Moverse entre escena y escena con estilo
- Menús: Clases ya desarrolladas para la creación de menús.
- Presentación de Texto (Text rendering)
- Documentación: Guia de programación + Referencia de API + Lotes de pruebas sencillas que muestran cómo usarlo
- Intérprete embebido de Python: para debugging.
- Licencia BSD: Solo usar.
- Basado en Pyglet: No tiene dependencias externas.
- Basado en OpenGL: Aceleración de Hardward
Instalación
- Instalar python 2.4 con ctypes o con python 2.5.
2.Instalar pyglet 1.1beta o superior desde pyglet's homepage . Si usted quiere usar pyglet 1.0, use cocos2d v0.1.x instead.
3.Por último, elegir una de las siguientes opciones:
- Si usted quiere construir y empaquetar, use el setup.py que viene con la distribución e instale el paquete usando easy_install.
- Copia “cocos” a tu proyecto:
$ cp -r cocos $PROJECT_HOME
- Incluir en cocos en su PYTHONPATH:
$ export PYTHONPATH=$PYTHONPATH:/path/to/cocos
- O insertar cocos en sys.path:
import sys
sys.path.insert(0, PATH_TO_COCOS))Escribir una aplicación en cocos2d.
Los primeros pasos con una nueva biblioteca o framework puede ser intimidante, especialmente cuando se presenta con una gran cantidad de material de referencia para leer. En este capítulo se da una muy rápida introducción a cocos2d sin cubrir ninguno de los detalles.
- Hola Mundo.
- Hola Acciones
- Manejo de eventos.
- ¿Cuando a la siguiente?
Hola Mundo.
Vamos a comenzar con "Hello, World". Este programa se abrirá una ventana con un texto en ella y esperar a ser cerrado. Usted puede encontrar el script completo en samples/hello_world.py.
Para empezar importamos el modulo de cocos
import cocos
Creamos una clase que herede de Layer y definimos la logica del programa de la suigiente manera:
class HelloWorld(cocos.layer.Layer):
Siempre llamamos a super en el constructor:
def __init__(self):
super( HelloWorld, self ).__init__()Para visualizar el texto, vamos a crear un label. Los argumentos se utilizan para fijar texto, el tipo de letra, la posición y la alineación del label:
label = cocos.text.Label('Hello, world',
font_name='Times New Roman',
font_size=32,
anchor_x='center', anchor_y='center')El label se posisionara sobre el centro de la escena:
label.position = 320,240
El Label es una subclase de CocosNode este puede ser añadido como hijo. Todos los objetos CocosNode saben como renderizarse a si mismo, realizar las acciones y transformaciones. Para agregar como una capa del hijo, utilice el método CocosNode.add:
self.add( label )
Luego definomos la classe HelloWorld, necesitaremos inicializar y crear una ventana. Para ello inicializaremos un Director:
cocos.director.director.init()
a continuación creamos una instancia de HelloWorld:
hello_layer = HelloWorld ()
a continuación creamos una escena que contenga el layer HelloWorld con un hijo:
main_scene = cocos.scene.Scene (hello_layer)
y para finalizar vamos a correr la escena:
cocos.director.director.run (main_scene)
Un manera más corta para escribir los últimos 3 estados es la siguiente:
#cocos.director.director.run( cocos.scene.Scene( HelloWorld() ) )
Hola Acciones
Este ejemplo es muy similar al ejemplo #1 con la diferencia que este nos introduce en el mundo de las acciones. Una accion es como una orden. Usted le pude decir que ejecute una acción a cualquier objeto CocosNode. Usted puede buscar este programa en archivo samples/hello_world_actions.py Al igual que el ejemplo anterior importamos el modulo de cocos2d:
import cocos
si usted va a usar varias acciones, puede importar todas las acciones disponible en el namespace con la siguiente linea.
from cocos.actions import *
Aca esta una sublcalse ColorLayer que tiene fondo de color. a continuación hacemos una invocación a super () con color azul
class HelloWorld(cocos.layer.ColorLayer):
def __init__(self):
# blueish color
super( HelloWorld, self ).__init__( 64,64,224,255)como en el ejemplo anterior vamos a crear y agregar un label:
label = cocos.text.Label('Hello, World!',
font_name='Times New Roman',
font_size=32,
halign='center', valign='center')
# set the label in the center of the screen
label.position = 320,240
self.add( label )
En este ejemplo también vamos a crear y agregar un sprite como hijo. En cocos2d los
sprites son objetos Sprite.
sprite = cocos.sprite.Sprite('grossini.png')Ponemos el sprite en el centro de la pantalla. La posision por defecto es (0,0):
sprite.position = 320,240
Hemos establecido el atributo escala en 3. Esto significa que nuestro sprite será 3 veces más grande. La escala por defecto es 1.
sprite.scale = 3
Agrgamos al sprite como hijo pero sobre Agregamos el sprite como hijo, pero sobre el label seteando el z-value en 1, ya que el z-valor es 0:
self.add( sprite, z=1 )
Creamos una accion ScaleBy. Se escala en 3 veces el objeto que la ejecuta, en 2 segundos: scale = ScaleBy(3, duration=2) Le decimos al lebel:
- escala 3 veces en 2 segundos
- entonces a reducir 3 veces en 2 segundos
- y repetí estas dos acciones por siempre.
Observe que el operador '+' es la secuencia de acción:
label.do( Repeat( scale + Reverse( scale) ) )
Y le decimos el sprite a hacer las mismas acciones pero a partir de la "escala de nuevo la acción:
sprite.do( Repeat( Reverse(scale) + scale ) )
Luego inicializamos el director como en el ejemplo anterior.
cocos.director.director.init()
hello_layer = HelloWorld ()
Y ... le decimos a la capa (sí, todos los objetos CocosNode puede ejecutar acciones) para ejecutar una acción RotateBy de 360 grados en 10 segundos:
hello_layer.do( RotateBy(360, duration=10) )
Por último, iniciar la ejecución:
# A scene that contains the layer hello_layer
main_scene = cocos.scene.Scene (hello_layer)
# And now, start the application, starting with main_scene
cocos.director.director.run (main_scene)
Details
Add your content here. Format your content with:
- Text in bold or italic
- Headings, paragraphs, and lists
- Automatic links to other wiki pages