300x250 AD TOP

Mostrando las entradas con la etiqueta python. Mostrar todas las entradas
Mostrando las entradas con la etiqueta python. Mostrar todas las entradas

jueves, 15 de agosto de 2013

Etiquetado Como: , ,

Codigo Simple Snake con Pygame basado en pygame.Rect

Una de las primeras cosas que hice con Pygame en el clásico juego Snake que en otro tutorial voy a explicar paso a paso su desarrollo, ahora les comparto el código fuente utilizando los Rectángulos de pygame - pygame.Rect



#!/usr/bin/env python
import sys,pygame,random
from pygame.locals import *
def cerrar():
    pygame.quit()
    sys.exit(0)
def cxy(max,min=3):
    x1 = random.randint(min, max)
    y1 = random.randint(min, max)
    return x1,y1
def main():
    w = pygame.display.set_mode((300,300))
    reloj = pygame.time.Clock()
    bucle = True
    snake_color = (103,97,97)
    carnada_color = (228,38,38)
    head_color = (39,98,20)
    direc = random.randint(0,3)
    ancho = 10
    max = (300 / ancho) - 1
    
    if direc == 0:
        x1,y1 = cxy(max)
        xysnake = [(x1,y1),(x1,y1-1),(x1,y1-2)]
    if direc == 1:
        x1,y1 = cxy(max)
        xysnake = [(x1-2,y1),(x1-1,y1),(x1,y1)]
    if direc == 3:
        x1,y1 = cxy(max)
        xysnake = [(x1,y1),(x1-1,y1),(x1-2,y1)]
    if direc == 2:
        x1,y1 = cxy(max)
        xysnake = [(x1,y1-2),(x1,y1-1),(x1,y1)]
        
    x0,y0 = cxy(max,0)
    carnada = pygame.Rect(x0 * 10,y0 * 10,ancho,ancho)
    
    while bucle == True:
        w.fill((255,255,255))
        pygame.draw.rect(w,carnada_color,carnada,1)
        x,y = xysnake[0]
        snake_head = pygame.Rect(x*ancho,y*ancho,ancho,ancho)
        pygame.draw.rect(w,head_color,snake_head,1)
        for xy in xysnake[1:]:
            x , y = xy
            snake_body = pygame.Rect(x * ancho,y * ancho,ancho,ancho)
            pygame.draw.rect(w,snake_color,snake_body,1)
            
        for e in pygame.event.get():
            if e.type == pygame.QUIT:
                bucle = False
                break
            if e.type == pygame.KEYDOWN:
                if e.key == pygame.K_UP and direc != 0:
                    direc = 2
                if e.key == pygame.K_DOWN and direc != 2:
                    direc = 0
                if e.key == pygame.K_LEFT and direc != 3:
                    direc = 1
                if e.key == pygame.K_RIGHT and direc != 1:
                    direc = 3
       
        if direc == 3:
            x,y = xysnake[0]
            x = x + 1
            if x > max:
                x = 0
            xysnake.insert(0, (x,y))
            xydel = xysnake.pop()
        if direc == 2:
            x,y = xysnake[0]
            y = y -1
            if y < 0:
                y = max
            xysnake.insert(0, (x,y))
            xydel = xysnake.pop()
        if direc == 1:
            x,y = xysnake[0]
            x = x - 1
            if x < 0:
                x = max
            xysnake.insert(0, (x,y))
            xydel = xysnake.pop()
        if direc == 0:
            x,y = xysnake[0]
            y = y +1
            if y > max:
                y = 0
            xysnake.insert(0, (x,y))
            xydel = xysnake.pop()
        if xysnake[0] in xysnake[1:]:
            print "Que pena perdiste"
            cerrar()
        
        if snake_head.colliderect(carnada):
            carnada = pygame.Rect( random.randint(0, max) * 10, random.randint(0, max) * 10,ancho,ancho)
            if direc == 1:
                xysnake.insert(0,(x-1,y))
            if direc == 3:
                xysnake.insert(0,(x+1,y))
            if direc == 0:
                xysnake.insert(0,(x,y+1))
            if direc == 2:
                xysnake.insert(0,(x,y-1))
        pygame.display.update()
        reloj.tick(15)
    cerrar()
if __name__ == '__main__':
    pygame.init()
    main()
Etiquetado Como: , ,

Instalar Pygame utilizando virtualenv, pip y ubuntu


En esta entrada la realice para mis amigos de la comunidad Jazzper  a si que para arrancar con mi blog decidí incluirla aquí vamos a aprender a instalar Pygame en un entorno Ubuntu > virtualenv > pip
Que es Pygame?
Pygame[1] es un conjunto de módulos del lenguaje Python que permiten la creación de videojuegos en dos dimensiones de una manera sencilla.
para trabajar sin problemas al momento de desarrollar nos son útiles dos paquetes build-essential[2] y python-dev
  sudo apt-get install build-essential python-dev
2. Dependencias:
para instalar pygame necesitamos una serie de dependencias podemos instalarlas con esta linea
 sudo apt-get install python-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libsmpeg-dev python-numpy subversion libportmidi-dev ffmpeg libswscale-dev libavformat-dev libavcodec-dev
En caso necesitemos otra dependencias para la compilacion podemos instalarlar haciendo uso de build-dep[4]
 sudo apt-get build-dep python-pygame
3. Instalación.
si instalamos pygame directamente en ubuntu lo podemos hacer
 sudo apt-get install python-pygame
pero que sucede en una instalacion con pip utilzando virtualenv
bueno creamos nuestro entorno virtual "env" en la carpeta de trabajo "pygame"
mkdir pygame
cd pygame
virtualenv --no-site-package env
source env/bin/activate
pip install pygame
en el caso que pygame se aya instalado correctamente te saldrá este mensaje en las ultimas 2 lineas
"Successfully installed pygame
Cleaning up..."
4. Errores al instalar pygame:
al momento de instalar pygame me he encontrado con varios errores la mayoria los solucione instalando todas las dependencias nesesarias las cuales describo en el paso 2, sin embagor me precente con un problema que googleando parece ser muy convencional pero con poca informacion de solucion, al final encontre la solucion aqui, la cual procedo a explicar
La solución es simple, parte del error nos indica esto
"src/camera.h:42:32: fatal error: linux/videodev.h: No such file or directory
compilation terminated."
lo cual significa que no se encontró el archivo linux/videodev.h el cual es llamado en "src/camera.h" para solucioanar esto basta con crear un enlace simbolico de libv4l1-videodev.h con el nombre que nos piden videodev.h para esto hacemos lo siguiente:
Verificar que se tenga instalado libv4l-dev[4] y crear el enlace simbolico
sudo apt-get install libv4l-dev
cd /usr/include/linux
sudo ln -s /usr/include/libv4l1-videodev.h videodev.h
ya con este cambio realizamos nuevamente el paso 3 y todo nos debe salir correcto "en caso te salgo algun otro error puedes enviar un comentario adjuntando tu error en un archivo de pastebin"
para comprobar que todo esta correconto entramos a la consola de python e importamos pygame
python
import pygame
Listo ya podemos comenzar a trabajar con pygame y virtualenv
Referencias: