001         package com.croftsoft.apps.road;
002         
003         import java.applet.*;
004         import java.awt.*;
005         import java.awt.event.*;
006         import java.awt.geom.*;
007         import java.io.*;
008         import java.net.URL;
009         import java.util.*;
010         import javax.swing.*;
011         import javax.swing.event.*;
012    
013         import com.croftsoft.core.animation.clock.Timekeeper;
014         import com.croftsoft.core.animation.sprite.IconSprite;
015    
016         import com.croftsoft.apps.road.model.Car;
017    
018         /*********************************************************************
019         * Roadrunner enemy Sprite.
020         *
021         * @version
022         *   2003-11-09
023         * @since
024         *   2003-09-10
025         * @author
026         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
027         *********************************************************************/
028    
029         public final class  EnemySprite
030           extends IconSprite
031           implements Constants
032         //////////////////////////////////////////////////////////////////////
033         //////////////////////////////////////////////////////////////////////
034         {
035    
036         private final Car         car;
037    
038         private final Timekeeper  timekeeper;
039    
040         private final Random      random;
041    
042         //////////////////////////////////////////////////////////////////////
043         //////////////////////////////////////////////////////////////////////
044    
045         public  EnemySprite (
046           Icon        enemyIcon,
047           Car         car,
048           Timekeeper  timekeeper,
049           Random      random )
050         //////////////////////////////////////////////////////////////////////
051         {
052           super ( enemyIcon );
053    
054           this.car = car;
055    
056           this.timekeeper = timekeeper;
057    
058           this.random = random;
059         }
060    
061         //////////////////////////////////////////////////////////////////////
062         //////////////////////////////////////////////////////////////////////
063    
064         public void  update ( JComponent  component )
065         //////////////////////////////////////////////////////////////////////
066         {
067           car.setDestinationPoint (
068             new Point (
069               random.nextInt ( component.getBounds ( ).width  ),
070               random.nextInt ( component.getBounds ( ).height ) ) );
071    
072           double  timeDelta = timekeeper.getTimeDelta ( );
073    
074           car.update ( timeDelta );
075    
076           x = car.getCenterX ( );
077    
078           y = car.getCenterY ( );
079         }
080    
081         //////////////////////////////////////////////////////////////////////
082         //////////////////////////////////////////////////////////////////////
083         }