revista python 2

Upload: aprender-libre

Post on 30-May-2018

232 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Revista Python 2

    1/33

    MUNDO PYTHONMUNDO PYTHON

    NUMERO 2NUMERO 2

    TODOSTODOS LOS MODULOS PARAOS MODULOS PARASUS NECESIDADES CON PYTHONUS NECESIDADES CON PYTHON

    Google App EngineGoogle App Engine el servidor del servidor de

    aplicaciones que utiliza PYTHONaplicaciones que utiliza PYTHON

  • 8/14/2019 Revista Python 2

    2/33

    ContenidoContenido

    umero 2 www.aprenderpython.comwww.aprenderpython.com 1

    AUTORAUTOR

    PORQUE PYTHONPORQUE PYTHON

    TODOS LOS MODULOS PARA SUS NECESIDADES CON PYTHONTODOS LOS MODULOS PARA SUS NECESIDADES CON PYTHON

    WINKWINK

    GOOGLE APP ENGINEGOOGLE APP ENGINE

    PYGAMEPYGAME

    CODIGO FUENTE (CODIGO FUENTE (SOCKETS EN PYTHONSOCKETS EN PYTHON))

    CURSO PYTHONCURSO PYTHON

    ENLACESENLACES

    CONTACTOCONTACTO

    PUBLICIDADPUBLICIDAD

  • 8/14/2019 Revista Python 2

    3/33

    AutorAutor

    umero 2 www.aprenderpython.comwww.aprenderpython.com 2

    Hola a todosHola a todos

    Bueno la verdad no soy muy bueno para escribir, cual es la ideaBueno la verdad no soy muy bueno para escribir, cual es la idea de habede habe

    comenzado esta revista, reunir la comunidad mas grande de Progracomenzado esta revista, reunir la comunidad mas grande de Programadores demadores de

    Python de habla, EspaPython de habla, Espaol.ol.

    Como empezo esta iniciativa pues al buscar documentacion de PythComo empezo esta iniciativa pues al buscar documentacion de Python noon no

    encotramos mucha, pero si hay una gran cantidad de personas conencotramos mucha, pero si hay una gran cantidad de personas con conocimientos enconocimientos en

    Python muy grandes que pueden compartir a esta comunidad que iniPython muy grandes que pueden compartir a esta comunidad que inicia, si eres uncia, si eres un

    programador y te consideras excelente lo invito a hacer sus aporprogramador y te consideras excelente lo invito a hacer sus aportes para estates para estacomunidad que inicia, hay muchos que tal vez no tienen idea de pcomunidad que inicia, hay muchos que tal vez no tienen idea de programacion yrogramacion ymucho menos en Python la idea es que por medio de este medio podmucho menos en Python la idea es que por medio de este medio pod er difundir laer difundir la

    enseenseanza de este lenguaje "que por cierto no es muy dificil de aprenanza de este lenguaje "que por cierto no es muy dificil de aprender" por eso loder" por eso lo

    invito amigo lector a hacer su contribucion.invito amigo lector a hacer su contribucion.

    Con esta introduccion quiero invitarlo a participar en esta granCon esta introduccion quiero invitarlo a participar en esta gran comunidad que iniciacomunidad que inicia

    ya son muchos los que se han registrado en el foro, el foro es lya son muchos los que se han registrado en el foro, el foro es la manera en que invitoa manera en que invitoa dar sus contribuciones tenemos una gran biblioteca y estamos ea dar sus contribuciones tenemos una gran biblioteca y estamos en inicio de un foron inicio de un forodedicado a los codigos fuentes tambien preguntas frecuentes y mudedicado a los codigos fuentes tambien preguntas frecuentes y mucho mas, otracho mas, otra

    manera en que lo invito a participar es enviando alguna noticiamanera en que lo invito a participar es enviando alguna noticia o articulo queo articulo queconsidere importente para el crecimiento de esta revista puede econsidere importente para el crecimiento de esta revista puede enviar su aporte anviar su aporte a

    este correo y lo estudiaremos y si es bueno lo publicaremos.este correo y lo estudiaremos y si es bueno lo publicaremos.

    Este es el correo para cualquier inquietud, sugerencia o aporteEste es el correo para cualquier inquietud, sugerencia o aporte que quiera brindarque quiera brindar

    [email protected]@gmail.com

    Bueno como les decia yo invito tanto a novatos como expertos enBueno como les decia yo invito tanto a novatos como expertos en la programacion dela programacion de

    Python a contribuir a esta comunidad que inicia tal vez no somosPython a contribuir a esta comunidad que inicia tal vez no somos muchos pero conmuchos pero con

    sus aportes podemos hacer grande esta comunidad de difusion de Psus aportes podemos hacer grande esta comunidad de difusion de Python, gracias aython, gracias aque es software libre seguimos sus filosofia de hacer libre estaque es software libre seguimos sus filosofia de hacer libre esta revista.revista.

    Disculparan el diseDisculparan el diseo de la misma pero como ven estamos iniciando, un saludo ao de la misma pero como ven estamos iniciando, un saludo a

    todos ytodos y

    Bienvenidos.Bienvenidos.

    Daniel Bermudez.Daniel Bermudez.

  • 8/14/2019 Revista Python 2

    4/33

    Python es un lenguaje muyPython es un lenguaje muyexpresivo, es decir, los programasexpresivo, es decir, los programas

    Python son muy compactos: unPython son muy compactos: unprograma Python suele serprograma Python suele ser

    bastante mbastante ms corto que sus corto que su

    equivalente en lenguajes como C.equivalente en lenguajes como C.

    (Python llega a ser considerado por(Python llega a ser considerado por

    muchos un lenguaje demuchos un lenguaje de

    programaciprogramacin de muy alto nivel .)n de muy alto nivel .)

    print 2+2print 2+2

    44

    2+2 en:2+2 en: PythonPython

    PorquePorque Python?Python?

    umero 2 www.aprenderpython.comwww.aprenderpython.com 3

    Python es un lenguaje que todo elPython es un lenguaje que todo elmundo debermundo debera conocer. Su sintaxisa conocer. Su sintaxis

    simple, clara y sencilla; elsimple, clara y sencilla; el tipadotipadodindinmico, el gestor de memoria, la granmico, el gestor de memoria, la gran

    cantidad de librercantidad de libreras disponibles y laas disponibles y la

    potencia del lenguaje, entre otros, hacenpotencia del lenguaje, entre otros, hacen

    que desarrollar una aplicacique desarrollar una aplicacin en Pythonn en Python

    sea sencillo, muy rsea sencillo, muy rpido y lo que es mpido y lo que es mss

    importante, divertido.importante, divertido.

    La sintaxis de Python es tan sencilla yLa sintaxis de Python es tan sencilla y

    cercana al lenguaje natural que loscercana al lenguaje natural que los

    programas elaborados en Pythonprogramas elaborados en Pythonparecen pseudocparecen pseudocdigo. Por este motivodigo. Por este motivo

    se trata ademse trata adems de uno de los mejoress de uno de los mejores

    lenguajes para comenzar a programar.lenguajes para comenzar a programar.

    Python no es adecuado sin embargoPython no es adecuado sin embargo

    para la programacipara la programacin de bajo nivel on de bajo nivel opara aplicaciones en las que elpara aplicaciones en las que el

    rendimiento sea crrendimiento sea crtico.tico.

    Algunos casos deAlgunos casos de xito en el uso dexito en el uso de

    Python son Google, Yahoo, la NASA,Python son Google, Yahoo, la NASA,

    IndustriasIndustrias LighLigh && MagicMagic, y todas las, y todas lasdistribuciones Linux, en las que Pythondistribuciones Linux, en las que Python

    cada vez representa un tanto por cientocada vez representa un tanto por ciento

    mayor de los programas disponibles.mayor de los programas disponibles.Python presenta una serie de ventajasPython presenta una serie de ventajasque lo hacen muy atractivo, tanto paraque lo hacen muy atractivo, tanto para

    su uso profesional como para elsu uso profesional como para el

    aprendizaje de la programaciaprendizaje de la programacin. Entren. Entre

    las mlas ms interesantes desde el punto des interesantes desde el punto devista didvista didctico tenemos:ctico tenemos:

    Python es muy legible. La sintaxisPython es muy legible. La sintaxis

    de Python es muy elegante yde Python es muy elegante ypermite la escritura de programaspermite la escritura de programascuya lectura resulta mcuya lectura resulta ms fs fcil que sicil que si

    utilizaremos otros lenguajes deutilizaremos otros lenguajes de

    programaciprogramacin. Python ofrece unn. Python ofrece un

    entorno interactivo que facilita laentorno interactivo que facilita la

    realizacirealizacin de pruebas y ayuda an de pruebas y ayuda adespejar dudas acerca de ciertasdespejar dudas acerca de ciertas

    caractercaractersticas del lenguaje.sticas del lenguaje.

    El entorno de ejecuciEl entorno de ejecucin de Pythonn de Pythondetecta muchos de los errores dedetecta muchos de los errores de

    programaciprogramacin que escapan aln que escapan al

    control de los compiladores ycontrol de los compiladores yproporciona informaciproporciona informacin muy rican muy rica

    para detectarlos y corregirlos.para detectarlos y corregirlos.

  • 8/14/2019 Revista Python 2

    5/33

    Python es un lenguaje potente,Python es un lenguaje potente,

    seguro, flexibleseguro, flexible pero conpero con unaunagrangran cantidadcantidad dede modulosmodulos paraparatodastodas nuestrasnuestras necesidadesnecesidades eses

    porpor esoeso queque enen estaesta ocacionocaciondejodejo algunosalgunos modulosmodulos queque

    puedenpueden serser utilesutiles a laa la horahora dedeprogramarprogramarcon Python.con Python.

    TODOS LOS MODULOS PARATODOS LOS MODULOS PARA

    SUS NECESIDADES CON PYTHONSUS NECESIDADES CON PYTHON

    umero 2 www.aprenderpython.comwww.aprenderpython.com 4

    Base de Datos

    Base de Datos

    Base de Datos

    Base de Datos

    Base de Datos

    Base de Datos

    Base de Datos

    Base de Datos

    Redes

    Imagen PIL

    Imagen

    Imagen

    Interfaz Grafica pyGtk http://www.pygtk.org

    Interfaz Grafica pyQT http://www.riverbankcomputing.co.uk/pyqt/

    Interfaz Grafica Pmw http://pmw.sourceforge.net/

    Interfaz Grafica Tkinter 3000 http://effbot.org/zone/wck.htm

    Interfaz Grafica Tix http://tix.sourceforge.net/

    MySQLdb http://sourceforge.net/projects/mysql-python

    PyGreSQL http://www.pygresql.org/

    Gadfly http://gadfly.sourceforge.net/

    SQLAlchemy http://www.sqlalchemy.org/

    psycopg http://www.initd.org/pub/software/psycopg/

    kinterbasdb http://kinterbasdb.sourceforge.net/

    cx_Oracle http://www.cxtools.net/default.aspx?nav=downloads

    pySQLite http://initd.org/tracker/pysqlite

    MSN Messenger msnlib http://auriga.wearlab.de/~alb/msnlib/MSN Messenger pymsn http://telepathy.freedesktop.org/wiki/Pymsn

    MSN Messenger msnp http://msnp.sourceforge.net/

    Twisted http://twistedmatrix.com/

    http://www.pythonware.com/products/pil/

    gdmodule http://newcenturycomputers.net/projects/gdmodule.html

    VideoCapture http://videocapture.sourceforge.net/

  • 8/14/2019 Revista Python 2

    6/33

    TODOS LOS MODULOS PARATODOS LOS MODULOS PARA

    SUS NECESIDADES CON PYTHONSUS NECESIDADES CON PYTHON

    umero 2 www.aprenderpython.comwww.aprenderpython.com 5

    PythonPython eses unun lenguajelenguaje concon pilaspilas comocomoveranveran tienetiene unauna grangran cantidadcantidad dede modulosmodulosyy libreriaslibrerias,, parapara todotodo, hay, hay desdedesde Base deBase de

    DatosDatos, Web,, Web, JuegosJuegos,, SonidoSonido, Windows,, Windows,

    MatematicasMatematicas yy CienciaCiencia, 3D,, 3D, RedesRedes,, InterfazInterfaz

    GraficaGrafica, Puerto Serial, etc., Puerto Serial, etc.

    Juegos

    Juegos

    Juegos

    Juegos

    Web

    Web

    Web

    Web

    Puerto SerialPuerto Serial USPP

    Puerto Paralelo

    Puerto USB

    pywin32

    Ciencia y Matematicas scipy http://www.scipy.org/

    Ciencia y Matematicas NumPy http://numpy.scipy.org//

    Ciencia y Matematicas numarray http://www.stsci.edu/resources/software_hardware/numarray

    Ciencia y Matematicas matplotlib http://matplotlib.sourceforge.net/

    Pygame http://www.pygame.org/news.html

    Pyglet http://www.pyglet.org/

    PySoy http://www.pysoy.org/

    pyOpenGL http://pyopengl.sourceforge.net/

    Jabber jabberpy http://jabberpy.sourceforge.net/

    scrape http://zesty.ca/python/scrape.html

    Beautiful Soup http://crummy.com/software/BeautifulSoup

    pythonweb http://www.pythonweb.org/

    mechanize http://wwwsearch.sourceforge.net/mechanize/

    Localizacion geoname.py http://www.zindep.com/blog-zindep/Geoname-python/

    pySerial http://pyserial.sourceforge.net/http://ibarona.googlepages.com/uspp

    pyParallel http://pyserial.sourceforge.net/pyparallel.html

    pyUSB http://bleyer.org/pyusb/

    Windows ctypes http://starship.python.net/crew/theller/ctypes/

    Windows http://sourceforge.net/projects/pywin32/

    Windows pywinauto http://www.openqa.org/pywinauto/

    Windows pyrtf http://pyrtf.sourceforge.net/

    Windows wmi http://timgolden.me.uk/python/wmi.html

  • 8/14/2019 Revista Python 2

    7/33

  • 8/14/2019 Revista Python 2

    8/33

    Destacar que es necesario para verDestacar que es necesario para verlas presentaciones resultanteslas presentaciones resultantes

    descargarse el software gratuitodescargarse el software gratuitoMacromedia FlashMacromedia Flash PlayerPlayer, disponible, disponible

    como un plugin para la mayorcomo un plugin para la mayora de losa de los

    navegadores.navegadores.

    Requisitos e instalaciRequisitos e instalacin den de WinKWinKWinKWinK es una aplicacies una aplicacin que pueden que puede

    ejecutarse tanto en Windows como enejecutarse tanto en Windows como enLinux. No presenta ninguna exigenciaLinux. No presenta ninguna exigencia

    especial con respecto a procesador oespecial con respecto a procesador o

    memoria, pero smemoria, pero s hacehacerecomendaciones con respecto a larecomendaciones con respecto a la

    resoluciresolucin de pantalla, aconsejandon de pantalla, aconsejando

    que sea igual o superior a 800x600.que sea igual o superior a 800x600.

    Sin embargo, se pueden hacerSin embargo, se pueden hacercapturas de pantalla a 640x480, perocapturas de pantalla a 640x480, pero

    se dispondrse dispondr de menor espacio parade menor espacio paratrabajar.trabajar.La instalaciLa instalacin no presenta ningunan no presenta ninguna

    dificultad.dificultad. WinKWinK se distribuye como unse distribuye como un

    fichero zip que incluye el instalador. Lofichero zip que incluye el instalador. Lo

    nico que habrnico que habr que hacer serque hacer ser

    descomprimir el archivo en undescomprimir el archivo en undirectorio temporal y ejecutar eldirectorio temporal y ejecutar el

    instalador. Posteriormente, se podrinstalador. Posteriormente, se podr

    borrar tanto el instalador como elborrar tanto el instalador como el

    fichero zip.fichero zip.

    WinkWink

    umero 2 www.aprenderpython.comwww.aprenderpython.com 7

    IntroducciIntroduccinnA la hora de realizar demostraciones deA la hora de realizar demostraciones de

    uso de un producto, ya sea comouso de un producto, ya sea como

    estrategia de ventas o como parte de unestrategia de ventas o como parte de un

    curso en lcurso en lnea, resulta de gran utilidadnea, resulta de gran utilidadpoder seguir los pasos del profesor opoder seguir los pasos del profesor o

    conferenciante de una manera visual,conferenciante de una manera visual,

    poder ver cpoder ver cmo elige una opcimo elige una opcin, cn, cmomo

    despliega un mendespliega un men o co cmo arrastra unamo arrastra unaventana. De esta manera se refuerza elventana. De esta manera se refuerza elaprendizaje y se mejora el conocimientoaprendizaje y se mejora el conocimiento

    del producto, puesto que estamosdel producto, puesto que estamos

    observando cobservando cmo se comporta en lamo se comporta en la

    realidad. Si ademrealidad. Si adems se pudiera distribuirs se pudiera distribuirla demostracila demostracin a travn a travs de Internet, lass de Internet, las

    posibilidades educativas serposibilidades educativas serananinmensas.inmensas.La grabaciLa grabacin en video de sesiones den en video de sesiones de

    trabajo es una opcitrabajo es una opcin, pero la edicin, pero la edicin den de

    la cinta para ala cinta para aadir comentarios,adir comentarios,

    etiquetas o eliminar sobrante es unaetiquetas o eliminar sobrante es unatarea compleja. La grabacitarea compleja. La grabacin porn porsoftware es una solucisoftware es una solucin mn ms sencilla,s sencilla,

    mms barata y repleta de posibilidades.s barata y repleta de posibilidades.La aplicaciLa aplicacin que se presenta an que se presenta a

    continuacicontinuacin es una herramienta quen es una herramienta que

    permite realizar presentaciones ypermite realizar presentaciones y

    tutoriales y ofrecerlas en formato flash.tutoriales y ofrecerlas en formato flash.

    Fuente:http://observatorio.cnice.mec.es/modules.php?op=modload&name=News&file=article&sid=406

    FuenteFuente::http://http://observatorio.cnice.mec.es/moobservatorio.cnice.mec.es/mo

    dules.php?opdules.php?op==modload&namemodload&name==NewNew

    s&files&file==article&sidarticle&sid=406=406

  • 8/14/2019 Revista Python 2

    9/33

    WinkWink

    umero 2 www.aprenderpython.comwww.aprenderpython.com 8

    CCmo realizar una presentacimo realizar una presentacin conn con WinKWinKPara realizar una presentaciPara realizar una presentacin conn con WinKWinK, se ejecuta el software objetivo de la, se ejecuta el software objetivo de lapresentacipresentacin y se van capturando pantallas de las acciones que se quieren mn y se van capturando pantallas de las acciones que se quieren mostrar.ostrar.PosteriormentePosteriormente WinKWinK unirunir cada una de estas pantallas en una pelcada una de estas pantallas en una pelcula continua.cula continua.La ediciLa edicin de la peln de la pelcula permitircula permitir aaadir o eliminar pantallas (tambiadir o eliminar pantallas (tambin llamadas marcosn llamadas marcosen la aplicacien la aplicacin) en cualquier punto, an) en cualquier punto, aadir comentarios, botones de anterior, siguiente oadir comentarios, botones de anterior, siguiente oincluso saltar de un marco a otro cualquiera. Se pueden realizarincluso saltar de un marco a otro cualquiera. Se pueden realizarpresentaciones todo lopresentaciones todo locomplejas que se quieran, o simplemente dejar que grabe mientrascomplejas que se quieran, o simplemente dejar que grabe mientras se trabaje.se trabaje.A las presentaciones que se crean con esta aplicaciA las presentaciones que se crean con esta aplicacin se les puede an se les puede aadir fondosadir fondos

    personalizados y tambipersonalizados y tambin se puede grabar el aspecto general de una presentacin se puede grabar el aspecto general de una presentacin comon comouna plantilla, pudiendo de esta forma aplicar el aspecto al restuna plantilla, pudiendo de esta forma aplicar el aspecto al resto de los proyectos en loso de los proyectos en losque trabajemos.que trabajemos.Una vez terminada una presentaciUna vez terminada una presentacin se exporta a formato flash, y sern se exporta a formato flash, y ser ste el que seste el que sedistribuya a travdistribuya a travs de la red o de cualquier otro medio de distribucis de la red o de cualquier otro medio de distribucin. La presentacin. La presentacinntambitambin se podrn se podr exportar como HTML, PDF oexportar como HTML, PDF o PostcriptPostcript, que servir, que servir como complementocomo complementoal fichero flash.al fichero flash.Para crear un primer proyecto de ejemplo conPara crear un primer proyecto de ejemplo con WinKWinK, se seguir, se seguirn los siguientes pasos:n los siguientes pasos:1. Abrir la aplicaci1. Abrir la aplicacin destino de la presentacin destino de la presentacin y el programan y el programa WinKWinK. A modo de ejemplo,. A modo de ejemplo,

    usaremos el explorador de Windows para demostrar cusaremos el explorador de Windows para demostrar cmo se muestran los archivos conmo se muestran los archivos conla vista en miniatura.la vista en miniatura.

  • 8/14/2019 Revista Python 2

    10/33

    WinkWink

    umero 2 www.aprenderpython.comwww.aprenderpython.com 9

    Ventana principal deVentana principal de WinKWinK2. Creamos un proyecto nuevo en2. Creamos un proyecto nuevo en WinKWinKdesde el mendesde el men ArchivoArchivo Nuevo. AparecerNuevo. Aparecerun asistente que nos guiarun asistente que nos guiar en losen lossiguientes pasos.siguientes pasos.

    Ventana del asistenteVentana del asistente3. La primera pantalla del asistente3. La primera pantalla del asistentepregunta si se quiere grabar sonidopregunta si se quiere grabar sonidomientras se realiza la presentacimientras se realiza la presentacin o non o no(para este proyecto desactivaremos la(para este proyecto desactivaremos laopciopcin), se ocultarn), se ocultar la ventana dela ventana de WinKWinKdurante la presentacidurante la presentacin y se elige qun y se elige ques lo que se quiere capturar. Se puedees lo que se quiere capturar. Se puedeelegir entre capturar la pantallaelegir entre capturar la pantalla

    completa, una ventana concreta ocompleta, una ventana concreta ocualquier regicualquier regin. Para este ejemplo sen. Para este ejemplo seelegirelegir la opcila opcin Ventana para capturarn Ventana para capturarla ventana del explorador de Windows.la ventana del explorador de Windows.Una vez elegida esta opciUna vez elegida esta opcin, yn, yhabiendo marcado la de ocultar lahabiendo marcado la de ocultar laventana deventana de WinKWinK, se pulsar, se pulsar sobre elsobre elbotbotn Seleccionar. Pinchando con eln Seleccionar. Pinchando con elratratn en la barra de tn en la barra de ttulos deltulos delexplorador, quedarexplorador, quedar seleccionada laseleccionada la

    ventana. Ahora simplemente se pulsaventana. Ahora simplemente se pulsaOK.OK.

  • 8/14/2019 Revista Python 2

    11/33

    Comienzo de captura de pantallasComienzo de captura de pantallas5. Siguiendo con el ejemplo, en la5. Siguiendo con el ejemplo, en la

    ventana del explorador de Windows,ventana del explorador de Windows,pulsar sobre detalles y despupulsar sobre detalles y despus vistass vistas

    en miniatura. Una vez hecho esto, seen miniatura. Una vez hecho esto, se

    hace doble clic sobre el iconohace doble clic sobre el icono

    minimizado delminimizado del WinKWinK y se pulsa ely se pulsa el

    botbotn Finalizarn Finalizar

    WinkWink

    umero 2 www.aprenderpython.comwww.aprenderpython.com 10

    ElecciEleccin de ventana de trabajon de ventana de trabajo4. Lo siguiente es proceder a capturar4. Lo siguiente es proceder a capturar

    las pantallas de la presentacilas pantallas de la presentacin. Existenn. Existentres maneras de hacerlo: o bien setres maneras de hacerlo: o bien secapturan scapturan slo las pantallas deseadaslo las pantallas deseadas

    pulsando Pause en cada una de ellas, opulsando Pause en cada una de ellas, o

    bien se capturan todas las pantallas ybien se capturan todas las pantallas y

    movimientos en un intervalo de tiempo omovimientos en un intervalo de tiempo o

    bien se capturan todas las pantallas ybien se capturan todas las pantallas ymovimientos desde que se pulsa unamovimientos desde que se pulsa una

    combinacicombinacin de teclas determinadan de teclas determinadahasta que se vuelve a pulsar la mismahasta que se vuelve a pulsar la misma

    combinacicombinacin. Sern. Ser estaesta ltima opciltima opcin lan la

    que elegiremos para el ejemplo, por loque elegiremos para el ejemplo, por lo

    que a continuacique a continuacin se pulsa el botn se pulsa el botn yn yse procede a la captura pulsandose procede a la captura pulsandoAltAlt+Pause. A partir de ese momento,+Pause. A partir de ese momento,

    todo lo que se realice sobre la pantallatodo lo que se realice sobre la pantallaserser capturado.capturado.

    Fin de capturas de pantallasFin de capturas de pantallas6. Cuando se pulsa el bot6. Cuando se pulsa el botn Finalizan Finalizar

    aparece la ventana principal deaparece la ventana principal de WinKWinK

    con el proyecto abierto y las ventanacon el proyecto abierto y las ventanacapturadas listas para trabajar cocapturadas listas para trabajar co

    ellas. En este momento se puede veellas. En este momento se puede ve

    si se han capturado pantallasi se han capturado pantalla

    repetidas o si sobran pantallasrepetidas o si sobran pantallas

    pudiendo proceder a eliminarlas si spudiendo proceder a eliminarlas si se

    deseadesea

  • 8/14/2019 Revista Python 2

    12/33

    WinkWink

    umero 2 www.aprenderpython.comwww.aprenderpython.com 11

    Ventana principal delVentana principal del WinKWinK con un proyectocon un proyecto

    7. Una vez elegidas las pantallas definitivas que van a formar p7. Una vez elegidas las pantallas definitivas que van a formar parte del proyecto,arte del proyecto,

    se podrse podr trabajar sobre cada marco por separado. Se pueden atrabajar sobre cada marco por separado. Se pueden aadir comentariosadir comentariosde texto, de audio, botones de avance o retroceso, imde texto, de audio, botones de avance o retroceso, imgenes de fondo. En elgenes de fondo. En el rearea

    de seleccide seleccin aparecen las pantallas definitivas.n aparecen las pantallas definitivas.

  • 8/14/2019 Revista Python 2

    13/33

    Ventana de propiedades del marcoVentana de propiedades del marco9. Al pulsar el bot9. Al pulsar el botn de cuadro den de cuadro de

    texto, aparece un globo de texto en latexto, aparece un globo de texto en lapantalla que podremos mover, cambiarpantalla que podremos mover, cambiar

    de forma o de color, ade forma o de color, aadir o eliminaradir o eliminar

    texto, etc.texto, etc.

    WinkWink

    umero 2 www.aprenderpython.comwww.aprenderpython.com 12

    rea de seleccirea de seleccin de pantallasn de pantallas8. Para seguir con el ejemplo, se va a8. Para seguir con el ejemplo, se va a

    poner un comentario de texto en una deponer un comentario de texto en una delas pantallas. Para ello, se selecciona lalas pantallas. Para ello, se selecciona lapantalla deseada (en este caso lapantalla deseada (en este caso la

    primera). Luego, se elige la opciprimera). Luego, se elige la opcin den de

    cuadro de texto en la pantalla decuadro de texto en la pantalla de

    propiedades de marco que aparece a lapropiedades de marco que aparece a la

    derecha. En esa ventana aparecen lasderecha. En esa ventana aparecen lascaractercaractersticas del marco, como el tsticas del marco, como el ttulo,tulo,

    los segundos que debe aparecer ellos segundos que debe aparecer elmarco en la presentacimarco en la presentacin, los botonesn, los botones

    que se le han aque se le han aadido, etc.adido, etc.

    Cuadro de textoCuadro de texto10. Lo siguiente que vamos a hacer e10. Lo siguiente que vamos a hacer enla presentacila presentacin de ejemplo es an de ejemplo es aadad

    un botun botn de avance. Normalmente, lon de avance. Normalmente, lo

    marcos de la pelmarcos de la pelcula avanzarcula avanzarn dn de

    manera autommanera automtica con el retardo qutica con el retardo quese especifica en las propiedades de lse especifica en las propiedades de la

    ventana. Sin embargo, en muchaventana. Sin embargo, en muchaocasiones es conveniente que sea eocasiones es conveniente que sea e

    propio usuario el que avance propio usuario el que avance o

    retroceda. Para aretroceda. Para aadir un botadir un botn dn de

    avance, se pulsa en el iconavance, se pulsa en el icono

    correspondiente.correspondiente.

  • 8/14/2019 Revista Python 2

    14/33

    BotBotn de avancen de avance12. Adem12. Adems de cuadros de texto os de cuadros de texto o

    botones de avance o retroceso, sebotones de avance o retroceso, sepueden apueden aadir archivos de audio (paraadir archivos de audio (para

    poner comentarios sobre lo que seponer comentarios sobre lo que se

    estest haciendo), formas diversas,haciendo), formas diversas,

    enlaces a penlaces a pginasginas webweb o inclusoo incluso

    botones para ir desde cualquier marcobotones para ir desde cualquier marco

    a cualquier otro.a cualquier otro.

    13. Cuando no se quieren poner13. Cuando no se quieren ponerbotones de avance, sino que lo que sebotones de avance, sino que lo que se

    quiere es que alguno (o todos) losquiere es que alguno (o todos) los

    marcos avancen de maneramarcos avancen de manera

    automautomtica, se debe temporizar eltica, se debe temporizar elmarco, amarco, aadiendo un tiempo deadiendo un tiempo de

    permanencia del marco.permanencia del marco.

    WinkWink

    umero 2 www.aprenderpython.comwww.aprenderpython.com 13

    Icono de botIcono de botn de avancen de avance11. Cuando se pulsa el icono de bot11. Cuando se pulsa el icono de botnnde avance, aparece el icono en el marcode avance, aparece el icono en el marcoactivo, que se podractivo, que se podr colocar dcolocar dnde sende se

    desee.desee.

    Tiempo de permanencia delTiempo de permanencia del frameframe14. Otra caracter14. Otra caracterstica que puede sestica que puede se

    de mucha utilidad es la posibilidad dede mucha utilidad es la posibilidad de

    aaadir una gran cantidad de formaadir una gran cantidad de forma

    predefinidas e incluso apredefinidas e incluso aadir formaadir formacreadas por el usuario para dar mcreadas por el usuario para dar mcontenido a las presentaciones. Entrcontenido a las presentaciones. Entre

    las formas predefinidas, destacan lolas formas predefinidas, destacan losignos de interrogacisignos de interrogacin, las marcas dn, las marcas de

    correcto o equivocado, etc.correcto o equivocado, etc.

  • 8/14/2019 Revista Python 2

    15/33

    Icono de forma predefinidaIcono de forma predefinida

    WinkWink

    umero 2 www.aprenderpython.comwww.aprenderpython.com 14

    Ventana de forma predefinidaVentana de forma predefinida15. Todas las modificaciones que se15. Todas las modificaciones que se

    hayan ahayan aadido a un marco podradido a un marco podrn sern ser

    activadas o desactivadas a voluntad. Deactivadas o desactivadas a voluntad. De

    esta manera, se puede eliminaresta manera, se puede eliminarcualquier elemento que no hayacualquier elemento que no hayaquedado como se deseaba y se puedequedado como se deseaba y se puede

    volver a activar en el futuro.volver a activar en el futuro.

    SelecciSeleccin de los componentes deln de los componentes del

    marcomarco

    ElEl ltimo paso es generar lltimo paso es generar la

    presentacipresentacin en formato flash. Parn en formato flash. Para

    ello, se debe pulsar en el botello, se debe pulsar en el botn dn degenerar . Una vez generada lgenerar . Una vez generada la

    presentacipresentacin, se puede visualizar en en, se puede visualizar en enavegador predeterminado pulsandnavegador predeterminado pulsando

    el botel botn previsualizar . Los archivon previsualizar . Los archivo

    generados sergenerados sern los que se pueden los que se puede

    ver en la figura siguiente.ver en la figura siguiente.

  • 8/14/2019 Revista Python 2

    16/33

    WinkWink

    umero 2 www.aprenderpython.comwww.aprenderpython.com 15

    Archivos generados delArchivos generados del WinKWinK

    17. Por17. Por ltimo y como ya se ha comentado, ademltimo y como ya se ha comentado, adems de generar la salida ens de generar la salida enformato flash se puede obtener la presentaciformato flash se puede obtener la presentacin en HTML, en PDF o incluso enn en HTML, en PDF o incluso en

    postcriptpostcript. Para ello, se elige la opci. Para ello, se elige la opcin correspondiente desde el menn correspondiente desde el men archivo.archivo.

    Fuente:http://observatorio.cnice.mec.es/modules.php?op=modload&name=News&file=article&sid=406

    FuenteFuente::http://http://observatorio.cnice.mec.es/modules.php?opobservatorio.cnice.mec.es/modules.php?op ==modload&namemodload&name==News&fileNews&file==articlarticl

    e&side&sid=406=406

  • 8/14/2019 Revista Python 2

    17/33

    GoogleGoogle AppApp EngineEngine es un servicioes un servicioque nos permite ejecutar nuestrasque nos permite ejecutar nuestrasaplicacionesaplicaciones webweb en los servidoresen los servidores

    de Google. Este servicio ofrece,de Google. Este servicio ofrece,

    ademadems de la ejecucis de la ejecucin den de

    aplicaciones, un sistema de basesaplicaciones, un sistema de bases

    de datos no relacionales y espaciode datos no relacionales y espacio

    de almacenamiento, el yade almacenamiento, el ya

    comentadocomentado BigTableBigTable..

    Google App EngineGoogle App Engine

    umero 2 www.aprenderpython.comwww.aprenderpython.com 16

    Pero mPero ms importante, permite el desarrollos importante, permite el desarrollo

    de aplicacionesde aplicaciones webweb con un coste reducidocon un coste reducido

    y con una infraestructura solvente, comoy con una infraestructura solvente, comoes la de los servidores de Google. Estoes la de los servidores de Google. Esto

    implica un ratio de funcionamiento muyimplica un ratio de funcionamiento muyalto y la posibilidad de escalar, es decir dealto y la posibilidad de escalar, es decir deaumentar los recursos utilizados, de formaaumentar los recursos utilizados, de forma

    sencilla.sencilla.

    QuQu implica esto para nosotros comoimplica esto para nosotros comousuarios?usuarios?Pues que podremos encontrar cada dPues que podremos encontrar cada daa

    mms servicioss servicios webweb que funcionen rque funcionen rpido ypido ysin problemas de escalabilidad. Por ponersin problemas de escalabilidad. Por poner

    un ejemplo,un ejemplo, TwitterTwitter, en sus inicios ten, en sus inicios tenaa

    serios problemas de este tipo, cayserios problemas de este tipo, cayndosendose

    el servicio cada dos por tres debido al altoel servicio cada dos por tres debido al alto

    nnmero de usuarios y a una cantidad demero de usuarios y a una cantidad deservidores no dimensionada a loservidores no dimensionada a lonecesario.necesario.

    En una aplicaciEn una aplicacin como esta, si eln como esta, si el

    nnmero de usuarios crece muchomero de usuarios crece mucho

    necesitaremos optimizar cnecesitaremos optimizar cdigo ydigo yaaadir nuevos servidores, con eladir nuevos servidores, con el

    consiguiente gasto. Con Googleconsiguiente gasto. Con Google AppAppEngineEngine no debemos preocuparnosno debemos preocuparnosde ello, ya que el servicio sede ello, ya que el servicio se

    redimensiona automredimensiona automticamente.ticamente.

    http://http://code.google.com/appenginecode.google.com/appengine //

  • 8/14/2019 Revista Python 2

    18/33

    De momento, y como todo lo queDe momento, y como todo lo quelanza Google se encuentra en betalanza Google se encuentra en beta

    limitada a 10000 desarrolladores y nolimitada a 10000 desarrolladores y no

    parece ya haber mparece ya haber mss plazas libresplazas libres

    Los que han conseguido registrarseLos que han conseguido registrarse

    ya pueden empezar a probar susya pueden empezar a probar sus

    aplicaciones, que deben estaaplicaciones, que deben esta

    programadas en Python, aunqueprogramadas en Python, aunqueesperan aumentar el nesperan aumentar el nmero demero de

    lenguajes soportados en un futuro.lenguajes soportados en un futuro.

    Aunque todavAunque todava no han anunciadoa no han anunciado

    cual sercual ser el precio del servicioel precio del serviciosabemos que dispondremos de hastasabemos que dispondremos de hasta

    500 MB de espacio de500 MB de espacio de

    almacenamiento, 200 millones dealmacenamiento, 200 millones de

    megaciclos de CPU por dmegaciclos de CPU por da y 10 GBa y 10 GB

    de transferencia diarios. Segde transferencia diarios. Segnn

    Google esto deberGoogle esto debera bastar para sitiosa bastar para sitios

    que sirvan hasta cinco millones deque sirvan hasta cinco millones deppginas diarias. Dentro de estosginas diarias. Dentro de estos

    llmites, el uso sermites, el uso ser gratuito y sologratuito y solo

    habrhabr que pagar si los superamos.que pagar si los superamos.

    Por cierto, los servicios estarPor cierto, los servicios estarnnalojados bajo un subdominio dealojados bajo un subdominio de

    appspot.comappspot.com o, mediante Googleo, mediante GoogleAppsApps, en nuestro propio dominio, en nuestro propio dominiotenemos el primer ejemplo detenemos el primer ejemplo de

    aplicaciaplicacin funcional enn funcional en HuddleHuddle ChatChat

    aunque en estos momentos no pareceaunque en estos momentos no parece

    estar funcionando del todo bien.estar funcionando del todo bien.

    Google App EngineGoogle App Engine

    umero 2 www.aprenderpython.comwww.aprenderpython.com 17

    QuQu implica para desarrolladores?implica para desarrolladores?

    Pues bPues bsicamente lo mismo, pero vistosicamente lo mismo, pero vistodesde el otro lado. Nuestra aplicacidesde el otro lado. Nuestra aplicacinn webwebpuede empezar siendo muy pequepuede empezar siendo muy pequea y cona y con

    un coste muy bajo (o cero, como veremosun coste muy bajo (o cero, como veremos

    ahora), pero con posibilidad de crecerahora), pero con posibilidad de crecer

    mucho sin que debamos preocuparnos de lamucho sin que debamos preocuparnos de la

    infraestructura que tenemos por detrinfraestructura que tenemos por detrs. Des. Dehecho, dispondremos ademhecho, dispondremos adems de otross de otros

    servicios, como la descarga de pservicios, como la descarga de pginasginas webweb

    o el envo el envo de correo electro de correo electrnico quenico queaprovechan las infraestructuras existentesaprovechan las infraestructuras existentes

    de Google. Tambide Google. Tambin dispondremos den dispondremos de APIsAPIs

    para la identificacipara la identificacin de usuarios conn de usuarios con

    cuentas Google, punto que a mi no mecuentas Google, punto que a mi no meacaba de convencer, aunque de todosacaba de convencer, aunque de todos

    modos no es de obligada implantacimodos no es de obligada implantacinn

  • 8/14/2019 Revista Python 2

    19/33

    Nosotros nos hemos descargadoNosotros nos hemos descargado

    este SDK (requiere una versieste SDK (requiere una versin den dePython mayor o igual que 2.5), yPython mayor o igual que 2.5), yhemos hecho algunos de loshemos hecho algunos de los

    ejemplos de cejemplos de cdigo que se explicandigo que se explican

    en este pequeen este pequeoo tutorialtutorial. Cuando se. Cuando se

    desarrolla en local, la aplicacidesarrolla en local, la aplicacinn

    'habla' por el puerto 8080 de nuestro'habla' por el puerto 8080 de nuestroPC (http://PC (http://localhostlocalhost:8080), y es:8080), y es

    necesario hacer un 'necesario hacer un 'deploydeploy' a los' a los

    servidores de Google. Esto se haceservidores de Google. Esto se hacemediante el scripmediante el scrip

    ''google_appengine.pygoogle_appengine.py ', que nos', que nos

    pedirpedir nuestro usuario y contrasenuestro usuario y contraseaa

    de Google para subir la aplicacide Google para subir la aplicacin an aespacio de 'Googleespacio de 'Google AppApp EngineEngine' que' que

    nos han facilitado.nos han facilitado.

    Google App EngineGoogle App Engine

    umero 2 www.aprenderpython.comwww.aprenderpython.com 18

    Para comenzar a utilizar 'GooglePara comenzar a utilizar 'Google AppApp

    EngineEngine', lo primero que deb', lo primero que debis hacer esis hacer esdescargaros estedescargaros este kitkit de desarrollo SDK,de desarrollo SDK,disponible para diversos Sistemasdisponible para diversos Sistemas

    Operativos como Linux, MS Windows o MacOperativos como Linux, MS Windows o Mac

    OS X. Este SDK estOS X. Este SDK est implementado enimplementado en

    Python, el lenguaje de programaciPython, el lenguaje de programacin creadon creado

    por Guido vanpor Guido van RossumRossum, ingeniero que fue, ingeniero que fuecontratado por Google en octubre de 2005.contratado por Google en octubre de 2005.

    De hecho, el sistema de gestiDe hecho, el sistema de gestin de cn de cdigodigo

    de programacide programacin que se utiliza internamenten que se utiliza internamentedentro de la compadentro de la compaa, llamado 'Googlea, llamado 'Google

    Mondrian', ha sido desarrollado por el propioMondrian', ha sido desarrollado por el propio

    vanvan RossumRossum utilizando Python y losutilizando Python y los

    primeros prototipos de 'Googleprimeros prototipos de 'Google AppApp EngineEngine''(ver v(ver vdeo en el grupo dedeo en el grupo de FacebookFacebook).).

  • 8/14/2019 Revista Python 2

    20/33

    Otro punto muy interesante de esteOtro punto muy interesante de este

    nuevo 'Googlenuevo 'Google AppApp EngineEngine' es que se' es que sepueden integrar las aplicaciones quepueden integrar las aplicaciones quevayamos creando con el sistema devayamos creando con el sistema de

    cuentas personales de Google, en lo quecuentas personales de Google, en lo que

    se ha llamado 'se ha llamado 'UserUser ServiceService' (ve' (ve

    referencia de API). Ademreferencia de API). Adems, tambis, tambin sen se

    proporciona un pequeproporciona un pequeo sistema deo sistema deplantillas, que permite utilizar motores deplantillas, que permite utilizar motores de

    templatestemplates de Python ya existentes.de Python ya existentes.

    Las aplicaciones deLas aplicaciones de AppApp EngineEngine sonsonffciles de crear, de mantener y deciles de crear, de mantener y de

    redimensionar a medida que aumenta suredimensionar a medida que aumenta su

    trtrfico.fico.

    Google App EngineGoogle App Engine

    umero 2 www.aprenderpython.comwww.aprenderpython.com 19

    Se trata de un ejemplo muy sencillo elSe trata de un ejemplo muy sencillo elque hemos hecho, porque el puntoque hemos hecho, porque el punto

    fuerte de 'Googlefuerte de 'Google AppApp EngineEngine' es su' es su

    capacidad de almacenamiento de datoscapacidad de almacenamiento de datos

    en los servidores de Google a traven los servidores de Google a travs des dela tecnologla tecnologa dea de BigTableBigTable y GFS. Paray GFS. Para

    ello, utiliza la nomenclatura del modeloello, utiliza la nomenclatura del modelo

    de API de gestide API de gestin de datos deln de datos delframeworkframework DjangoDjango, modelo que pod, modelo que podisis

    consultar en este enlace. Para realizarconsultar en este enlace. Para realizar

    laslas queriesqueries aa BigTableBigTable, los ingenieros de, los ingenieros de

    Google han creado un lenguaje deGoogle han creado un lenguaje de

    consultas, llamado GQL (Google Queryconsultas, llamado GQL (Google QueryLanguageLanguage), muy similar al conocido), muy similar al conocido

    SQL. TenSQL. Tenis un documentaciis un documentacin den de

    referencia en esta preferencia en esta pgina.gina.

    Nosotros hemos creado la aplicaciNosotros hemos creado la aplicacinn

    de ejemplo que permitede ejemplo que permite experiementaexperiementa

    con los 'con los 'RequestsRequests' de peticiones de los' de peticiones de los

    usuarios, y que simula un pequeusuarios, y que simula un pequeoo

    libro de visitas. Lo podlibro de visitas. Lo podis encontrar enis encontrar eneste enlace y, como podeste enlace y, como podis comprobaris comprobar

    se encuentra alojado en el subdominiose encuentra alojado en el subdominio'dirson1.'dirson1.appspot.comappspot.com'. Google nos'. Google nos

    ofrece la posibilidad de alojar lasofrece la posibilidad de alojar las

    aplicaciones de 'Googleaplicaciones de 'Google AppApp EngineEngine

    bajo el dominio 'bajo el dominio 'appspot.comappspot.com', pero', pero

    tambitambin podemos utilizar nuestron podemos utilizar nuestropropio dominio, siempre y cuandopropio dominio, siempre y cuando

    nuestra empresa estnuestra empresa est utilizandoutilizando

    'Google'Google AppsApps''

    FUENTES:FUENTES: http://http://code.google.com/appenginecode.google.com/appengine/, http://www.genbeta.com/2008/04/08/, http://www.genbeta.com/2008/04/08--googlegoogle--appapp--engine, http://google.dirson.com/post/3944engine, http://google.dirson.com/post/3944--googlegoogle--appapp--engine, http://programaengine, http://programa--concon--google.blogspot.com/2008/05/msgoogle.blogspot.com/2008/05/ms--sobresobre--elel--googlegoogle--appapp--engine.htmlengine.html

  • 8/14/2019 Revista Python 2

    21/33

    umero 2 www.aprenderpython.comwww.aprenderpython.com 20

    Estaba impresionado por lo nEstaba impresionado por lo ntidos y directos que eran ambos proyectos y no pastidos y directos que eran ambos proyectos y no pas

    mucho tiempo antes que me diera cuenta que mezclar Python y SDLmucho tiempo antes que me diera cuenta que mezclar Python y SDL era unaera una

    propuesta interesante.propuesta interesante.

    DescubrDescubr un pequeun pequeo proyecto ya en curso con exactamente la misma idea,o proyecto ya en curso con exactamente la misma idea,

    PySDLPySDL. Creada por Mark Baker,. Creada por Mark Baker,PySDLPySDL era una implementaciera una implementacin directa de SDL como una extensin directa de SDL como una extensin de Python. Lan de Python. La

    interfase era mas limpia que una envoltura geninterfase era mas limpia que una envoltura genrica SWIG, pero forzaba un "estilorica SWIG, pero forzaba un "estilo

    C" al cC" al cdigo. La muerte repentina dedigo. La muerte repentina de PySDLPySDL se incito a empezar un nuevose incito a empezar un nuevo

    proyecto por mi cuenta.proyecto por mi cuenta.QuerQuera generar un proyecto que realmente tomara ventaja de Python. Mia generar un proyecto que realmente tomara ventaja de Python. Mi meta erameta era

    hacer muy simple realizar las cosas sencillas, y directo para hahacer muy simple realizar las cosas sencillas, y directo para hacer las cosascer las cosas

    difdifciles.ciles. PygamePygame empezempez en Octubre del 2000. Seis meses mas tarde la versien Octubre del 2000. Seis meses mas tarde la versinn1.0 de1.0 de PygamePygame fue lanzado.fue lanzado.

    HistoriaHistoriaPygamePygame comenzcomenz en el verano delen el verano del

    2000. Siendo un programador C por2000. Siendo un programador C por

    muchos amuchos aos, descubros, descubr Python y SDLPython y SDL

    casi al mismo tiempo. Usted ya estcasi al mismo tiempo. Usted ya est

    familiarizado con Python, que estabafamiliarizado con Python, que estaba

    en su versien su versin 1.5.2, por lo tanton 1.5.2, por lo tanto

    podrpodra necesitar una introduccia necesitar una introduccin an aSDL, que significa SimpleSDL, que significa Simple

    DirectmediaDirectmedia LayerLayer. Creada por. Creada por SamSam

    LantingaLantinga, es una biblioteca, es una biblioteca

    multiplataforma para controlarmultiplataforma para controlar

    multimedia, comparable amultimedia, comparable a DirectXDirectX. A. Asido usada para cientos de juegossido usada para cientos de juegos

    comerciales y de ccomerciales y de cdigo abierto.digo abierto.

    FUENTES: http://FUENTES: http://es.wikipedia.org/wiki/Pygamees.wikipedia.org/wiki/Pygame

  • 8/14/2019 Revista Python 2

    22/33

    umero 2 www.aprenderpython.comwww.aprenderpython.com 21

    Al comienzo del 2001, el desarrolladorAl comienzo del 2001, el desarrollador

    RebelRebel ActAct StudiosStudios termintermin su juego,su juego,

    SeveranceSeverance: Blade: Blade ofofDarkness. UsadoDarkness. Usadosu propio motor de 3D a medida, elsu propio motor de 3D a medida, el

    resto del juego estresto del juego est escrito en Python.escrito en Python.

    El juego es en tercera persona deEl juego es en tercera persona deacciaccin sangrienta. Usted controla an sangrienta. Usted controla a

    guerreros medievales en intrincadasguerreros medievales en intrincadas

    combinaciones de ataquescombinaciones de ataques

    "decapitantes" mientras explora"decapitantes" mientras explora

    calabozos y castillos. Puedecalabozos y castillos. Puede

    descargar agregados creados pordescargar agregados creados porterceras partes para este juego, yterceras partes para este juego, y

    encontrar que no son nada mas queencontrar que no son nada mas quearchivos fuente de Python.archivos fuente de Python.

    Python y los juegosPython y los juegosEs Python conveniente para juegos?Es Python conveniente para juegos?

    La respuesta es, "Depende del juego".La respuesta es, "Depende del juego".

    Python es realmente bastante capazPython es realmente bastante capaz

    de correr juegos. Probablemente hastade correr juegos. Probablemente hasta

    lo sorprenda cuanto se puede hacer enlo sorprenda cuanto se puede hacer enmenos de 30 milisegundos.menos de 30 milisegundos.

    AAn asn as, no es dif, no es difcil llegar al techo unacil llegar al techo unavez que su juego se haga masvez que su juego se haga mas

    complejo. Cualquier juegocomplejo. Cualquier juego

    ejecutejecutndose en tiempo real harndose en tiempo real har usouso

    completo de la computadora.completo de la computadora.

    Durante losDurante los ltimos altimos aos ha existidoos ha existidouna tendencia interesante en eluna tendencia interesante en el

    desarrollo de juegos, que se acerca adesarrollo de juegos, que se acerca a

    lenguajes de mas alto nivel.lenguajes de mas alto nivel.Usualmente un juegos se divide en 2Usualmente un juegos se divide en 2

    grandes partes. El motor del juego, elgrandes partes. El motor del juego, el

    cual tiene que ser lo mas rcual tiene que ser lo mas rpidopido

    posible, y la lposible, y la lgica del juego, que legica del juego, que leindica al motor que debe realizar. Noindica al motor que debe realizar. No

    hace mucho tiempo que el motor de unhace mucho tiempo que el motor de un

    juego se escrib juego se escriba ena en AssemblerAssembler, con, con

    porciones escritas en lenguaje C. Hoyporciones escritas en lenguaje C. Hoy

    en den da, C se ha trasladado al motor dela, C se ha trasladado al motor del juego, mientras que el juego mismo esjuego, mientras que el juego mismo es

    escrito en un lenguaje de Scripts deescrito en un lenguaje de Scripts de

    mas alto nivel. Juegos comomas alto nivel. Juegos como QuakeQuake 3 y3 yUnrealUnreal ejecutan estos Scripts comoejecutan estos Scripts como

    ccdigo binariodigo binario portableportable.. http://http://www.pygame.org/news.htmlwww.pygame.org/news.html

  • 8/14/2019 Revista Python 2

    23/33

    umero 2 www.aprenderpython.comwww.aprenderpython.com 22

    PygamePygame y SDL sirven como excelentes motores C para juegos 2D. Los juegy SDL sirven como excelentes motores C para juegos 2D. Los juegososigualmente pasarigualmente pasarn la mayor parte del tiempo de ejecucin la mayor parte del tiempo de ejecucin dentro de SDLn dentro de SDL

    manejando sus grmanejando sus grficos. SDL puede tomar ventaja de la aceleracificos. SDL puede tomar ventaja de la aceleracin de hardwaren de hardware

    de grde grficos. Habilitando esto, se puede elevar el rendimiento de un juficos. Habilitando esto, se puede elevar el rendimiento de un juego queego que

    corre aproximadamente a 40 cuadros por segundo hasta 200 cuadroscorre aproximadamente a 40 cuadros por segundo hasta 200 cuadros porpor

    segundos. Cuando se ve a un juego de Python ejecutando a 200 cuasegundos. Cuando se ve a un juego de Python ejecutando a 200 cuadros pordros por

    segundos, se puede ver que Python y los juegos pueden funcionarsegundos, se puede ver que Python y los juegos pueden funcionarjuntos.juntos.

    Es impresionante cuan bien funcionan Python y SDL en mEs impresionante cuan bien funcionan Python y SDL en mltiples plataformas.ltiples plataformas.Por ejemplo, en Mayo del 2001 lance mi propio proyectoPor ejemplo, en Mayo del 2001 lance mi propio proyecto PygamePygame completo,completo,

    SolarWolfSolarWolf, un juego de acci, un juego de accin del estilon del estilo ArcadeArcade..

    Una cosa que me ha sorprendido es que un aUna cosa que me ha sorprendido es que un ao mas tarde, no ha existido lao mas tarde, no ha existido la

    necesidad de parches, arreglo de Bugs, o actualizaciones. El juenecesidad de parches, arreglo de Bugs, o actualizaciones. El juego fuego fuedesarrollado enteramente en Windows, pero corre en Linux, Mac OSdesarrollado enteramente en Windows, pero corre en Linux, Mac OSX y muchosX y muchosUnix sin la necesidad de trabajo extra por mi lado.Unix sin la necesidad de trabajo extra por mi lado.

    AAn asn as, hay limitaciones muy claras. La mejor manera de manejar gr, hay limitaciones muy claras. La mejor manera de manejar grficos deficos de

    aceleradoras de video no es siempre la forma de obtener resultadaceleradoras de video no es siempre la forma de obtener resultados ros rpidos delpidos del

    Software que procesa grSoftware que procesa grficos. El soporte de hardware no estficos. El soporte de hardware no est disponible endisponible entodas las plataformas. Cuando un juego se hace mas complejo, usutodas las plataformas. Cuando un juego se hace mas complejo, usualmente sealmente se

    tiene que comprometer con uno u otro. SDL tiene otras limitaciontiene que comprometer con uno u otro. SDL tiene otras limitaciones de disees de diseo,o,cosas como los desplazamientos de pantalla completa pueden llevacosas como los desplazamientos de pantalla completa pueden llevar rr rpidamentepidamentea su juego a velocidadesa su juego a velocidades injugablesinjugables..

    Libro queLibro queencontraraencontrara

    s en el foros en el forodede

    AorenderAorenderPythonPython

    dentro dedentro delos niveleslos nivelesavanzadosavanzados..

  • 8/14/2019 Revista Python 2

    24/33

    umero 2 www.aprenderpython.comwww.aprenderpython.com 23

    Mientras SDL no es conveniente paraMientras SDL no es conveniente para

    todo tipo de juegos, recuerde quetodo tipo de juegos, recuerde que

    compacompaas como Loki usaron SDL paraas como Loki usaron SDL para

    ejecutar una gran variedad de tejecutar una gran variedad de ttulos detulos de

    calidad de ventas por menor.calidad de ventas por menor.PygamePygame es de bajo nivel cuando sees de bajo nivel cuando se

    trata de escribir juegos. Se encontrartrata de escribir juegos. Se encontrarrrpidamente en la necesidad depidamente en la necesidad de

    envolver funciones comunes en suenvolver funciones comunes en su

    propio ambiente de juego. La granpropio ambiente de juego. La gran

    ventaja de esto es que no hay nada enventaja de esto es que no hay nada en

    PygamePygame que le impida seguir su camino.que le impida seguir su camino.Su programa estSu programa est en total control deen total control de

    todo. El efecto colateral de esto es quetodo. El efecto colateral de esto es que

    se encontrarse encontrar pidiendo prestado muchopidiendo prestado mucho

    ccdigo para realizar un marco de trabajodigo para realizar un marco de trabajo

    mas avanzado. Necesitarmas avanzado. Necesitar un mejorun mejorentendimiento de lo que estentendimiento de lo que est haciendo.haciendo.

    Resumen de mResumen de mdulosdulos PygamePygame

    cdromcdrom:: administra los dispositivos CDROMadministra los dispositivos CDROMla reproduccila reproduccin de CDs de audio.n de CDs de audio. cursorscursors:: carga imcarga imgenes de cursor,genes de cursor,incluyendo los cursores por defecto.incluyendo los cursores por defecto. display:display: controla la ventana principal ocontrola la ventana principal opantalla.pantalla.

    drawdraw:: dibuja figuras simples sobre objetosdibuja figuras simples sobre objetosSurfaceSurface.. eventevent:: administra eventos y la cola deadministra eventos y la cola deeventos.eventos. fontfont:: genera e imprime fuentes tipogrgenera e imprime fuentes tipogrficasficasTruetypeTruetype.. imageimage:: lee y graba imlee y graba imgenes.genes.joystick:joystick: administra dispositivos de joysticadministra dispositivos de joystic keykey:: administra el teclado.administra el teclado.

    mousemouse:: permite controlar elpermite controlar el mousemouse moviemovie:: reproduce pelreproduce pelculas en formatoculas en formatoMPEG.MPEG. sndarraysndarray:: manipula sonidos conmanipula sonidos con NumericNumeric.. surfarraysurfarray:: manipula immanipula imgenes congenes con NumeriNumeri time:time: controlador de tiempo.controlador de tiempo. transformtransform:: puede escalar, rotar e invertirpuede escalar, rotar e invertirimimgenesgenes

    Fuente:Fuente:www.losersjuegos.com.arwww.losersjuegos.com.ar

  • 8/14/2019 Revista Python 2

    25/33

    2) Puerto : Los puertos IP son numerados2) Puerto : Los puertos IP son numerados

    del 0 al 65536 usados para dirigir losdel 0 al 65536 usados para dirigir losdistintos tipos de actividad existente endistintos tipos de actividad existente enInternet, al software apropiado en elInternet, al software apropiado en elordenador local. Piensa en tu ordenadorordenador local. Piensa en tu ordenador

    como una oficina de un edificio, con variascomo una oficina de un edificio, con varias

    salas y habitaciones para desempesalas y habitaciones para desempearar

    diferentes funciones. La direccidiferentes funciones. La direccin IP quen IP queutilizamos para navegar por Internetutilizamos para navegar por Internet

    correspondercorrespondera con el nombre de la calle dela con el nombre de la calle deledificio, y los puertos IP seredificio, y los puertos IP seran los nan los nmerosmeros

    de las habitaciones. Pero ten en cuenta quede las habitaciones. Pero ten en cuenta que

    no se pueden entablar dos conexiones porno se pueden entablar dos conexiones por

    el mismo puerto por lo tanto es convenienteel mismo puerto por lo tanto es conveniente

    utilizar puertos grandes como 12345 que noutilizar puertos grandes como 12345 que noson utilizados por otros programas.son utilizados por otros programas.

    CodigoCodigo FuenteFuenteSockets enSockets en

    PythonPython

    umero 2 www.aprenderpython.comwww.aprenderpython.com 24

    Primero que nada vamos a ver dePrimero que nada vamos a ver dequeque ablamosablamos cuando decimoscuando decimossocketsocket. Se dice. Se dice socketsocket a una un

    mecanismo de comunicacimecanismo de comunicacinn

    general entre dos procesosgeneral entre dos procesos

    cualquiera que pertenezcan a uncualquiera que pertenezcan a un

    mismo sistema o a dos sistemasmismo sistema o a dos sistemas

    diferentes.diferentes.

    Esta conexiEsta conexin se puede entablar porn se puede entablar pordiferentes dominios pero nosotrosdiferentes dominios pero nosotros

    explicaremos elexplicaremos el AF_INETAF_INET, el cual,, el cual,

    se utiliza para comunicacionesse utiliza para comunicaciones

    TCP(UDPTCP(UDP)/IP.)/IP.Para entender esta definiciPara entender esta definicinnnecesitamos tener algunosnecesitamos tener algunos

    conceptos claros:conceptos claros:1) Direcci1) Direccin IP: La direccin IP: La direccin IP esn IP es

    una serie de nuna serie de nmeros asociadas ameros asociadas a

    un dispositivo (generalmente unaun dispositivo (generalmente una

    computadora), con la cual es posiblecomputadora), con la cual es posible

    identificarlo dentro de una redidentificarlo dentro de una redconfigurada especconfigurada especficamente paraficamente para

    utilizar este tipo de direcciones. Esutilizar este tipo de direcciones. Es

    Decir es laDecir es la direcciondireccion de tude tu

    computadora dentro de esta red. Escomputadora dentro de esta red. Esimportante saber laimportante saber la ipip del equipodel equipo

    remoto pararemoto para asiasi poder entablar lapoder entablar la

    conexiconexin, ya que , de lo contrario eln, ya que , de lo contrario elprograma noprograma no sabriasabria dondedonde

    conectarse.conectarse.

  • 8/14/2019 Revista Python 2

    26/33

    import socket #Importamos el modulo

    serversocket = socket.socket(socket.AF_INET,

    socket.SOCK_STREAM) # Creamos el socket

    serversocket.bind(('localhost', 8000)) #Le asignamos una direccin y un

    puerto al servidor, por medio de una tupla (add, host).

    serversocket.listen(1) #Esperamos 1 coneccion

    clientsocket, clientaddress = serversocket.accept() #si llega alguna

    conexin la aceptamos

    print 'Conexin desde: ', clientaddresswhile 1: #Creamos un bucle infinito

    data = clientsocket.recv(1024) #recibimos el mensaje

    if not data: break #si no hay mensaje se corta el bucle infinito y

    cortamos la conexin

    clientsocket.close() #se cierra la conexin

    CodigoCodigo FuenteFuenteSockets enSockets en

    PythonPython

    umero 2 www.aprenderpython.comwww.aprenderpython.com 25

    No es muy complejo adaptarse a laNo es muy complejo adaptarse a la

    manera en que trabajan losmanera en que trabajan los socketssockets,,

    primero que nada se necesita unaprimero que nada se necesita una

    aplicaciaplicacin que haga el trabajo den que haga el trabajo de

    servidor, las principales cosas queservidor, las principales cosas que

    hace un servidor son las siguientes:hace un servidor son las siguientes:

    -- Ser creado.Ser creado.

    -- Ser asignado a una direcciSer asignado a una direccin yn y

    darle un puerto.darle un puerto.-- Esperar por nuevas conexiones.Esperar por nuevas conexiones.

    -- Aceptar nuevas conexiones.Aceptar nuevas conexiones.

    Un CUn Cdigo Bdigo Bsico de un servidorsico de un servidor

    seria:seria:

  • 8/14/2019 Revista Python 2

    27/33

    CodigoCodigo FuenteFuenteSockets enSockets en

    PythonPython

    umero 2 www.aprenderpython.comwww.aprenderpython.com 26

    Eso es lo bEso es lo bsico que hace un servidor, claro que tambisico que hace un servidor, claro que tambin es importante quen es importante quemande y reciba informacimande y reciba informacin.n.

    DespuDespus se crean los clientes, lo que realizan los o el cliente es:s se crean los clientes, lo que realizan los o el cliente es:

    -- Ser creado.Ser creado.

    -- Conectarse a una direcciConectarse a una direccin y puerto dado.n y puerto dado.ElEl ccdigo bdigo bsico de un cliente seria:sico de un cliente seria:

    import socket #Importamos el moduloclientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Creamos el socketclientsocket.connect(('localhost',8000)) #conectamos al servidor por mediode una tupla (ip, puerto).while 1: #Creamos bucle infinito

    data = raw_input('>') #pedimos el mensaje a enviarclientsocket.send(data) #enviamos el mensajeif not data: break #si no hay mensaje se corta el bucle infinito y

    cortamos la conexinclientsocket.close() #cerramos la conexin

    Fuente:Fuente: MaximoMaximo LionelloLionello

  • 8/14/2019 Revista Python 2

    28/33

    Comenzando a programarComenzando a programar

    El primer ejemplo que se muestra aEl primer ejemplo que se muestra acontinuacicontinuacin es el tradicional programan es el tradicional programahola, mundohola, mundo, que en una versi, que en una versin enn en

    el lenguaje de programaciel lenguaje de programacin C++, es:n C++, es:

    ##includeinclude

    voidvoidmainmain()()

    {{

    coutcoutprintprintHola, mundoHola, mundo

    Aunque es un ejemplo trivial, destacaAunque es un ejemplo trivial, destaca

    la principal ventaja de Python quela principal ventaja de Python que

    posteriormente discutiremos con mposteriormente discutiremos con msscalma, al ser un lenguaje de muy altocalma, al ser un lenguaje de muy alto

    nivel, asnivel, as comocomo PerlPerl y Java.y Java.

    CursoCursoPythonPython

    umero 2 www.aprenderpython.comwww.aprenderpython.com 27

    IntroduccionIntroduccionPython (como se observarPython (como se observar a lo largo dela lo largo delpresente curso) cumple unospresente curso) cumple unosrequerimientos ideales como lenguaje derequerimientos ideales como lenguaje deprogramaciprogramacin, es decir, Python es generaln, es decir, Python es general

    y funciona en cualquier sistema operativoy funciona en cualquier sistema operativo

    (bien sea en Linux, Windows o Macintosh)(bien sea en Linux, Windows o Macintosh)

    para que cualquier usuario lo puedapara que cualquier usuario lo puedainstalar en cualquier minstalar en cualquier mquina. Por otraquina. Por otra

    parte, Python es un lenguaje de cparte, Python es un lenguaje de cdigodigoabierto, de manera que cualquier usuarioabierto, de manera que cualquier usuario

    puede emplearlo sin necesidad de tenerpuede emplearlo sin necesidad de tener

    que comprar una licencia para emplear elque comprar una licencia para emplear el

    mismo. Por otra parte, esta orientado amismo. Por otra parte, esta orientado a

    objetos. Y finalmente comentar que esobjetos. Y finalmente comentar que esffcil de aprender y de entender.cil de aprender y de entender.

  • 8/14/2019 Revista Python 2

    29/33

    Los programas escritos en lenguajesLos programas escritos en lenguajesde bajo nivel sde bajo nivel slo pueden selo pueden se

    ejecutados en un tipo de computadoejecutados en un tipo de computado

    especespecfico y deben reescribirse cuandofico y deben reescribirse cuando

    se desea importar dicho cse desea importar dicho cdigo a otradigo a otra

    mmquina. Debido a esta desventajaquina. Debido a esta desventaja

    casi todos los programa se escriben encasi todos los programa se escriben en

    un lenguaje de alto nivel para evitar reun lenguaje de alto nivel para evitar reescribir el mismo. Los lenguajes deescribir el mismo. Los lenguajes de

    bajo nivel sbajo nivel slo se usan para unaslo se usan para unas

    pocas aplicaciones especiales.pocas aplicaciones especiales.

    Hay dos tipos de programas queHay dos tipos de programas que

    traducen lenguajes de alto nivel atraducen lenguajes de alto nivel alenguajes de bajo nivel: intlenguajes de bajo nivel: intrpretes yrpretes y

    compiladores. Un intcompiladores. Un intrprete lee unrprete lee un

    programa de alto nivel y lo ejecuta, loprograma de alto nivel y lo ejecuta, lo

    que significa que lleva a cabo lo queque significa que lleva a cabo lo que

    indica el programa. Traduce eindica el programa. Traduce e

    programa poco a poco, leyendo yprograma poco a poco, leyendo y

    ejecutando cada comando.ejecutando cada comando.

    CursoCursoPythonPython

    umero 2 www.aprenderpython.comwww.aprenderpython.com 28

    EstEst demdems indicar que tambis indicar que tambin existenn existenlenguajes de bajo nivel, o lenguaje delenguajes de bajo nivel, o lenguaje de

    mmquina. Es interesante comentar que losquina. Es interesante comentar que los

    computadores scomputadores slo ejecutan programaslo ejecutan programas

    escritos en lenguajes de bajo nivel. Losescritos en lenguajes de bajo nivel. Los

    programas de alto nivel tienen queprogramas de alto nivel tienen que

    traducirse antes de ejecutarse, y portraducirse antes de ejecutarse, y por

    ende, esta traducciende, esta traduccin lleva tiempo, lo cualn lleva tiempo, lo cuales una pequees una pequea desventaja de losa desventaja de los

    lenguajes de alto nivel como es el caso delenguajes de alto nivel como es el caso de

    Python.Python.

    Sin embargo, dicha ventaja esSin embargo, dicha ventaja es

    compensada por el hecho que loscompensada por el hecho que loslenguajes de alto nivel son mlenguajes de alto nivel son ms sencilloss sencillos

    y/o fy/o fciles de escribir, de entender y deciles de escribir, de entender y de

    depurar. De manera que los programas dedepurar. De manera que los programas de

    alto nivel toman menos tiempo en disealto nivel toman menos tiempo en disear,ar,

    y eliminando probablemente errores en ely eliminando probablemente errores en el

    mismo. En segundo lugar, los lenguajesmismo. En segundo lugar, los lenguajes

    de alto nivel sonde alto nivel son portablesportables, lo que significa, lo que significaque pueden ejecutarse en tipos diferentesque pueden ejecutarse en tipos diferentes

    de computadores sin modificacide computadores sin modificacin algunan alguna

    o con pocas modificaciones.o con pocas modificaciones.

  • 8/14/2019 Revista Python 2

    30/33

  • 8/14/2019 Revista Python 2

    31/33

    umero 2 www.aprenderpython.comwww.aprenderpython.com 30

    FAQ PYTHON ES:FAQ PYTHON ES: http://pythonhttp://python--eses--faq.wikidot.com/startfaq.wikidot.com/start

    UN JUEGO EN 7 DIAS:UN JUEGO EN 7 DIAS:http://www.alecu.com.ar/juegos/presentacion/http://www.alecu.com.ar/juegos/presentacion/

    VJUEGOS.ORG:VJUEGOS.ORG:http://http://www.vjuegos.org/index.php?optionwww.vjuegos.org/index.php?option==com_frontpage&Itemidcom_frontpage&Itemid=1=1

    BLOG:BLOG: MUNDO PYTHONMUNDO PYTHON

    WINK:WINK: http://www.debugmode.com/wink/http://www.debugmode.com/wink/

    GOOGLE APP ENGINE:GOOGLE APP ENGINE:http://code.google.com/intl/es/appengine/http://code.google.com/intl/es/appengine/

    PYGAME:PYGAME: http://www.pygame.org/news.htmlhttp://www.pygame.org/news.html

    ProgramaciProgramacin conn con GvRGvR::httpshttps://://www.gfc.edu.cowww.gfc.edu.co//traducciontraduccion//GvrLessonsIndiceGvrLessonsIndice

    ENLACESENLACES

  • 8/14/2019 Revista Python 2

    32/33

    umero 2 www.aprenderpython.comwww.aprenderpython.com 31

    HOLAHOLA

    SI TIENES ALGUNA SUGERENCIA O ARTICULO QUE QUIERASSI TIENES ALGUNA SUGERENCIA O ARTICULO QUE QUIERASQUE SE PUBLIQUE EN LA PROXIMA EDICION, CONQUE SE PUBLIQUE EN LA PROXIMA EDICION, CONRESPECTO A LA REVISTA PUEDES ESCRIBIR AL CORREORESPECTO A LA REVISTA PUEDES ESCRIBIR AL CORREOQUE APACERECE ENSEGUIDA.QUE APACERECE ENSEGUIDA.

    PARA LA PUBLICIDAD SI DESEAS ANUNCIARTE CONPARA LA PUBLICIDAD SI DESEAS ANUNCIARTE CONNOSOTROS SOLO DEBES ESCRIBIR AL CORREO,NOSOTROS SOLO DEBES ESCRIBIR AL CORREO,PREGUNTARAS POR QUE ANUNCIAR CON NOSOTROS?PREGUNTARAS POR QUE ANUNCIAR CON NOSOTROS?

    ES UNA REVISTA LIBREES UNA REVISTA LIBRE

    MUCHAS PERSONAS DESCARGAN LA REVISTAMUCHAS PERSONAS DESCARGAN LA REVISTA

    LOS COSTOS NO SON ALTOSLOS COSTOS NO SON ALTOS

    DISPONEMOS DE PAGINA WEBDISPONEMOS DE PAGINA WEB

    AUTORES:AUTORES:

    DANIEL BERMUDEZDANIEL BERMUDEZ

    PAGINA WEB:PAGINA WEB: HTTP:WWW.APRENDERPYTHON.COMHTTP:WWW.APRENDERPYTHON.COM

    CORREO ELECTRONICO: [email protected] ELECTRONICO: [email protected]

    FORO:FORO: WWW.APRENDERPYTHON.COM.SMF/WWW.APRENDERPYTHON.COM.SMF/

    PUBLICIDAD:PUBLICIDAD: [email protected]@GMAIL.COM

    BLOG:BLOG: MUNDO PYTHONMUNDO PYTHON

    CONTACTOCONTACTO

  • 8/14/2019 Revista Python 2

    33/33

    PUBLICIDADPUBLICIDAD

    http://web.educahome.com/shop/index.asp?vendedorid=12

    http://web.educahome.com/shop/index.asp?vendedorid=12

    http://web.educahome.com/shop/index.asp?vendedorid=12