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

📄 pointcreator.java

📁 《神州》RPG游戏引擎
💻 JAVA
字号:
import java.util.*;

/*
 * Created on 2005-7-11
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

//按时序产生随机的坐标
public class PointCreator
{
    private Box bound;   //生成边界范围
    private Timer timer;  //计时器
    private TimerTask timerTask;  //时序任务
    private Point startPoint,point; //生成的坐标
    private long startDelay;  //开始间隔时间
    private long delay;  //坐标生成间隔时间
    private int tag;    
    private MySprite traceTarget;
    private MySprite owner;
    
   

   
    public MySprite getTraceTarget() {
        return traceTarget;
    }
    public void setTraceTarget(MySprite traceTarget) {
        this.traceTarget = traceTarget;
    }
    public PointCreator(Box box,Point startPoint)
    {
        this.bound=box;
        this.startPoint=startPoint;
        this.point=new Point(startPoint.x,startPoint.y);
        
        
        startDelay=3000;
        delay=3000;  //默认n秒生成一个新坐标
        
    }
    
    //随机生成坐标
    private void createPoint()
    {
        int x1=bound.x;
        int y1=bound.y;
        int x2=bound.x+bound.w;
        int y2=bound.y+bound.h;
        Random ran=new Random();        
      
        
        int scale=Integer.MAX_VALUE/(y2-y1);
        int ydelta=Math.abs(ran.nextInt())/scale;      
        
          
        int newY=y1+ydelta;
        point.y=newY;
      
        scale=Integer.MAX_VALUE/(x2-x1);            
        int xdelta=Math.abs(ran.nextInt())/scale;
        long newX=x1+xdelta;
        point.x=(int)newX;
      
        //System.out.println("生成新坐标("+point.x+","+point.y+")");
        if(traceTarget!=null && owner!=null)
        {
            int distance=Math.abs(owner.getX()-traceTarget.getX())+Math.abs(owner.getY()-traceTarget.getY());
            if(distance<150)
            {
            point.x=traceTarget.getX();
            point.y=traceTarget.getY();
            }
        }
        
       
    }
    boolean timerRunning;
    public void start()
    {
    	if(!timerRunning)
    	{
	    	timer=new Timer();
	    	timerTask=new TimerTask()
	        {
	            public void run()
	            {
	                createPoint();
	            }
	        };
	    	timer.schedule(timerTask,startDelay,delay);
    	}
    }
    public void stop()
    {
        if(timer!=null)timer.cancel();
        timer=null;
        timerTask=null;
        timerRunning=false;
    }
    public Point getPoint()
    {
        return point;
    }

    public long getDelay() {
        return delay;
    }
    public void setDelay(long delay) {
        this.delay = delay;
    }
    public Box getBound() {
        return bound;
    }
    public void setBound(Box bound) {
        this.bound = bound;
    }
    public long getStartDelay() {
        return startDelay;
    }
    public void setStartDelay(long startDelay) {
        this.startDelay = startDelay;
    }
    public MySprite getOwner() {
        return owner;
    }
    public void setOwner(MySprite owner) {
        this.owner = owner;
    }
}

⌨️ 快捷键说明

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