⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 seriworld.java

📁 CroftSoft Code Library是一个开源的可移植的纯Java游戏库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     package com.croftsoft.apps.mars.model.seri;     import java.awt.*;     import java.io.*;     import java.util.*;     import com.croftsoft.core.lang.NullArgumentException;     import com.croftsoft.core.math.geom.Point2DD;     import com.croftsoft.core.math.geom.PointXY;     import com.croftsoft.core.math.geom.ShapeLib;     import com.croftsoft.core.util.ArrayKeeper;     import com.croftsoft.core.util.ArrayLib;     import com.croftsoft.core.util.StableArrayKeeper;     import com.croftsoft.apps.mars.ai.DefaultTankOperator;     import com.croftsoft.apps.mars.ai.TankOperator;     import com.croftsoft.apps.mars.model.AmmoDump;     import com.croftsoft.apps.mars.model.AmmoDumpAccessor;     import com.croftsoft.apps.mars.model.Bullet;     import com.croftsoft.apps.mars.model.Damageable;     import com.croftsoft.apps.mars.model.Game;     import com.croftsoft.apps.mars.model.Impassable;     import com.croftsoft.apps.mars.model.Model;     import com.croftsoft.apps.mars.model.ModelAccessor;     import com.croftsoft.apps.mars.model.Obstacle;     import com.croftsoft.apps.mars.model.Tank;     import com.croftsoft.apps.mars.model.TankAccessor;     import com.croftsoft.apps.mars.model.World;     /*********************************************************************     * A World implementation.     *     * @version     *   2003-05-11     * @since     *   2003-04-03     * @author     *   <a href="http://www.croftsoft.com/">David Wallace Croft</a>     *********************************************************************/     public final class  SeriWorld       implements World, Serializable     //////////////////////////////////////////////////////////////////////     //////////////////////////////////////////////////////////////////////     {     private static final long  serialVersionUID = 0L;     //     private final Random               random;     private final SeriAmmoDump.Shared  seriAmmoDumpShared;     private final ArrayKeeper          modelArrayKeeper;     private final Point2DD             center;     private final java.util.List       modelList;     //////////////////////////////////////////////////////////////////////     //////////////////////////////////////////////////////////////////////     public  SeriWorld (       Random               random,       SeriAmmoDump.Shared  seriAmmoDumpShared )     //////////////////////////////////////////////////////////////////////     {       modelArrayKeeper = new StableArrayKeeper ( new Model [ 0 ] );       center = new Point2DD ( );       NullArgumentException.check ( this.random = random );       NullArgumentException.check (         this.seriAmmoDumpShared = seriAmmoDumpShared );       modelList = new ArrayList ( );     }     //////////////////////////////////////////////////////////////////////     //////////////////////////////////////////////////////////////////////     public void  clear ( )     //////////////////////////////////////////////////////////////////////     {       modelArrayKeeper.setArray ( new Model [ 0 ] );     }     public AmmoDump  createAmmoDump (       double  centerX,       double  centerY )     //////////////////////////////////////////////////////////////////////     {       SeriAmmoDump  seriAmmoDump = new SeriAmmoDump (         this,         centerX,         centerY,         seriAmmoDumpShared.ammoMax,         seriAmmoDumpShared );       modelArrayKeeper.insert ( seriAmmoDump );       return seriAmmoDump;     }     public Bullet  createBullet (       double  originX,       double  originY,       double  heading )     //////////////////////////////////////////////////////////////////////     {       SeriBullet  seriBullet         = new SeriBullet ( this, originX, originY, heading );       modelArrayKeeper.insert ( seriBullet );       return seriBullet;     }     public Obstacle  createObstacle (       double     centerX,       double     centerY,       double     radius,       double     radiusMin,       Rectangle  driftBounds )     //////////////////////////////////////////////////////////////////////     {       SeriObstacle  seriObstacle = new SeriObstacle (         this, centerX, centerY, radius, radiusMin, random, driftBounds );       modelArrayKeeper.insert ( seriObstacle );       return seriObstacle;     }     public Tank  createTank (       double  centerX,       double  centerY,       Color   color )     //////////////////////////////////////////////////////////////////////     {       SeriTank  seriTank = new SeriTank ( this, centerX, centerY, color );       TankOperator  tankOperator = new DefaultTankOperator ( random );       seriTank.setTankOperator ( tankOperator );       tankOperator.setTankConsole ( seriTank );       modelArrayKeeper.insert ( seriTank );       return seriTank;     }     public void  remove ( Model  model )     //////////////////////////////////////////////////////////////////////     {       modelArrayKeeper.remove ( model );     }     //////////////////////////////////////////////////////////////////////     //////////////////////////////////////////////////////////////////////     public AmmoDump [ ]  getAmmoDumps (       PointXY       pointXY,       AmmoDump [ ]  ammoDumps )     //////////////////////////////////////////////////////////////////////     {       return ( AmmoDump [ ] ) getModels (         pointXY,         ammoDumps,         AmmoDump.class );     }     public Damageable [ ]  getDamageables (       Shape           shape,       Damageable [ ]  damageables )     //////////////////////////////////////////////////////////////////////     {       return ( Damageable [ ] ) getModels (         shape,         damageables,         Damageable.class );     }     public Impassable [ ]  getImpassables ( )     //////////////////////////////////////////////////////////////////////     {       return ( Impassable [ ] )         modelArrayKeeper.getArray ( Impassable.class );     }     public Iterator  getImpassables (       Shape  shape,       Model  model )     //////////////////////////////////////////////////////////////////////     {       modelList.clear ( );       Impassable [ ]  impassables = getImpassables ( );       for ( int  i = 0; i < impassables.length; i++ )       {         Impassable  impassable = impassables [ i ];         if ( ( impassable != model )           && impassable.isActive ( )           && ShapeLib.intersects ( shape, impassable.getShape ( ) ) )         {           modelList.add ( impassable );         }       }       return modelList.iterator ( );     }     public Model [ ]  getModels ( )     //////////////////////////////////////////////////////////////////////     {       return ( Model [ ] ) modelArrayKeeper.getArray ( );     }     public ModelAccessor [ ]  getModelAccessors (       ModelAccessor [ ]  modelAccessors )            //////////////////////////////////////////////////////////////////////     {       return getModelAccessors ( ( Shape ) null, modelAccessors );     }     public ModelAccessor [ ]  getModelAccessors (       Shape              shape,       ModelAccessor [ ]  modelAccessors )            //////////////////////////////////////////////////////////////////////     {       Model [ ]  allModels = getModels ( );       if ( shape == null )       {         return allModels;       }       NullArgumentException.check ( modelAccessors );       int  index = 0;       for ( int  i = 0; i < allModels.length; i++ )       {         Model  model = allModels [ i ];         if ( ShapeLib.intersects ( shape, model.getShape ( ) ) )         {           if ( index < modelAccessors.length )           {             modelAccessors [ index ] = model;           }           else           {             modelAccessors = ( ModelAccessor [ ] )               ArrayLib.append ( modelAccessors, model );           }           index++;         }       }       if ( index < modelAccessors.length )       {         modelAccessors [ index ] = null;       }       return modelAccessors;     }     public Obstacle [ ]  getObstacles ( )     //////////////////////////////////////////////////////////////////////     {       return ( Obstacle [ ] )         modelArrayKeeper.getArray ( Obstacle.class );     }     public Tank [ ]  getTanks ( )     //////////////////////////////////////////////////////////////////////     {       return ( Tank [ ] ) modelArrayKeeper.getArray ( Tank.class );     }     //////////////////////////////////////////////////////////////////////     //////////////////////////////////////////////////////////////////////     public void  prepare ( )     //////////////////////////////////////////////////////////////////////     {       Model [ ]  models = getModels ( );       for ( int  i = 0; i < models.length; i++ )       {         models [ i ].prepare ( );       }     }     public void  update ( double  timeDelta )     //////////////////////////////////////////////////////////////////////     {       Model [ ]  models = getModels ( );       for ( int  i = 0; i < models.length; i++ )       {         models [ i ].update ( timeDelta );       }     }     //////////////////////////////////////////////////////////////////////     //////////////////////////////////////////////////////////////////////     public void  fireBullet (       double  originX,       double  originY,       double  heading )     //////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -