home *** CD-ROM | disk | FTP | other *** search
/ com!online 2002 April / comcd0402.iso / homepage / javaspecial / 05_01 / pharaoh / Softstick.java < prev    next >
Encoding:
Java Source  |  1999-02-06  |  2.6 KB  |  145 lines

  1. import java.awt.*;
  2.  
  3. public class Softstick
  4. {
  5.     public static final int LEFTMASK=1<<0;
  6.     public static final int RIGHTMASK=1<<1;
  7.     public static final int UPMASK=1<<2;
  8.     public static final int DOWNMASK=1<<3;
  9.  
  10.     public static final int CENTERED=0;
  11.     public static final int LEFT=LEFTMASK;
  12.     public static final int RIGHT=RIGHTMASK;
  13.     public static final int UP=UPMASK;
  14.     public static final int DOWN=DOWNMASK;
  15.     public static final int LEFTUP=LEFTMASK|UPMASK;
  16.     public static final int LEFTDOWN=LEFTMASK|DOWNMASK;
  17.     public static final int RIGHTUP=RIGHTMASK|UPMASK;
  18.     public static final int RIGHTDOWN=RIGHTMASK|DOWNMASK;
  19.  
  20.     private int direction;
  21.     private boolean fire;
  22.  
  23.     private static final int NOKEY=-1;    // must not collide with Event.key values
  24.     private int previouskey;
  25.  
  26.     private static final String DIRECTIONTEXT[]=
  27.     {
  28.         "CENTERED",
  29.         "LEFT",
  30.         "RIGHT",
  31.         "ILLEGAL",
  32.         "UP",
  33.         "LEFT UP",
  34.         "RIGHT UP",
  35.         "ILLEGAL",
  36.         "DOWN",
  37.         "LEFT DOWN",
  38.         "RIGHT DOWN",
  39.         "ILLEGAL",
  40.         "ILLEGAL",
  41.         "ILLEGAL",
  42.         "ILLEGAL",
  43.         "ILLEGAL"
  44.     };
  45.  
  46.     public Softstick()
  47.     {
  48.         reset();
  49.     }
  50.  
  51.     public int getDirection()
  52.     {
  53.         return direction;
  54.     }
  55.  
  56.     public boolean getFire()
  57.     {
  58.         return fire;
  59.     }
  60.  
  61.     public void reset()
  62.     {
  63.         direction=CENTERED;
  64.         fire=false;
  65.         previouskey=NOKEY;
  66.     }
  67.  
  68.     public boolean handleEvent(Event event)
  69.     {
  70.         if(event.id==Event.KEY_ACTION)
  71.         {
  72.             if(event.key!=previouskey)
  73.             {
  74.                 previouskey=event.key;
  75.  
  76.                 if(event.key==Event.LEFT)
  77.                     direction|=LEFTMASK;
  78.                 else if(event.key==Event.RIGHT)
  79.                     direction|=RIGHTMASK;
  80.                 else if(event.key==Event.UP)
  81.                     direction|=UPMASK;
  82.                 else if(event.key==Event.DOWN)
  83.                     direction|=DOWNMASK;
  84.                 else
  85.                     return false;
  86.             }
  87.         }
  88.         else if(event.id==Event.KEY_ACTION_RELEASE)
  89.         {
  90.             previouskey=NOKEY;
  91.  
  92.             if(event.key==Event.LEFT)
  93.                 direction&=~LEFTMASK;
  94.             else if(event.key==Event.RIGHT)
  95.                 direction&=~RIGHTMASK;
  96.             else if(event.key==Event.UP)
  97.                 direction&=~UPMASK;
  98.             else if(event.key==Event.DOWN)
  99.                 direction&=~DOWNMASK;
  100.             else
  101.                 return false;
  102.         }
  103.         else if(event.id==Event.KEY_PRESS)
  104.         {
  105.             if(event.key!=previouskey)
  106.             {
  107.                 previouskey=event.key;
  108.  
  109.                 if(event.key==' ')
  110.                     fire=true;
  111.                 else
  112.                     return false;
  113.             }
  114.         }
  115.         else if(event.id==Event.KEY_RELEASE)
  116.         {
  117.             previouskey=NOKEY;
  118.  
  119.             if(event.key==' ')
  120.                 fire=false;
  121.             else
  122.                 return false;
  123.         }
  124.         else
  125.             return false;
  126.  
  127.         return true;
  128.     }
  129.  
  130.     public String toString()
  131.     {
  132.         String string;
  133.  
  134.         string="Softstick["+DIRECTIONTEXT[direction];
  135.  
  136.         if(fire)
  137.             string+="+FIRE";
  138.  
  139.         string+="]";
  140.  
  141.         return string;
  142.     }
  143. }
  144.  
  145.