Intro Pygame Capitulo 2

1,752 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,752
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
106
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Intro Pygame Capitulo 2

  1. 1. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comProgramación de Juegos con PyGame Capitulo 2: ¿Que es PyGame?
  2. 2. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com¿Que es PyGame? PyGame es un wrapper de SDL (Simple Direct Media Layer), escrito por PeteShinners. Lo que significa que usted usando PyGame podrá escribir Juegos u otrasaplicaciones multimedias en Python que correrá sin alterar su código en cualquier plataformaque soporte SDL (Windows, Unix, BSD, Mac, el beOS y otros). PyGame puede ser fácil de aprender, pero el mundo de la programación gráfica nospuede deparar gratas sorpresas.Historia Este artículo es una introducción a la biblioteca PyGame para programadores Python.La versión original apareció en PyZine, volumen 1 tercera edición. Esta versión contienerevisiones menores, para crear un mejor artículo. PyGame es una biblioteca de extensión dePython que encapsula la funcionalidad de la biblioteca SDL y sus ayudantes. PyGame comenzó en el verano del 2000. Siendo un programador C por muchos años,descubrí Python y SDL casi al mismo tiempo. Usted ya está familiarizado con Python, queestaba en su versión 1.5.2, por lo tanto podría necesitar una introducción a SDL, quesignifica Simple DirectMedia Layer. Creada por Sam Lantinga, es una bibliotecamultiplataforma para controlar multimedia, comparable a DirectX. A sido usada para cientosde juegos comerciales y de código abierto. Estaba impresionado por lo nítidos y directos que eran ambos proyectos y no pasómucho tiempo antes que me diera cuenta que mezclar Python y SDL era una propuestainteresante. Descubrí un pequeño proyecto ya en curso con exactamente la misma idea, PySDL.Creada por Mark Baker, PySDL era una implementación directa de SDL como una extensiónde Python. La interfase era mas limpia que una envoltura genérica SWIG, pero forzaba un"estilo C" al código. La muerte repentina de PySDL se incito a empezar un nuevo proyectopor mi cuenta. Quería generar un proyecto que realmente tomara ventaja de Python. Mi meta erahacer muy simple realizar las cosas sencillas, y directo para hacer las cosas difíciles. PyGameempezó en Octubre del 2000. Seis meses mas tarde la versión 1.0 de PyGame fue lanzado.Algunas Conclusiones Desarrollar juegos es muy gratificante, existe algo muy excitante en ser capaz de vere interactuar con el código que uno escribió. PyGame está actualmente siendo usado pormas de 1000 proyectos. Varios de ellos están listos para jugar ahora. Puede que le sorprendavisitar el sitio web de PyGame, y ver lo que otros usuarios han podido hacer con Python. Algo que me ha llamado la atención es la cantidad de personas que han accedido aPython por primera vez para probar el desarrollo de juegos. Veo por que los juegos sonatractivos para los nuevos programadores, pero puede ser difícil porque crear juegos
  3. 3. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comrequiere un gran conocimiento del lenguaje. He intentado dar mi apoyo a este grupo deusuarios creando muchos ejemplos y tutoriales de PyGame para personas novatas en estosconceptos. Al final de cuentas, mi consejo en mantener las cosas simples. Si está planeandocrear su primer juego, hay mucho para aprender. Hasta un juego muy simple desafiará susdiseños, y los juegos complejos no necesariamente son juegos divertidos. Cuando entiendaPython, puede usar PyGame para crear un juego simple en solo una o dos semanas. Desdeahí, necesitará una sorpresiva cantidad de tiempo para agregar el terminado que loconvertirá en un juego presentable completo. Pete Shinners (Creador de PyGame)Instalando PyGame Bueno se supone que usted conoce y manejan Python, por lo que también deveriasuponer que tiene instalado Python en su Sistema Operativo (avisarme si me equivoco). Porlo que solo explicare como instalar PyGame en Windows como GNU/Linux.Instalación en Windows Lo Primero que debeemos Hacer es acceder a la Pagina de PyGame(http://www.pygame.org) y en la secion de descargas (la pagina esta en ingles por lo quedeben buscar el link de Donwload) bajarnos la ultima version de pygame que sea compatiblecon nuestra version de Python, por ejemplo yo tengo instalado em mi PC Win XP (WinVistame parece una basura, y Estoy por probar Windows 7, no importa la instalacion es lamisma), Python 2.6.4 asi que me baje el siguiente archivo:pygame-1.9.1.win32-py2.6.msi1 - Hacemos clic en el instalador, nos aparecerá una ventana preguntadonos que tipo deinstalación queremos realizar, que pygame se accesible para todos los usuarios o solo para elusuario actual.
  4. 4. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com2- Tenemos que decirle en que versión, de Python queremos instalar indicando la carpeta, yopor defecto lo tengo instalado en C:Python26
  5. 5. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com 3- Pulsamos siguiente y comenzara la instalación luego pulsamos Salir o Finish para salir delinstalador.Instalación en GNU/Linux Debían o Ubuntu La verdad es que en GNU/Linux estoy acostumbrado a instalar paquetes directamentedesde consola y por suerte si nos falta algunas dependencias el gestor de paquetes Sinapticlas buscara por nosotros. En fin para instalar se requiere entrar como Administrador o root o opcional mente siqueremos instalar para un usuario en particular como sudo, en fin solo tenemos que abrir laconsola o terminal y ejecutar la siguientes lineas:cmd> sudo apt-get install python-pygamey nos pedirá la contraseña de superusario, nos mostrara los paquetes que tienen que serinstalados, nos pedirá confirmación y luego después de eso comenzara la instalaciónNota: no me acostumbro a uso de aptitud en ves de apt-get cuestiones de gustosolamente.
  6. 6. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comProbando la instalación Para probar que todo ha ido bien y que hemos instalado correctamente Pythonabrimos la consola de Python y ejecutamos la siguiente linea:>>> import pygameSi no nos da error es por que la instalación fue todo un éxito.Un Ejemplo Sencillo Como la mayoría de ustedes creo que ya deben estar algo aburridos de tantosconceptos (al menos yo lo estoy) vamos a comenzar directamente con un ejemplo practicoya que considero que la mejor forma de empesar a manejar una librería es mediante unejemplo sencillo, bien aunque aun no he explicado nada dicho ejemplo que por si no lo dijesera una pelota rebotando de un lado al otro servirá para mostrar lo fácil que es programaren pygame, bueno vamos al código en si:0001 #!/usr/bin/env Python0002 # -*- coding: utf-8 -*-00030004 import pygame00050006 #Datos de Pantalla0007 ANCHO = 4000008 ALTO = 4000009 RESOLUCION = (ANCHO, ALTO)00100011 def main():0012 pygame.init()0013 screen = pygame.display.set_mode(RESOLUCION)00140015 pelota = pygame.image.load(pelota.png)0016 rect = pelota.get_rect()0017 desp = [2,2] #incrementos para desplazar la pelota en pantalla00180019 loop = True0020 while loop:0021 screen.fill((0,0,0)) #pinta toda la pantalla de negro00220023 #mover el rectangulo que maneja la posicion de la pelota0024 rect.x += desp[0]0025 rect.y += desp[1]0026 #controla que la pelota no se salga de pantalla0027 if rect.top < 0:0028 desp[1] = -desp[1]
  7. 7. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com0029 if rect.right > ANCHO:0030 desp[0] = -desp[0]0031 if rect.bottom > ALTO:0032 desp[1] = -desp[1]0033 if rect.left < 0:0034 desp[0] = -desp[0]00350036 screen.blit(pelota, rect)00370038 pygame.display.flip()00390040 for evento in pygame.event.get():0041 if evento.type == pygame.QUIT:0042 loop =False0043 return00440045 if __name__ == __main__:0046 main() (Captura de pantalla del ejemplo pelota.py)
  8. 8. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comBueno pasemos a explicar el código: Vemos que la codificacion del texto e importar pygame no es algo para prestar muchaatencion.7,8,9- Acá especificamos variables que contendrán las dimensiones de pantalla12- pygame.init() inicializa la mayoría de los módulos de pygame13- Creamos una ventana gráfica con la llamada a "pygame.display.set_mode()". PyGame ySDL hacen esto simple predeterminando los mejores modos gráficos para el hardware delequipo. Puedes anular el modo y SDL compensará todo lo que el hardware no puede hacer. PyGame representa a las imágenes como objetos Surface. La función"display.set_mode()" crea un nuevo objeto Surface que referencia a la representación actualde pantalla. Cualquier dibujo que se haga sobre este objeto Surface se hace visible en elmonitor.15,16-cargamos nuestra imagen de la pelota. PyGame soporta una gran variedad deformatos de imágenes a través de la biblioteca SDL_image, incluyendo JPG, PNG, TGA, y GIF.La función "pygame.image.load()" nos devuelve un objeto Surface con los datos de la pelota.La Surface mantendrá cualquier color o transparencia Alpha del archivo. Después de cargarla imagen de la pelota creamos una variable llamada rect.PyGame incluye un tipo de objeto de utilidad conveniente llamado Rect, que representa unárea rectangular. Mas tarde, en la parte de animación del código, veremos que se puedehacer con Rect.19,20 – Creamos un ciclo infinito que se detendrá cuando se lance el evento quit de pygame21 – Pintamos toda la superficie que representa la pantalla de color negroEn este punto, la linea 23, nuestro programa está inicial izado y listo para ejecutarse. Dentrode un ciclo infinito verificamos las entradas de datos del usuario, movemos la pelota, ydespués dibujamos la pelota.24 a 34- Es tiempo de actualizar la posición de la pelota. Las lineas mueven la variableballrect a la velocidad actual. Si la pelota se ha movido afuera de la pantalla, revertimos lavelocidad en esa dirección. No es exactamente física Newtoniana, pero es todo lo quenecesitamos.36- dibujamos la imagen de la pelota en la pantalla. El dibujo de imágenes es manejado porel método "Surface.blit()". Un blit básicamente significa copiar píxeles de color de unaimagen a otra. Le pasamos al método blit un Surface fuente para que copie de él, y unaposición para poner la fuente sobre el destino.38 - La ultima cosa que necesitamos hacer es actualizar la pantalla. PyGame maneja lapantalla con Double Buffer. Cuando terminamos de dibujar llamamos al método"pygame.display.flip()". Esto hace que todo lo que dibujamos en la pantalla se haga visible.Este almacenamiento intermedio se asegura que solo veamos pantallas completamentedibujadas en la pantalla. De otra forma, el usuario vería partes a la mitad de la pantallamientras estas son creadas.40 a 43- Si está familiarizado con la programación GUI, tiene experiencia con eventos yciclos de eventos. En PyGame no hay diferencia, verificamos si un evento QUIT ha llegado. Sies así, simplemente cerramos el programa, PyGame se asegura que todo se cierralimpiamente.
  9. 9. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com Así concluye este corto (y por el momento algo confuso :P) ejemplo de PyGame Comoveremos mas adelante PyGame también contiene módulos para hacer cosas como manejo deentradas para el teclado, mouse y joystick. Puede mezclar audio y reproducir música. Con losobjetos Surface puede dibujar formas simples, rotar y escalar una imagen. Incluso puedemanipular los píxeles de una imagen en tiempo real como un arreglo Numeric (remplazadopor Numpy) de Python. Hay soporte para reproducir video MPEG y CDs de audio. PyGametambién tiene la habilidad de funcionar como una capa de visualización multiplataforma paraPyOpenGL.Python y Los Juegos ¿Es Python conveniente para juegos? La respuesta es, "Depende del juego". Python esrealmente bastante capaz de correr juegos. Probablemente hasta lo sorprenda cuanto sepuede hacer en menos de 30 milisegundos. Aún así, no es difícil llegar al techo una vez quesu juego se haga mas complejo. Cualquier juego ejecutándose en tiempo real hará usocompleto de la computadora. Durante los últimos años ha existido una tendencia interesante en el desarrollo dejuegos, que se acerca a lenguajes de mas alto nivel. Usualmente un juegos se divide en 2grandes partes. El motor del juego, el cual tiene que ser lo mas rápido posible, y la lógica deljuego, que le indica al motor que debe realizar. No hace mucho tiempo que el motor de unjuego se escribía en Assembler, con porciones escritas en lenguaje C. Hoy en día, C se hatrasladado al motor del juego, mientras que el juego mismo es escrito en un lenguaje deScripts de mas alto nivel. Juegos como Quake 3 y Unreal ejecutan estos Scripts como códigobinario portable. PyGame y SDL sirven como excelentes motores C para juegos 2D. Los juegosigualmente pasarán la mayor parte del tiempo de ejecución dentro de SDL manejando susgráficos. SDL puede tomar ventaja de la aceleración de hardware de gráficos. Habilitandoesto, se puede elevar el rendimiento de un juego que corre aproximadamente a 40 cuadrospor segundo hasta 200 cuadros por segundos. Cuando se ve a un juego de Pythonejecutando a 200 cuadros por segundos, se puede ver que Python y los juegos puedenfuncionar juntos. Aún así, hay limitaciones muy claras. La mejor manera de manejar gráficos deaceleradoras de video no es siempre la forma de obtener resultados rápidos del Software queprocesa gráficos. El soporte de hardware no está disponible en todas las plataformas.Cuando un juego se hace mas complejo, usualmente se tiene que comprometer con uno uotro. SDL tiene otras limitaciones de diseño, cosas como los desplazamientos de pantallacompleta pueden llevar rápidamente a su juego a velocidades injugables. Mientras SDL no es conveniente para todo tipo de juegos, recuerde que compañíascomo Loki usaron SDL para ejecutar una gran variedad de títulos de calidad de ventas pormenor. PyGame es de bajo nivel cuando se trata de escribir juegos. Se encontrarárápidamente en la necesidad de envolver funciones comunes en su propio ambiente dejuego. La gran ventaja de esto es que no hay nada en PyGame que le impida seguir sucamino. Su programa está en total control de todo. El efecto colateral de esto es que seencontrará pidiendo prestado mucho código para realizar un marco de trabajo masavanzado. Necesitará un mejor entendimiento de lo que está haciendo.
  10. 10. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comImportando e Inicializando PyGame Lograr importar pygame e inicializarlo es un proceso muy simple. Además es losuficiente flexible para darle el control sobre lo que está ocurriendo. PyGame es unacolección de diferentes módulos en un único paquete de Python. Algunos de los módulosestán escritos en C, y otros están escritos en Python. Algunos módulos son opcionales, ypodrían no estar presentes siempre.Importar Primero debemos importar el paquete pygame. Desde la versión 1.4 de pygame estaha sido actualizada para ser mucho mas fácil. La mayoría de los juegos importan todopygame de la siguiente forma, usted también deveria hacerlo a menos de que este seguro deimportar los paquetes y módulos que realmente necesita, yo lo hago y recomiendo siempreincluir las siguientes 2 lineas de importación:import pygamefrom pygame.locals import * La primera linea es la única realmente necesaria. Se encarga de importar todos losmódulos de disponibles dentro del paquete pygame. La segunda linea es opcional, y colocaun grupo limitado de constantes y funciones dentro del espacio de nombres global de suscript. Importar las constantes de pygame facilita la escritura de muchas rutinas. Porejemplo, luego de llamar a "from pygame.locals import *" tendrá acceso a constantes como"K_LEFT" directamente. De otra forma, si evita dicha linea, deberá referirse a las constantesespecificando exactamente donde se encuentran. En este caso podría acceder a la constantemediante "pygame.K_LEFT" o "pygame.constants.K_LEFT" Una cosa importante para tener es mente es que muchos de los módulos de pygameson opcionales. Por ejemplo, uno de esos es el módulo font (ya que depende de la libreríasdl_ttf). Cuando usted escribe "import pygame", pygame verificará si el módulo font estádisponible. Si el módulo font está disponible será importado como "pygame.font". Si elmódulo no está disponible. "pygame.font" se definirá con el valor None (ninguno).Esto hace que sea bastante fácil probar si el módulo "font" está disponible.Inicializar Antes de que pueda Hacer algo con PyGame necesita inicializar los módulos La formamas comun de hacerlo es la siguiente:pygame.init()
  11. 11. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com Esta rutina intentará inicializar todos los módulos de pygame por usted. No todos losmódulos de pygame necesitan ser inicializados, pero de esta manera automáticamente seinicializarán aquellos que lo requieran. Ademas devuelve una tupla con dos valores (numpass, numfail) numpass es lacantidad de módulos que pudieron ser inicializados exitosamente y numfail la cantidad demódulos que no pudieron ser inicializados Si queremos inicializar un modulo a mano, Por ejemplo para inicializar solamente elmódulo font solo debería llamar a:pygame.font.init() la Funcion devolvera True en caso de que el modulo haya podido ser inicial izado conéxito o False en caso contrario. Pero existe otra forma de saber si un modulo en concreto fue inicial izado, de vueltavolvamos al caso del modulo font, ahora queremos saber si el modulo fue inicial izado o nopara ello llamamos a la siguiente funcion:pygame.font.get_init() return Bool la Funcion devolvera True en caso de que el modulo este inicial izado o False en casode que el modulo no este inicial izadoListado de Módulos de PyGame 1.9.1 A la fecha PyGame cuenta con un montón de módulos que sirven para manejar desdela Lectora de CD, Teclado, Mouse, Pantalla, etc. aquí un pequeño listado de ellos y para quesirven mas adelante explicare algunos de ellos:Camera: Modulo para usar la camara (Experimental)Cdrom: Modulo que administra los dispositivos CDROM y la reproducción de CDs de audio.Color: Modulo para representar objectos de tipo colorCursors: carga imágenes de cursor, incluyendo los cursores por defecto.Display: Modulo que controla la ventana principal o pantalla.Draw: dibuja figuras simples sobre objetos Surface.Event: administra eventos y la cola de eventos.Examples: Modulo que contiene algunos programas de ejemploFont: Modulo que genera e imprime fuentes tipográficas Truetype.Gfxdraw: Similar al modulo Draw solo que ademas acepta colores en formato RGBA
  12. 12. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com(Experimental)Image: lee y graba imágenes.Joystick: administra dispositivos de joystick.Key: administra el teclado.Locals: Modulo que contiene todas las constantes de pygameMask: Modulo para control de coliciones perfecta pixel a pixel.Midi: lee y grabar archivos en formata MIDI.Mixer: Modulo para cargar y reproducir sonidosMouse: permite controlar el mouseMovie: reproduce películas en formato MPEG.Music: Modulo para el control de streaming de AudioOverlay: Modulo para vrindar acceso al hardware de VideoPixelarray: Objecto para el acceso directo a los pixels de una superficieRect: Objecto para almacenar cordenadas rectangularesScrap: Modulo para soporte del porta papeles (Experimental)Sndarray: manipula sonidos con Numeric.Sprite: Modulo para el manejo del objecto basico de un JuegoSurface: Objecto para representar imagenesSurfarray: manipula imagenes con Numeric.Tests: Modulo para realizar pruebasTime: controlador de tiempo.Transform: puede escalar, rotar e invertir imágenes.Modulos Realmente utiles Como se vio arriba pygame contiene un monton de modulos, pero la verdad es raroque los lleguemos a utilizar todos, por lo que en este curso solo se explicaran aquellos quecreo que son indispensables, el resto se los dejo a ustedes para que investiguen si losnecesitan en algun momento yo por el momento en este curso voy a explicar los siguientesmodulos:ColorDisplayDrawEvent
  13. 13. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.comFontImageJoystickKeyMixerMouseRectSpriteTime Lo que sigue es explicar cada uno de los módulos u Clases aquí listadas. Solo harébreves reseñas sobre cada módulos y algunas de sus funciones ya que la idea de este cursoes introducirlos mas a la programación de Juegos y no solo enseñar a usar una API Gráficacomo PyGame, para un entendimiento mas completo de dicha API se recomienda leer ladocumentación Oficial de PyGame.Color Bueno en realidad no se si es util o no explicar este Objecto ya que la mayor partepasaremos una tupla en ves de un Objecto Color para definir el color de algo para mayorinformacion recomiendo leer la documentacion de PyGame. Pero bueno nos servira si es quequeremos armar algun efecto ya que maneja por defecto el formato RGBA (rojo, verde, azul,alfa) pero nos ahorrara tiempo es caso de que querramos convertir a otro formato:Un objecto Color se puede crear de algunas de las siguientes formas:pygame.Color(name): return colorpygame.Color(r, g, b, a): return colorpygame.Color(rgbvalue): return colorNota: r,g,b,a Aceptan cada uno valores que van desde 0 a 255 Se puede modificar directamente cualquiera de los valores (solo para formato RGBA),por ejemplo suponer que quiero que el color del objecto sea Magenta:mi_color = PyGame.Color((0,0,0)) #el color que representa es el negromi_color.r = 255mi_color.b = 255
  14. 14. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com El canal alfa representa la transparencia del color, 255 equibale a que el objecto no estransparente. Por lo que no necesitamos modificarloNota: El magenta en RGB es (255, 0, 255) osea 255 de rojo, 0 de verde 255 de azul, paraque no se compliquen probando colores a ciegas los pueden armar uzando el selector decolor de alguna aplicación como Paint en Windows vamo al meno en Color->ModificarColores... y nos aparecera el siguiente cuadro y como ven el magenta es 255 de rojo 0 deverde y 255 de azul: (Selector de Colores estándar en Windows) Otra cosa que podemos hacer con el objecto color es convertirlo a otros formatoscomo CMY (si alguien no conoce este color les dire que es el formato de color que manejan laimpresoras). Otros son HSVA, HSLA, I1I2I3. Nosotros nos quedaremos con el formato RGBAo RGB que es el mas comun.Tuplas que representan colores Para definir el color de una figura no necesariamente tenemos que utilizar un objectoColor, bastara solo con pasar una tupla indicando los valores para rgb, luego PyGame seencargara internamente de convertir esa tupla a Objecto color:mi_color = (r, g, b)magenta = (255, 0, 255)
  15. 15. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com Una buena practica en este momento seria crear un archivo en Python definiendocomo constantes los colores de uso comun. Bueno como no me gusta inventar la rueda 2veses yo ya lo hice y se los paso el archivo directamente para que lo use el que lo desee.Display Como ya vimos este modulo es el que nos permite controlar la visualización depygame. Algo que hay que recalcar es que PyGame ofrece una única superficie devisualización la cual puede estar contenida ya sea en una ventana o la Pantalla completa,una ves que esta es creada se maneja igual que cualquier objecto Surface solo que loscambios realizados en ella no se mostraran directamente en pantalla sino que tendrás utilizaralgún método para actualizarla. (esto se hace para evitar el molesto parpadeo). Por defecto la pantalla es manejada directamente por software aunque se le puedepasar parámetros y decirle que utilice aceleración de hardware o trabajar con OpenGLpasando parámetros a la funcion pygame.display.set_mode(). Como se explico anteriormente PyGame solo puede tener una sola pantalla a la ves lallamada sucesivas a la funcion pygame.display.set_mode() cerrara la pantalla anterior ycreara una nueva. Como todo modulo este debe ser Inicializando con la funcion pygame.display.init()aunque es Inicializando cuando se llama a pygame.init().Creando la Pantalla de VisualizacionLa pantalla de visualizacion se crea utilizando la siguiente funcion:pygame.display.set_mode(resolucion=(0, 0), flags=0, depth=0) return surface Donde la tupla resolucion indica las dimenciones de pantalla, ancho y alto, elargumento flags es una colección de opciones adicionales y el argumento depth representael nro de bits utilizados por color. El argumento flags define que tipo de pantalla se desea utilizar hay varias opcionespara elegir, ademas se pueden conbinar utilizando el operador | pipe.Opcion Descripcionpygame.FULLSCREEN Modo pantalla completapygame.DOUBLEBUFF Recomendado para combinar con HWSURFACE y OPENGL
  16. 16. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.compygame.HWSURFACE Aceleracion de Hardware, solo funciona en pantalla completapygame.OPENGL Genera una pantalla en la que se puede dibujar con OpenGLpygame.RESIZABLE Se puede cambiar el tamañopygame.NOFRAME La ventana no tendra bordes ni tituloActualizar Pantalla Como dijimos antes la pantalla no se actualiza automáticamente cuando dibujamos enel objecto que la representa sino que debemos utilizar alguno de los siguientes métodos paraactualizarla:flipActualizara el contenido de la pantalla completa.pygame.display.flip() return Noneupdate Sirve para actualizar solamente porciones de la pantalla, es como una versiónoptimizada de pygame.display.flip(), se llama pasando una lista con los rectángulos aactualizar (Como el método de los Rectángulos Sucios), si no se pasa argumentos actua igualque pygame.display.flip(), se puede llamar de la siguiente forma:pygame.display.update(rectangle=None) return Nonepygame.display.update(rectangle=rect_list) return NoneModos Soportados Se puede ver las posibles resoluciones soportadas para una profundidad de coloresdeterminada, si:pygame.display.list_mode(flags=0, depth=0) return listCambiando el Icono y Titulo de la Ventana
  17. 17. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com Por defecto el titulo de las ventana es PyGame y el icono es el logo de pygame, peropuede que queramos cambiarlos para ello pygame nos facilita las siguientes dos funciones:pygame.display.set_icon(surface) return Nonepygame.display.set_caption(title=, icon_title=) return Nonepygame.display.get_caption() return title, icon_titleOtras funciones con las que cuenta el Modulo Display y que no mencione son:pygame.display.get_surface()pygame.display.get_driver()pygame.display.Info()pygame.display.get_wm_info()pygame.display.mode_okpygame.display.gl_get_attribute()pygame.display.gl_set_attribute()pygame.display.get_active()pygame.display.iconify()pygame.display.toggle_fullscreen()pygame.display.set_gamma()pygame.display.set_gamma_ramp()pygame.display.set_palette() Para terminar dejo el código de esqueleto (no tienen que copiar nada de aca, dichaplantilla viene con los ejemplos) de una aplicación en PyGame y que les servirá para resolverlos ejercicios propuestos ya que para ellos se necesitara utilizar algunas funciones y módulosque todavía no explique:0001 #!/usr/bin/env python0002 # -*- coding: utf-8 -*-00030004 """0005 Plantilla basica para escribir aplicaciones en PyGame0006 """000700080009 import pygame
  18. 18. Curso de: Programacion de Juegos con PyGame Por: Ricardo D. Quiroga – L2Radamanthys → l2radamanthys@gmail.com0010 from pygame.locals import *001100120013 #Datos de Pantalla0014 ANCHO = 4000015 ALTO = 4000016 RESOLUCION = (ANCHO, ALTO)001700180019 def main():0020 #inicializo pygame0021 pygame.init()00220023 #defino el tamaño de la ventana y la variable que hara referencia0024 screen = pygame.display.set_mode(RESOLUCION)00250026 #coloque aqui sus variables00270028 loop = True0029 while loop:0030 # escriba aca el codigo del juego0031003200330034 #actualizo la pantalla0035 pygame.display.flip()00360037 for evento in pygame.event.get():0038 if evento.type == pygame.QUIT:0039 loop =False0040 return004100420043 if __name__ == __main__:0044 main()

×