examples
Class StdMazeMonster

java.lang.Object
  extended byjgame.JGObject
      extended byexamples.StdMazeMonster

public class StdMazeMonster
extends JGObject

A standard object that moves around a maze. Typical application: pac-man. This class only defines the move() method; hit() and hit_bg() are not used. Subclass it to customize. To customize move(), simply call super.move() somewhere inside your move method. Note that this class's move() works by determining the appropriate xdir and ydir. You can do some limited operations on xdir and ydir before calling super.move(). In particular, reversing direction can be done without problems. It is assumed the object is 1x1 tile in size, and the tileBBox is set to this.

The public fields are the configuration fields which can be changed at will during the object's lifetime.

The object homes in on the specified home_in object, or can be made to avoid it. The object can be made to move randomly instead of homing in/ avoiding, with a specified probability between 0 and 1. Not setting home_in will make the object move randomly.

The object tries to keep moving forward, and never make u-turns (like pac-man ghosts) to help get it around cul de sacs. There is no AI for finding complex routes through the maze.


Field Summary
 boolean avoid
          true = avoid home_in position
 int block_mask
          cid mask of tiles that block
 java.lang.String gfx_prefix
          null indicates non-directional graphic
 JGObject home_in
          object to home in on, null=none (random movement)
 double random_proportion
          chance that object moves randomly
 double speed
          object's speed, overrides xspeed, yspeed.
 
Fields inherited from class jgame.JGObject
colid, eng, expiry, x, xdir, xspeed, y, ydir, yspeed
 
Constructor Summary
StdMazeMonster(java.lang.String name, boolean unique_id, double x, double y, int cid, java.lang.String graphic, boolean is_directional, int block_mask, int xdir, int ydir, double speed, JGObject home_in, boolean avoid, double random_proportion)
          When initialised, the object will snap to grid to the nearest free position, then it will start moving in the direction specified by xdir, ydir.
 
Method Summary
 void move()
          Moves the object around.
 
Methods inherited from class jgame.JGObject
and, clearAnim, clearBBox, clearTileBBox, getAnimId, getBBox, getCenterTile, getCenterTiles, getImage, getImageBBox, getLastBBox, getLastCenterTiles, getLastTileBBox, getLastTiles, getLastX, getLastY, getName, getTileBBox, getTiles, getTopLeftTile, hit_bg, hit_bg, hit_bg, hit, isAlive, isBottomAligned, isLeftAligned, isOnScreen, isRightAligned, isTopAligned, isXAligned, isXAligned, isYAligned, isYAligned, paint, remove, resetAnim, resetAnim, setAnim, setAnimPingpong, setAnimSpeed, setBBox, setDir, setDirSpeed, setDirSpeed, setGraphic, setImage, setPos, setSpeed, setSpeed, setSpeedAbs, setTileBBox, snapBBoxToGrid, snapToGrid, snapToGrid, startAnim, stopAnim
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

gfx_prefix

public java.lang.String gfx_prefix
null indicates non-directional graphic


block_mask

public int block_mask
cid mask of tiles that block


speed

public double speed
object's speed, overrides xspeed, yspeed.


home_in

public JGObject home_in
object to home in on, null=none (random movement)


avoid

public boolean avoid
true = avoid home_in position


random_proportion

public double random_proportion
chance that object moves randomly

Constructor Detail

StdMazeMonster

public StdMazeMonster(java.lang.String name,
                      boolean unique_id,
                      double x,
                      double y,
                      int cid,
                      java.lang.String graphic,
                      boolean is_directional,
                      int block_mask,
                      int xdir,
                      int ydir,
                      double speed,
                      JGObject home_in,
                      boolean avoid,
                      double random_proportion)
When initialised, the object will snap to grid to the nearest free position, then it will start moving in the direction specified by xdir, ydir. The object's graphic can be made directional by setting is_directional. This will add the suffix "l", "r", "u", or "d" to the graphic string to indicate the direction of movement.

Parameters:
x - position in pixels
y - position in pixels
graphic - prefix of graphic
is_directional - add direction suffix to graphic
home_in - object to home in on, null=none (random movement)
avoid - true = avoid home_in position
random_proportion - chance that object moves randomly
block_mask - cid mask of tiles that block
Method Detail

move

public void move()
Moves the object around. If you override this, be sure to call super.move() and don't touch x, y, xspeed, yspeed. Don't touch xdir, ydir except by possibly reversing them.

Overrides:
move in class JGObject