package com.move;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Rectangle;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import Fuzhu.ImageUtils;
/**
*
* @author Brittany ln
*
*/
public class moveMoster extends JFrame implements Runnable{
private Image jian;
private Image moster;
private int x[] = new int[2];
private MediaTracker media;
private JPanel jp;
private int index=0;
public moveMoster(){
super("碰撞检测");
setSize(500, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
media = new MediaTracker(this);
x[0]=5;//设置武器的x初始化坐标为5
jian = ImageUtils.addImage(media, new ImageIcon("image/arrow_0.png").getImage());
x[1]=400;//设置怪物的x初始化坐标为400
moster = ImageUtils.addImage(media, new ImageIcon("image/xiaoboss.png").getImage());
jp = new JPanel(){
@Override
//重写paintComponent方法,画出图像
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(jian, x[0], 100, this);
g.drawImage(moster, x[1], 100, this);
}
};
this.add(jp);//将JPanel对象添加到窗体显示
setVisible(true);
}
/**
* 使用多线程实现碰撞
*/
@Override
public void run() {
while(true){
x[0]++;//武器向右移动
x[1]--;//怪物向左移动
/**
* 碰撞检测:矩形
*/
Rectangle jianre = new Rectangle(x[0],100,jian.getWidth(null)-49,jian.getHeight(null));
Rectangle mosetere = new Rectangle(x[1],100,jian.getWidth(null),jian.getHeight(null));
if(jianre.intersects(mosetere)){//有交集,证明碰撞到了
JOptionPane.showMessageDialog(null, "碰到了");
break;
}
jp.repaint();//重绘
try {
Thread.sleep(10);//休眠
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
//启动线程
new Thread(new moveMoster()).start();
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Rectangle;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import Fuzhu.ImageUtils;
/**
*
* @author Brittany ln
*
*/
public class moveMoster extends JFrame implements Runnable{
private Image jian;
private Image moster;
private int x[] = new int[2];
private MediaTracker media;
private JPanel jp;
private int index=0;
public moveMoster(){
super("碰撞检测");
setSize(500, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
media = new MediaTracker(this);
x[0]=5;//设置武器的x初始化坐标为5
jian = ImageUtils.addImage(media, new ImageIcon("image/arrow_0.png").getImage());
x[1]=400;//设置怪物的x初始化坐标为400
moster = ImageUtils.addImage(media, new ImageIcon("image/xiaoboss.png").getImage());
jp = new JPanel(){
@Override
//重写paintComponent方法,画出图像
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(jian, x[0], 100, this);
g.drawImage(moster, x[1], 100, this);
}
};
this.add(jp);//将JPanel对象添加到窗体显示
setVisible(true);
}
/**
* 使用多线程实现碰撞
*/
@Override
public void run() {
while(true){
x[0]++;//武器向右移动
x[1]--;//怪物向左移动
/**
* 碰撞检测:矩形
*/
Rectangle jianre = new Rectangle(x[0],100,jian.getWidth(null)-49,jian.getHeight(null));
Rectangle mosetere = new Rectangle(x[1],100,jian.getWidth(null),jian.getHeight(null));
if(jianre.intersects(mosetere)){//有交集,证明碰撞到了
JOptionPane.showMessageDialog(null, "碰到了");
break;
}
jp.repaint();//重绘
try {
Thread.sleep(10);//休眠
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
//启动线程
new Thread(new moveMoster()).start();
}
/* *****************************************效果图显示***************************************** */
}