[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [pygame] I can't seem to find any simple sprite animation game examples on the pygame.org site
Sorry to say ur looking at the wrong file. Try one of my latest replies w/ an attachement... or http://cleanscript.com/Map/main3.py
On 9/12/07, Michael George <mdgeorge@xxxxxxxxxxxxxx> wrote:
A much easier approach would simply be:
# draw frame (frame_number % 10)
In fact now that I think about it the way you wrote it isn't even
correct: frame % 2 == 0 whenever the frame number is even so every other
frame you'll get frame 9.
--Mike
Lamonte Harris wrote:
> Nvm I fixed it. :D
>
> On 9/11/07, *Lamonte Harris* <
pyth0nc0d3r@xxxxxxxxx
> <mailto:pyth0nc0d3r@xxxxxxxxx>> wrote:
>
> Okay this is really complicated, it seem like its looping
> correctly but the images aren't switching.
>
> On 9/11/07, *Lamonte Harris* < pyth0nc0d3r@xxxxxxxxx
> <mailto:
pyth0nc0d3r@xxxxxxxxx>> wrote:
>
> Okay thanks sounds like a plan.
>
>
> On 9/11/07, *Ian Mallett* <geometrian@xxxxxxxxx
> <mailto:geometrian@xxxxxxxxx>> wrote:
>
> Opps. That's:
>
> if frame_number%10 == 0: #frame_number is a multiple of ten
> #draw frame 1
> elif frame_number%9 == 0: #frame_number ends in 9
> #draw frame 2
> elif frame_number%8 == 0: #frame_number ends in 8
> #draw frame 3
> elif frame_number%7 == 0: #frame_number ends in 7
> #draw frame 4
> elif frame_number%6 == 0: #frame_number ends in 6
> #draw frame 5
> elif frame_number%5 == 0: #frame_number ends in 5
> #draw frame 6
> elif frame_number%4 == 0: #frame_number ends in 4
> #draw frame 7
> elif frame_number%3 == 0: #frame_number ends in 3
> #draw frame 8
> elif frame_number%2 == 0: #frame_number ends in 2
> #draw frame 9
> else: #frame_number ends in 1
> #draw frame 10
>
> Ian
>
>
>
>
>
> ------------------------------------------------------------------------
>
> #Lamonte
> import pygame,sys,string
> from pygame.locals import *
> class Block(
pygame.sprite.Sprite):
> def __init__(self):
> pygame.sprite.Sprite.__init__(self)
> class SpriteSheet:
> def __init__(self,image):
> self.sprite = pygame.image.load
(image).convert()
> self.rect = ''
> self.imag = ''
> def slice(self,rect,key):
> rect = Rect(rect)
> img = pygame.Surface
(rect.size).convert()
> img.set_colorkey(key)
> img.blit(self.sprite,(0,0),rect)
> self.rect = rect
> self.imag = img
> class map_(object):
> def __init__(self,block=100,wndow=(300,300)):
> self.BLOCK = block
> self.size = wndow
> self.window = pygame.display.set_mode(self.size)
>
self.blocks = []
> self.map = []
> self.ANIMATION = []
> self.clock = pygame.time.Clock()
> self.frame = 0
> pygame.init()
> def hex_converter(self,hexcolorcode):
> hexcolorcode = hexcolorcode[1:]
> red = hexcolorcode[0:2]
> red = int(red,16)
> blue = hexcolorcode[2:4]
> blue = int(blue,16)
> green = hexcolorcode[4:6]
> green = int(green,16)
> return (red,green,blue)
> def create_box(self,size,color,rect):
> box = Block()
> box.image = pygame.Surface((size))
> pygame.draw.rect(box.image,color,box.image.get_rect())
> box.color = color
>
box.point = rect
> self.blocks.append(box)
> def load_text_map(self,map):
> file = open(map,"r")
> links = file.readlines()
>
file.close()
> x = 0
> total = len(links)
> k = 0
> while k<total:
> self.map.append([])
> k += 1
> for i in links:
> i = string.replace(i,"\n","")
> i = i.split(",")
> for e in i:
> self.map[x].append(e)
> x += 1
> def render_map(self,aray,dict):
> x=0
> for e in aray:
> z = 0
> for y in e:
> aray[x][z] = dict[int(y)]
> z += 1
> x += 1
> return aray
> def main(self):
> z = 0
> x = 0
> y = 0
> m = 0
> while z < len(self.map):
> q = 0
> while q < len(self.map[z]):
> self.create_box(self.map[z][q][0],self.map[z][q][1],(x,y))
> x += self.BLOCK
> q += 1
> x = 0
> y += self.BLOCK
> z += 1
> self.draw_box()
> def draw_box(self):
> g1 = SpriteSheet("
player.png")
> g2 = SpriteSheet("player.png")
> g1.slice((0,0,40,57),(255,255,255))
> g2.slice((80,114,40,57),(255,255,255))
>
self.ANIMATION.append(g1)
> self.ANIMATION.append(g2)
> print self.ANIMATION
> while True:
> for event in pygame.event.get():
> if
event.type == pygame.QUIT: sys.exit()
> e = 0
> while e < len(self.blocks):
> self.window.blit(self.blocks[e].image,self.blocks
[e].point)
> e += 1
> u = 0
> if self.frame > 1:
> self.frame = 0
> print
self.frame
> self.window.blit(self.ANIMATION[self.frame].imag,(400,400))
> #print self.ANIMATION[self.frame].imag
> pygame.display.update
()
> pygame.display.flip()
> self.clock.tick(2)
> self.frame += 1
> Map = map_(25,(700,600))
> tiles = {1 : [(25,25),Map.hex_converter
("#E0ECFF")], 2 : [(25,25),Map.hex_converter("#B5EDBC")], 3 : [(25,25),Map.hex_converter("#F3E807")] }
> Map.load_text_map("map1.map")
> Map.render_map(Map.map,tiles)
> Map.main()