
    i                     F    d dl mZ ddlmZmZmZmZ ddlZ G d de      Zy)   )Plant   )SCREEN_HEIGHTSCREEN_WIDTHZOMBIE_WZOMBIE_H    Nc                   (     e Zd ZdZ fdZd Z xZS )
BowlingNutu8  
    坚果保龄球 - 弹跳攻击悬浮植物
    
    机制：
    - 悬浮植物，放置后立刻向右滚动
    - 碰到僵尸造成100点伤害，随机向右上或右下方向弹跳
    - 碰到上下边界反弹（横向速度不变，纵向速度反向）
    - 无限穿透，直到飞出屏幕
    c                     t         |   ||d       d| _        d| _        d| _        d| _        d| _        d| _        d| _        t               | _
        d| _        d| _        y )Nbowling_nut   r	   2   T
   )super__init__hpmax_hpshoot_intervalcostrollingvxvysethit_zombies	hit_countmax_hits)selfcolrow	__class__s      \/mnt/c/Users/DipsyHou/Desktop/workspace/PVZOnline/backend/game/objects/plants/bowling_nut.pyr   zBowlingNut.__init__   s`    c=1	 5    c                    | j                   sy | xj                  | j                  |z  z  c_        | xj                  | j                  |z  z  c_        | j                  dk  rd| _        | j                   | _        nJ| j                  | j
                  z   t        k\  r*t        | j
                  z
  | _        | j                   | _        | j                  t        kD  s| j                  | j                  k\  rd| _
        y |j                  D ]  }|j                  r|j                  dk  r d}| j                  | j                  z   |j                  |z   kD  sL| j                  |z   |j                  t        z   k  sp| j                  | j
                  z   |j                  |z   kD  s| j                  |z   |j                  t        z   k  s|j                   | j"                  v r|j%                  d       | j"                  j'                  |j                          | xj                  dz  c_        | j                  dkD  rd| _        n3| j                  dk  rd| _        nt)        j*                  ddg      | _        |j-                  d| j                  | j                  d	z  z   | j                  | j
                  d	z  z   d
d       | j                  | j                  k\  r	d| _
         y  y  y )Nr	   F   d   r   ij   particle   bowling_hit)typexykind)r   r,   r   r-   r   hr   r   r   r   activezombiesr   wr   r   idr   take_damageaddrandomchoice	add_event)r   dt
game_statezoffsets        r"   updatezBowlingNut.update   s2   || 	$''B,$''B, 66Q;DFwwhDGVVdff_-"TVV+DFwwhDG 66L DNNdmm$CDK ##A88qttqyF!##,.!##.0!##v+-!##.0 444+++ c"   $$QTT*!# 77Q;"DGWWq[!DG %mmT3K8DG
 $$&$&&1*,$&&1*,)	&  >>T]]2"'DKa $r#   )__name__
__module____qualname____doc__r   r=   __classcell__)r!   s   @r"   r   r      s    Fr#   r   )	baser   configr   r   r   r   r6   r    r#   r"   <module>rF      s     E E ` `r#   