OMG please help

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Sat Dec 22 20:18:01 EST 2007


Hi Katie,

Please try to write more descriptive subject lines. "OMG please help" 
makes you sound like a 14 y.o. breathless school girl who has just broken 
a nail. Probably 3/4th of the regulars who *could* help haven't even read 
your post because of the subject line.

On Sat, 22 Dec 2007 15:16:53 -0800, katie smith wrote:

> Here is the program I just started, The problem i am having is I'm
> trying to get it to load the image file Sand1 with eval(loader) =
> pygame.image.load(loader) because Loader is euqual to "Sand1" but It
> wont load it. If I set it as loader = pygame.image.load(loader) then it
> sets the image to the variable loader. So I'm basically trying to set a
> string equal to a surface variable. I dont want to have to go Sand1 =
> pygame.image.load("Sand1.bmp") for every image because I'm expecting
> there to be a lot of them when I am done.

99% of the time, when you find yourself wanting to write things like:

sand1 = pygame.image.load("Sand1.bmp")
sand2 = pygame.image.load("Sand2.bmp")
sand3 = pygame.image.load("Sand3.bmp")
...
sand99 = pygame.image.load("Sand99.bmp")

(or similar) you are going about it the wrong way. 

The better way is to do something like this:

sands = [None]
filename = "Sand%d.bmp" # template for the file names
for i in range(1, 100):  # start at 1 instead of 0
    name = filename % i
    sands.append(pygame.image.load(name))


Once you've run that code, sands is a list holding all the images you 
need.

(Note: The first item of the sands list is None, because lists are 
numbered from 0 but your sands are numbered from 1. So we need to make an 
adjustment.)

The second half is, how do you use the images?

Instead of writing something like this:


draw(sand1)  # I don't actually know how to draw bitmaps in PyGame...
draw(sand2)
draw(sand3)
...
draw(sand99)


you would do something like this:


for i in range(1, 100):
    draw(sands[i])  # or whatever the real command is


Does this help?



-- 
Steven



More information about the Python-list mailing list