Python R2


Mezclando, mezclando salio la pyntendo pyy :)

La verdad estaba en el trabajo hablando con un amigo y surgió la idea de mezclar el juego de las pelotitas que publique en este blog en la entrada “Juegos en Python (con pygame)” y el ejemplo de la entrada anterior “PyS60: A mover el celular.”. Con un poco de bluetooth  y salio la pyyntendo pyy :).

La idea es usar como joystick el celular para  mover la pelotita blanca con el movimiento del celular y esquivar las otras pelotitas rojas que estan en la pantalla de la pc.

En el juego cuanto más al centro estamos mas puntos obtenemos.

Dejos los del rar con los dos py para que los puedan bajar.

En este rar  están los dos py y las imágenes para poder jugar y ver como esta hecho.

El ControlBluetooth.py se es el que corre en el celular desde PyS60 y necesita en el celular el modulo  aXYZ y pyS60 y el n95wii.py es el que corre en la pc y necesita pySerial y pygame.
Al n95wii.py hay que indicarle el puerto serie que va a utilizar el bluetooth.

Saludos y gracia python por hacerme tan feliz!!!

Espero que les guste y sus comentarios 🙂

Aca les dejo a richar jugando para los que no tengan un celular tan groso como dijo santy jejeje 🙂

Richar jugando a la Pyntendo pyy en Claro

Mi novia jugado al Pyntndo jeje

Anuncios

PyS60: A mover el celular.

Posted in Python por Arturo Elias Antón en 26 noviembre 2008
Tags: , , , , , ,

En esta entrada lo que voy a publicar es un código de un ejemplo muy simple de cómo dibujar un circulo en pyS60 y moverlo con el acelerómetro de n95, mediante el modulo axyz.

import appuifw, graphics, e32
import axyz

blobsize=30
location_x = 100
location_y = 100
BLUE=0x0000ff
RED=0xff0000
running=1

def handle_redraw(rect):
    canvas.blit(img)

def quit():
    global running
    running=0
    axyz.disconnect()

canvas=appuifw.Canvas(redraw_callback=handle_redraw)
appuifw.app.body=canvas

appuifw.app.screen='full'
w,h = canvas.size
img=graphics.Image.new((w,h))

appuifw.app.exit_key_handler=quit

def mov(x,y,z):
    global location_x
    global location_y
    global w
    global h
    if location_x + x > 0 and location_x + x < w: location_x = location_x + x
    if location_y + y > 0 and location_y + y < h: location_y = location_y + y

axyz.connect(mov)

while running:

    img.clear(BLUE)
    img.point((location_x,location_y),RED,width=blobsize)
    handle_redraw(())
    e32.ao_yield()

Lista de links:

Para cuando Sapus Tongue v1.0 para N95 😉

Haciendo un grabador con PyS60

Posted in Python por Arturo Elias Antón en 25 noviembre 2008
Tags: , , , , , , ,

Después de publicar la nota de pyS60 me di cuenta que mi n95 no tenia forma de grabar voz. Entonces me puse a ver en un par de foros y la opción que daban era instalar Ultimate VR y un crack. La otra opción era otro programita de grabación que no me acuerdo el nombre.   Como mucho no me gusta instalar crack 🙂 lo que me puse a hacer es un programita en python que me permita grabar y reproducir mis grabaciones.

Y acá les dejo el script para que lo vean. Supongo que anda en cualquier nokia con pyS60. Pero yo solo lo probé en el mió.

import appuifw
import e32
import audio
import os

def grabar():
        global grabacion
        path = u'E:\\Record\\'
        name = appuifw.query(u'Guardar Como:', "text")
        if name==u'':
                name=u'untitled'
        filename = path + name +u'.amr'
        grabacion=audio.Sound.open(filename)
        grabacion.record()
        appuifw.note(u'Grabando...', "info")

def reproducir():
        global grabacion
        path = u'E:\\Record\\'
        filename =u''
        files = map(unicode,os.listdir(path))
        index = appuifw.selection_list(choices=files , search_field=1)
        if index != None:
                filename = path+files[index]
                print u'Selecciono ->',filename
                try:
                        filename = appuifw.query(u'Abrir:', "text", filename)
                        if filename!=None:
                                grabacion=audio.Sound.open(filename)
                                grabacion.play()
                                appuifw.note(u'Reproduciendo...', "info")
                except:
                        print u'Error en ',filename,u'!!!'
                        appuifw.note(u'Error en '+filename+'!!!', "info")

def stop():
        global grabacion
        grabacion.stop()
        grabacion.close()
        appuifw.note(u'Stop', "info")

def quit():
    script_lock.signal()
    appuifw.app.set_exit()

appuifw.app.menu = [(u"Reproducir", reproducir),
                    (u"Grabar", grabar),
                    (u"Stop", stop)]

appuifw.app.title = u"Grabador"

appuifw.app.exit_key_handler = quit
script_lock = e32.Ao_lock()
script_lock.wait()

Links que me ayudaron

Espero que les guste. Saludos 🙂

PyS60 (Python – Symbian – Nokia)

Posted in Python por Arturo Elias Antón en 20 noviembre 2008
Tags: , , , ,

Py60 es una versión de Python ideada para dispositivos móviles con sistema operativo Symbian. Como siempre Python nos permitirá con pocas líneas de código crear aplicaciones funcionales. Y podremos acceder a todos los servicios que dispone el teléfono.

Instalación

Para instalar pyS60 en su Celular tendrán que bajarse estos dos archivos:

  • PythonForS60_1_4_4_3rdEd.sis
  • PythonScriptShell_1_4_4_3rdEd.SIS

De este link http://sourceforge.net/projects/pys60/
El primero no generara ningun icono en nuestro telefono y el segundo generara un icono para nuestro shell python.

El famoso hola mundo en mi nokia.

import appuifw
appuifw.note(u"Hola mundo!!!", "conf")

Un ejemplito de como sacar fotos con python y nokia. 🙂

import camera
import e32
import appuifw
from graphics import *

def main_menu():
	appuifw.app.menu = [(u"Sacar Foto", SacarFoto),(u"Salir",app_exit)]

def SacarFoto():
	appuifw.app.body=old_body
	image= camera.take_photo()
	name = appuifw.query(u'Guardar Como:', "text")
	if name=='':
		name='untitled'
	appuifw.note(u'Guardando Archivo...', "info")
	appuifw.app.body=canvas=appuifw.Canvas()
	canvas.blit(image,scale=1)
	path=(u'E:\\Images\\'+name+u'.jpg')
	image.save(path)

def app_exit():
	appuifw.app.set_exit()

old_body=appuifw.app.body
lock = e32.Ao_lock()
appuifw.app.title = u"pyFoto"
appuifw.app.screen='full'
main_menu()
lock.wait()

Aca van unos links para seguir jugando con PyS60:

Seguiremos jugando con PyS60 en estas semanas 😉

wiiiiiiiiiiiii.

Se viene pyWars 2.0

Posted in Python,PyWars por Arturo Elias Antón en 20 noviembre 2008
Tags: , , , , ,

En pocas semanas tendremos una nueva beta de pyWars 2.0 y el estándar de desarrollo de los bots para que se puedan  participar en  el próximo torneo.
Escucho ofertas para la próxima fecha del torneo de pyWars.

La beta de pyWars 2.0  se podrá bajar de los siguientes sitios.

Links:

La fecha del próximo torneo también será publicada en las dos páginas anteriores y en la lista de correo http://ar.groups.yahoo.com/group/pyWars/.

Python 3D

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

Después de mi visita a rosario y encontrarme con gente muy copada y sobre todo encantarme con la OLPC de humito 🙂 . Decidí publicar un mini ejemplo de la modulo VPython. Ya que una de las preguntas que se me hizo fue en que estaba programado pyWars3D.

Gracia a visual podremos programar juegos presentaciones y demás cosas en 3D.

Para instalar VPython en Ubuntu solo hay que hacer:

sudo apt-get install python-visual

También se puede instalar en el sistema operativo MS-Voldemort (el que nunca debe ser instalado 🙂 ) bajando (http://www.vpython.org/) de la pagina el msi.

Para empezar solo crearemos dos objetos 3D uno un cubo y otro una esfera. Donde la esfera se encuentre al lado del cubo

import visual
v = visual.vector (6,6,-1)
s = (2.,2.,2.)
c = color=visual.color.red
cubo = visual.box(pos=v,size=s,color=c)
ve = v
ve.x = ve.x - visual.mag(s)
esfera=visual.sphere(pos=ve, radius=visual.mag(s)/2)

Más adelante veremos un poco mas de este modulo que me a dado muchas alegrías.

Parseo de cadena separada por coma en Oracle

Posted in Oracle por Arturo Elias Antón en 6 noviembre 2008
Tags: , , , ,

Hoy con una nota simple quiero inaugurar la sección PL/SQL.
Bueno,…
Más de una ves trabajando en Oracle nos tenemos que enfrentar con el problema de parsear una  cadena y  perdemos el tiempo en hacer una función que haga esto, ya que es un problema bastante común, pero si buscamos en las funciones de Oracle nos daremos cuenta que existe una función dentro de dbms_utility llamada comma_to_table que nos soluciona el problema 🙂

Función dbms_utility.comma_to_table:

dbms_utility.comma_to_table(
list   IN  VARCHAR2,
tablen OUT BINARY_INTEGER,
tab    OUT UNCL_ARRAY);

Un ejemplo que aclara lo que estoy diciendo de esta función podría ser:

DECLARE
cnt        BINARY_INTEGER;
my_table    dbms_utility.uncl_array ;
str VARCHAR(200);
BEGIN
    str :=  'ENERO,MARZO,ABRIL,MAYO,JUNIO';
    dbms_utility.comma_to_table(str,cnt, my_table);
    FOR i IN 1 .. my_table.count LOOP
        Dbms_output.Put_Line(my_table(i));
    END LOOP;
END;

Si la lista es numérica tendríamos que tratarla como en el siguiente ejemplo….

DECLARE
cnt        BINARY_INTEGER;
my_table    dbms_utility.uncl_array ;
str VARCHAR(200);
BEGIN
     str :=  '316,343,328,329,390,391,305,333,558';
     dbms_utility.comma_to_table(REPLACE('"'||str||'"',',','","') ,cnt, my_table);
     FOR i IN 1 .. my_table.count LOOP
         Dbms_output.Put_Line('  '||replace(my_table(i),'"',''));
     END LOOP;
END;