Upload
aprender-libre
View
233
Download
0
Embed Size (px)
Citation preview
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