[Update]Watch the video here:
http://www.engineeringser...collision-detection-demo/A Java 2d collision detection demo that I wrote earlier today for a game that i'm planning to make.
Screenshot
Java 2d collision detection
GeSHi (java):
/*--------------------------------------------------------------------------
SpriteDemoJFrame class
*****************
By: deAppel http://www.engineeringserver.com - http://www.javaforums.net
Contact: info [@] engineeringserver.com
Version: 15/August/2008
Last updated: 15/August/2008
*****************
Note: a demo that shows collision detection using rectangles.
//----------------------------------------------------------------------*/
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
SpriteDemo SD = new SpriteDemo();
int sizeX = 500;
int sizeY = 500;
public SpriteDemoJFrame(){
setLayout(null);
SD.setPlayingField(sizeX,sizeY);
SD.setSize(sizeX,sizeY);
add(SD);
setTitle("Collision detection demo");
setDefaultCloseOperation(3);
setSize(800,600);
setVisible(true);
}
public static void main
(String[] args
) { SpriteDemoJFrame SDF = new SpriteDemoJFrame();
SDF.run();
}
}
public void run() {
while(true){
try {
t.sleep(50);
SD.moveRectangle();
e.printStackTrace();
}
}
}
}
Created by GeSHI 1.0.7.20
GeSHi (java):
/*--------------------------------------------------------------------------
SpriteDemoJFrame class
*****************
By: deAppel http://www.engineeringserver.com - http://www.javaforums.net
Contact: info [@] engineeringserver.com
Version: 15/August/2008
Last updated: 15/August/2008
*****************
Note: a demo that shows collision detection using rectangles.
//----------------------------------------------------------------------*/
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JPanel;
int positionX = 0;
int positionY = 0;
int positionMovingX = 0;
int positionMovingY = 0;
boolean flip = false;
boolean gotHit = false;
boolean debug = false;
int playFieldX = 0;
int playFieldY = 0;
int movement = 0;
int speed;
int size = 10;
int hit = 0;
public SpriteDemo(){
addMouseMotionListener(this);
}
super.paintComponent(g);
if(debug){
System.
out.
println(positionMovingX +
" " + positionMovingY +
" " + hit
);
}
rect2.setLocation(positionX, positionY);
g.fillRect(rect.x,rect.y,rect.width,rect.height);
g.fillRect(positionX, positionY,rect2.width,rect2.width);
g.
setFont(new Font("Arial",
Font.
BOLD,
16));
g.drawString("You got hit " + hit + " times", 20, 20);
}
public static void main
(String[] args
) { }
positionX = e.getX()-20;
positionY = e.getY()-20;
repaint();
}
}
public void moveRectangle(){
speed =
(int) (5+
Math.
random()*
20);
if(flip == false){
positionMovingX = positionMovingX+speed;
positionMovingY = positionMovingY+speed;
rect.setLocation(positionMovingX, positionMovingY);
}
if(positionMovingX+rect.height >= playFieldX || positionMovingY+rect.width >= playFieldY ){
flip = true;
}
if(flip == true){
speed =
(int) (1+
Math.
random()*
50);
size =
(int) (10+
Math.
random()*
100);
positionMovingX = positionMovingX-speed;
positionMovingY = positionMovingY-speed;
rect.setLocation(positionMovingX, positionMovingY);
}
if(positionMovingX <=0 || positionMovingY<=0 && flip == true){
rect.setSize(size,size);
flip = false;
}
if(rect.intersects(rect2) && gotHit == false){
hit = hit+1;
gotHit = true;
}
if(!rect.intersects(rect2) && gotHit == true){
gotHit = false;
}
repaint();
}
public void setPlayingField(int x, int y){
this.playFieldX = x;
this.playFieldY = y;
}
}
Created by GeSHI 1.0.7.20