Python R2


La pyntendo se abarata para la crisis del 2009 ;)

Posted in Python por Arturo Elias Antón en 31 diciembre 2008
Tags: , , , , ,

Para los que no tienen el mágico celular N95 ya pueden mover la pelotita con una linterna. Como muestro en este video donde mi papá me filmo.

El código lo publicare apenas lo tenga mas terminado. Espero que les guste y que vean que tengan un buen 2009

link al video http://www.youtube.com/watch?v=UdMNh9t5YJw

Saludos a todos gracias y feliz año!!!!!!!!!!!!!!!!!!!!!!!!

Anuncios

Un juego para N95 utilizando pyS60. (r2-space)

Acá les dejo un nuevo juego en formatos sis (solo instalable en el teléfono) para aprovechar el acelerómetro de N95 hecho en python (PyS60).
Y por supuesto también les dejo el código para que lo puedan mejorar y comentar.

download sis: http://www.binsd.com.ar/binsdGame/bin/r2_space_v0_0_4.sis

downloas src: http://www.binsd.com.ar/binsdGame/src/r2_space.py

Video para que puedan ver como se juega con el acelerómetro.

http://www.youtube.com/watch?v=tCBZciSpAh0

Definiendo Python como una religion.

Posted in Python por Arturo Elias Antón en 17 diciembre 2008
Tags:

La verdad que me encanto esta definición

Python would be Humanism: It’s simple, unrestrictive, and all you need to follow it is common sense. Many of the followers claim to feel relieved from all the burden imposed by other languages, and that they have rediscovered the joy of programming. There are some who say that it is a form of pseudo-code.

Si quieren ver definiciones de otro lenguajes diríjanse a  http://www.aegisub.net/2008/12/if-programming-languages-were-religions.html

Que dia cayo el DD/MM/YYYY?

Posted in Python por Arturo Elias Antón en 17 diciembre 2008
Tags: , , ,

Leyendo la Linux magazine 39 me gusto mucho la nota titulada “juegos matemáticos con script Perl TRUCO MENTAL”. Bueno la idea es que pasándonos una fecha, nosotros decimos que día fue de la semana. Me gusto muchísimo el truco, lo que no me gusto que el script estaba echo en Perl y entonces lo hice en python 🙂 espero que les guste.


def esBisiesto(yyyy):
    esDiv4 = yyyy%4==0
    esDiv100 = yyyy%100==0
    esDiv400 = yyyy%400==0
    if esDiv4 and esDiv400: return True
    if esDiv4 and esDiv100: return False
    if esDiv4: return True
    return False

def queDiaEs(dd,mm,yyyy):


    if mm > 12: return -1,"Mes invalido"
    if dd > 31: return -2,"Dia invalido"


    for m in  [2,4,6,9,11]: # meses con 30 dias y febrero que tiene 28/29 dias
        if (dd,mm) == (31,m): return -2,"Dia invalido"

    if (dd,mm)==(30,2):
        return -2,"Dia invalido"
    if (dd,mm)==(29,2) and not esBisiesto(yyyy):
        return -2,"Dia invalido"


    yy = yyyy%100
    meses = [0,3,3,6,1,4,6,2,5,0,3,5]
    dia = ["Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado"]
    valorYY = (yy + (yy / 4))%7

    ajuste = [6,4,2,0][(yyyy/100)%4]

    if mm in (1,2) and esBisiesto(yyyy): ajuste -=1

    numDia = ((dd + meses[mm-1] + valorYY + ajuste) % 7)
    return numDia, dia[numDia]

Solo una corrección a la nota de la revista si la tienen fíjense que en la tabla 4 el ultimo ejemplo en verdad esta mal puesto el día ya que dice miércoles y tendría que decir jueves saludos

Traduccion de la Guia de programación de Cocos2D

Posted in Python por Arturo Elias Antón en 10 diciembre 2008
Tags: , , , ,

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

  1. 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)

links

Espero sus correcciones y sus comentarios desde ya muchas gracias.
Estoy preparando la parte de eventos 🙂