o
    tVg                     @   s  d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlZ	ej
ej
ed Zej
edZdZdejv r<dZd	ejv rCd
Zd
Zdejv rLdZd
Zdejv rWdZdZdZdejv rcee	jN Zdejv rmee	jN Zdejv rwee	jN ZdZdejv ree	jN Zd
Zdejv ree	jN ZddgZdejv rejdZeejed  ed< dejv rejdZeejed  ed< dejv Z e!e G dd de	j"j#Z$G dd de	j"j#Z%		
	
		
	d ddZ&e'dkre&eeeee e dS dS )!z pg.examples.testsprite

Like the testsprite.c that comes with libsdl, this pygame version shows
lots of sprites moving around.

It is an abomination of ugly code, and mostly used for testing.


See pg.examples.aliens for some prettyier code.
    N)randint)time)ListdataTz-update_rectsz-noupdate_rectsFz-staticz-layered_dirtyz-flipz-fullscreenz-swz-hwz-scaled    z-height   z-widthz-alphac                   @   s0   e Zd ZU g Zeej ed< dd Zdd Z	dS )Thingyimagesc                 C   sj   t jj|  tjd | _| j | _t	dt
d | j_t	dt
d | j_t	ddt	ddg| _d| _d S )Nr   r      )pgspriteDirtySprite__init__r	   r
   imageget_rectrectr   screen_dimsxyveldirtyself r   N/home/ubuntu/.local/lib/python3.10/site-packages/pygame/examples/testsprite.pyr   e   s   
zThingy.__init__c                 O   sf   dD ].}| j | | j|  }|t| ks|dk r+| j|  | j|< | j | | j|  }|| j |< qd S )N)r   r   r   )r   r   r   )r   argskwargsinvr   r   r   updatep   s   zThingy.updateN)
__name__
__module____qualname__r
   r   r   Surface__annotations__r   r!   r   r   r   r   r	   b   s   
 r	   c                   @   s(   e Zd ZU g Zeej ed< dd ZdS )Staticr
   c                 C   s^   t jj|  tjd | _| j | _t	ddt
d  d | j_t	ddt
d  d | j_d S )Nr         r   )r   r   r   r   r'   r
   r   r   r   r   r   r   r   r   r   r   r   r   |   s
   zStatic.__init__N)	r"   r#   r$   r
   r   r   r%   r&   r   r   r   r   r   r'   y   s   
 r'   r   r   c                 C   s  |rd} t   t j  t jj||dtjv d}t j  t j }|dkr1t jd}|  |	g d t j
  t jtjtd}	t jtjtd}
trn|	g dt jt jB  |
g dt jt jB  n|	g dt j |
g dt j |r|	 }	|
 }
n|	 }	|
 }
|	gt_|r|
gt_ttjd	krz	ttjd
 }W n ty   d}Y nw d}d}|rt j }n| rt j }nt j  }t!d|D ]}|r|d dkr|"t  |"t  qd}t# }t $|% }| }|	g d d}|rU| s|	g d | r|&|| |'  |(|}| r0t j'| nt j
  t j)* D ]}|j+t j,t j-t j,t j.fv rLd}q:|d	7 }|s
t# }t/d|||  d t 0  dS )a  Show lots of sprites moving around

    Optional keyword arguments:
    update_rects - use the RenderUpdate sprite group class (default True)
    use_static - include non-moving images (default False)
    use_layered_dirty - Use the FastRenderGroup sprite group (default False)
    screen_dims - Pygame window dimensions (default [640, 480])
    use_alpha - use alpha blending (default False)
    flags - additional display mode flags (default no additional flags)

    Tz-vsync)vsyncr   )r   r   r   zasprite.bmpz
static.png)   r,   r,   r   r   d   Nr   FzFPS: f)1r   initdisplayset_modesysargvjoystick	get_countJoystickfillflipr   loadospathjoindata_diruse_rleset_colorkeySRCCOLORKEYRLEACCELconvert_alphaconvertr	   r
   r'   lenint	Exceptionr   LayeredDirtyRenderUpdatesGrouprangeaddr   r%   get_sizeclearr!   draweventgettypeQUITKEYDOWNJOYBUTTONDOWNprintquit)update_rects
use_staticuse_layered_dirtyr   	use_alphaflagsscreennum_joystickssticksprite_surfacesprite_surface2
numspritesspritesr   framesstart
backgroundgoingrectsrO   endr   r   r   main   s   







ri   __main__)TFFr*   Fr   )(__doc__r2   r:   randomr   r   typingr   pygamer   r;   splitabspath__file__main_dirr<   r=   rW   r3   rX   rY   r[   	DOUBLEBUF
FULLSCREEN	SWSURFACEr>   	HWSURFACESCALEDr   indexr   rE   rZ   rU   r   r   r	   r'   ri   r"   r   r   r   r   <module>   sn   


















u