package Firework::Catherine; use Firework; our @ISA=qw{ Firework }; sub new { my($self,$display,$x,$y,$start)=@_; my $firework={ pos=>[[-1,-1],[-1,0],[-1,1],[0,1],[1,1],[1,0],[1,-1],[0,-1]], x=>$x, y=>$y, start=>$start, display=>$display }; bless $firework,$self; return $firework; } sub draw { my $wheel=shift; if($wheel->{x}<40){ push@{$wheel->{pos}},shift@{$wheel->{pos}}; } else { unshift@{$wheel->{pos}},pop@{$wheel->{pos}}; } for(0..2){ printf"\e[%d;%dH\e[1;%dm.\e[m\e[H",$wheel->{y}+$wheel->{pos}[$_][0], $wheel->{x}+$wheel->{pos}[$_][1],31+rand(6); if($wheel->{pos}[$_][1]==-1 && $wheel->{pos}[$_][0]==1 && $wheel->{timer}%2){ $wheel->{display}->add_rocket($wheel->{x},$wheel->{y},$wheel->{x}>40?-18:18,15+r and(6)); } } } sub should_explode { my $wheel=shift; $wheel->{dead}=1 if($wheel->{timer}>6); return 0; } 1;