
esta vez mi problema es con los sprites!, estube probando como podia mover un sencillo sprite por la pantalla en cuatro direcciones.
ese era elprimer paso, luego era cambiar las imagenes del sprite para realizar un efecto de animacion mientras el sprite se mueve por la pantalla... pero en vistas de que siquiera se movia decidi dejar la animacion de lado para intentar moverlo.
me fije en varios ejemplos que vienen en el pygame, pero son bastantes extensos y no me es sencillo seguirlos para aprender a mover un sprite con entrada por teclado... aqui el codigo:
fichero completo descargable desde 4share.com, modulo Sprites.tar.bz2
main_2.py:
- Código: Seleccionar todo
import sys
import pygame
from pygame.locals import *
class Test(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
#ojo aqui!, cambien la ubicacion para ver una imagen!
self.image = pygame.image.load("/home/jorge/Dreams To Games/DEMOS/pruebas con pygame/modulo Sprites/datos/graph/b0.png")
self.screen = pygame.display.get_surface()
self.area = self.screen.get_rect()
self.rect = self.image.get_rect()
def update(self, posx, posy):
nueva_pos = self.rect.move(posx,posy)
print nueva_pos
if self.area.contains(nueva_pos):
self.rect.move_ip(posx, posy)
if self.rect.left > self.area.left:
self.rect.left = self.area.left
if self.rect.right > self.area.right:
self.rect.right = self.area.right
def main():
pygame.init()
pantalla = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Prueba con Sprites")
pygame.mouse.set_visible(0)
bicho_posx = 0
bicho_posy = 0
blanco = (255, 255, 255, 255)
pantalla.fill(blanco)
pygame.display.flip()
bicho = Test()
todos = pygame.sprite.RenderPlain(bicho)
clock = pygame.time.Clock()
while 1:
clock.tick(60)
key = pygame.key.get_pressed()
for evento in pygame.event.get():
if evento.type == QUIT:
sys.exit(0)
if evento.type == KEYDOWN and evento.key == K_ESCAPE:
sys.exit(0)
if evento.type == KEYDOWN:
if key[K_UP]:
bicho_posx += 10
if key[K_DOWN]:
bicho_posx -= 10
if key[K_LEFT]:
bicho_posy -= 10
if key[K_RIGHT]:
bicho_posy += 10
todos.update(bicho_posx, bicho_posy)
pantalla.fill(blanco)
todos.draw(pantalla)
pygame.display.flip()
pygame.time.wait(10)
if __name__ == "__main__":
main()