Arrays en Pygame

Posted on mayo 13, 2007. Filed under: Array, PyGame, Python |

Para trabajar con arrays hay que tener el paquete Numpy (antes conocido como Numeric) de python, ya que  pygame no lo trae incluido así que hay que instalarlo.
Lo bajan de aqui y pueden elegir el .exe o el codigo fuente, para eso hay que escribir lo siguiente: python setup.py install

La libreria Numpy tienen millones de funciones utiles para realizar calculos matematicos, tiene desde arccos() hasta funciones para ordenar por quicksort, son muchisimas, en esta pagina hay un listado con ejemplos.

Para utilizar esta libreria, al comienzo de nuestro codigo fuente hay que agregar esto: from numpy import * entonces nuestra cabecera quedaria asi:

import pygame
from pygame.locals import *
from
numpy import *

Para el caso puntual de la creación de un vector:

a =  array ([1,2,3,4])
b= array([5,6,7,8])
print a + b

Resultado: [6,8,10,12]

Hay muchos ejemplos de trabajos con arrays, lo mejor seria que chequeen los ejemplos que trae en la documentación, en el link que les pasé antes.

Algunas funciones importantes:

Por ejemplo para crear un vector vacio (lleno de ceros) usamos la funcion zero, de esta forma:

zeros(5)   #devuelve un vector con 5 ceros (en flotante)

zeros ((2,2), int)  #devuelve:
                                                  [0,0]
                                                  [0,0]

Atencion: si no se especifica int, la funcion zeros devuelve un array con coma flotante.

Otra función bastante útil es crear un array con numeros aleatorios, para eso usamos la función random_integers(), pero para esto debemos agregar el paquete random de numpy y nuestro código quedaría así:

from numpy import *
from
numpy.random  import *

Entonces para crear un array con números aleatorios escribimos lo siguiente random_integers(minimo,maximo,tamaño) donde mínimo es el menor numero aleatorio posible y máximo el mayor, en tamaño debemos establecer la dimensión del array, por ejemplo puede ser (2,2) o  (3,5), etc.

Si quisiéramos obtener un numero aleatorio y no un array usamos la función randint()

Una aplicación práctica

Hoy necesitaba guardar los botones que se están presionando en el mouse, entonces utilicé la funcion get_pressed pero esta función solo me devolvía los 3 botones presionados (y mi mouse tiene 5 contando la ruedita) ejemplo de uso:

botones=pygame.mouse.get_pressed()  #esto me devuele un array de 3 elementos

Si yo tengo apretado el boton izquierdo me devuelve este array (1,0,0) y si tengo apretado el derecho (0,0,1). La desventaja de esta función, es que no lee la “ruedita del mouse”, entonces utilice lo siguiente:

botones=zeros(5,int)       #creamos un vector (0,0,0,0,0) para guardar los estados de los botones

while 1:
       for event in pygame.event.get():     
          if event.type == MOUSEBUTTONDOWN:
             botones[event.button-1]=1
          if event.type == MOUSEBUTTONUP:
             botones[event.button-1]=1

Con este codigo estamos leyendo siempre si se aprietan o se sueltan los botones del mouse. Si giramos la ruedita del mouse puede ser para arriba (boton 4) o para abajo (boton 5), y en la posicion 3 y 4 respectivamente guardamos 1. Todo esto lo solucionamos de una manera bastante sencilla usando arrays.

Nota: En este ejemplo, cuando giramos la ruedita, se graba 1 en el vector pero como luego la soltamos se vuelve a poner en cero, y parece que no esta apretado, para solucionar eso podemos usar una variable bandera.

Powered by ScribeFire.

Make a Comment

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Una respuesta to “Arrays en Pygame”

RSS Feed for Aprendiendo a Programar en Python con PyGame para hacer Video Juegos Comments RSS Feed

[…] Es muy simple, se puede aumentar de tamaño de las fotos, rotarlas y moverlas, con solo manejar el mouse. Pueden descargarlo desde aqui, recuerden que deben tener Numpy ya que utiliza arrays (para instalar Numpy pueden leer el post anterior) […]


Where's The Comment Form?

Liked it here?
Why not try sites on the blogroll...

A %d blogueros les gusta esto: