import java.awt.Canvas;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**主要实现一个单位的追随移动 目标单位不动,主要单位跟踪*/
public class Move_1 extends Frame implements KeyListener,Runnable{
/**主要移动点*/
UniteNode uMain;
/**目标点*/
UniteNode uGoal;
/**移动点的线程<li>这里只有这一个线程</li>*/
Thread tdMainUnite;
/**设置移动单位的长度和地图单位的长度<li>这两个单位的长度是相等的,现在默认每个单位都是正方形</li>*/
int itUniteWidthandHeight;
public static void main(String args[]){
Move_1 m1 = new Move_1();
}
Move_1(){
setSize(500,500);
setVisible(true);
setLayout(null);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
itUniteWidthandHeight = 20;
uMain = new UniteNode(0);
add(uMain);
uMain.setLocation(itUniteWidthandHeight*12,itUniteWidthandHeight*12);
uGoal = new UniteNode(9);
add(uGoal);
uGoal.setLocation(itUniteWidthandHeight*2,itUniteWidthandHeight*12);
tdMainUnite = new Thread(this);
tdMainUnite.start();
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e){}
public void run(){
while(true){
// Out.s("线程已经启动");
int itXMoveDirectio = (uMain.getBounds().x - uGoal.getBounds().x);
Out.s("移动单位的X坐标 减去 目标单位的X坐标的值是 "+itXMoveDirectio);
int itYMoveDirectio = (uMain.getBounds().y - uGoal.getBounds().y);
Out.s("移动单位的Y坐标 减去 目标单位的Y坐标的值是 "+itYMoveDirectio);
if(itXMoveDirectio>0){
uMain.setLocation(uMain.getBounds().x-20, uMain.getBounds().y);
}
if(itXMoveDirectio<0){
uMain.setLocation(uMain.getBounds().x+20, uMain.getBounds().y);
}
if(itYMoveDirectio<0){
uMain.setLocation(uMain.getBounds().x, uMain.getBounds().y+20);
}
if(itYMoveDirectio>0){
uMain.setLocation(uMain.getBounds().x, uMain.getBounds().y-20);
}
try {
tdMainUnite.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**基本单位,移动单位和围墙阻碍 就是画一个正方形*/
class UniteNode extends Canvas{
/** 长方形的 高 <li>默认的值是 10</li> */
public int sqHeight = 10;
/**长方形的 宽<li>默认的值是 10</li>*/
public int sqWidth = 10;
public Color c = Color.RED;
public int iStr = 2;
UniteNode(int i){
setBackground(Color.CYAN);
iStr = i;
setSize(this.sqWidth*2,this.sqHeight*2);
}
public void InitSize(){
setSize(this.sqWidth*2,this.sqHeight*2);
}
public void paint(Graphics g){
g.drawString(String.valueOf(iStr), 10, 10);
g.drawRect(0,0,sqWidth,sqHeight);
}
UniteNode(int w,int h){
this.sqHeight = h;
this.sqWidth = w;
setSize(this.sqWidth*2,this.sqHeight*2);
}
}
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**主要实现一个单位的追随移动 目标单位不动,主要单位跟踪*/
public class Move_1 extends Frame implements KeyListener,Runnable{
/**主要移动点*/
UniteNode uMain;
/**目标点*/
UniteNode uGoal;
/**移动点的线程<li>这里只有这一个线程</li>*/
Thread tdMainUnite;
/**设置移动单位的长度和地图单位的长度<li>这两个单位的长度是相等的,现在默认每个单位都是正方形</li>*/
int itUniteWidthandHeight;
public static void main(String args[]){
Move_1 m1 = new Move_1();
}
Move_1(){
setSize(500,500);
setVisible(true);
setLayout(null);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
itUniteWidthandHeight = 20;
uMain = new UniteNode(0);
add(uMain);
uMain.setLocation(itUniteWidthandHeight*12,itUniteWidthandHeight*12);
uGoal = new UniteNode(9);
add(uGoal);
uGoal.setLocation(itUniteWidthandHeight*2,itUniteWidthandHeight*12);
tdMainUnite = new Thread(this);
tdMainUnite.start();
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e){}
public void run(){
while(true){
// Out.s("线程已经启动");
int itXMoveDirectio = (uMain.getBounds().x - uGoal.getBounds().x);
Out.s("移动单位的X坐标 减去 目标单位的X坐标的值是 "+itXMoveDirectio);
int itYMoveDirectio = (uMain.getBounds().y - uGoal.getBounds().y);
Out.s("移动单位的Y坐标 减去 目标单位的Y坐标的值是 "+itYMoveDirectio);
if(itXMoveDirectio>0){
uMain.setLocation(uMain.getBounds().x-20, uMain.getBounds().y);
}
if(itXMoveDirectio<0){
uMain.setLocation(uMain.getBounds().x+20, uMain.getBounds().y);
}
if(itYMoveDirectio<0){
uMain.setLocation(uMain.getBounds().x, uMain.getBounds().y+20);
}
if(itYMoveDirectio>0){
uMain.setLocation(uMain.getBounds().x, uMain.getBounds().y-20);
}
try {
tdMainUnite.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**基本单位,移动单位和围墙阻碍 就是画一个正方形*/
class UniteNode extends Canvas{
/** 长方形的 高 <li>默认的值是 10</li> */
public int sqHeight = 10;
/**长方形的 宽<li>默认的值是 10</li>*/
public int sqWidth = 10;
public Color c = Color.RED;
public int iStr = 2;
UniteNode(int i){
setBackground(Color.CYAN);
iStr = i;
setSize(this.sqWidth*2,this.sqHeight*2);
}
public void InitSize(){
setSize(this.sqWidth*2,this.sqHeight*2);
}
public void paint(Graphics g){
g.drawString(String.valueOf(iStr), 10, 10);
g.drawRect(0,0,sqWidth,sqHeight);
}
UniteNode(int w,int h){
this.sqHeight = h;
this.sqWidth = w;
setSize(this.sqWidth*2,this.sqHeight*2);
}
}