[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Storing images in a list



Unless you explicitly copy the image or build it multiple times, there's
no copying "behind the scenes".  They'll all point to the same image.

-FM

Chris wrote:
> Jake,
> 
> The image loads here...
> 
> def game_image (image_file):
>     image = pygame.image.load (image_file).convert_alpha ()
>     return image
> 
> The image is assigned like...
> 
> red_stone = game_image ("red_stone.png")
> 
> Later, it goes into the list like...
> 
> board_layout.append ([red_stone, (x, y)...])
> 
> So is a copy of red_stone in the list or just a pointer?
> 
> 
> Jake b wrote:
>>> When an element of the list says <Surface 50x50x32>, is that pointing
>>> to a
>>> spot in the memory or is the actual image being stored in that index?
>> That's a surface. You can have multiple variables point to the same
>> surface.
>>
>>> Would I have 64 images in my list if every space is occupied or would
>>> I have just
>>> 2 images in memory?
>> I can't be sure without seeing your init/draw code, but it sounds like
>> you probably have 64.
>>
>> Are you doing something like this?
>>
>> def init():
>>     """game init"""
>>     red = pygame.Surface( [10, 10] )
>>     red.fill( pygame.color.Color( "red" ) )
>>     blue = pygame.Surface( [10, 10] )
>>     blue.fill( pygame.color.Color( "blue" ) )
>>     # init tiles with color red
>>     for tile in tile_list:
>>         # sharing one surface for tiles
>>         tile.image = red
>>
>> def draw():
>>     """game draw"""
>>     for tile in tile_list:
>>         # draw using tile.image
> 

Attachment: signature.asc
Description: OpenPGP digital signature