Getting collision correct..
Hello all,
I am writing a simple game and so far I have 2 files, a Main file and a Dog file <-- please do not ask why dog, it was the first thing that came to my head.
anyway, here are the files:
Main Class
Code :
package Gamer;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main extends JFrame{
private Image dbImage;
private Graphics dbg;
static Dog d1 = new Dog(200,200);
static Dog d2 = new Dog(50,50);
public Main(){
setSize(600,600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
addKeyListener(new AL());
}
@Override
public void paint(Graphics g){
dbImage = createImage(getWidth(), getHeight());
dbg = dbImage.getGraphics();
paintComponent(dbg);
g.drawImage(dbImage, 0, 0, this);
}
public void paintComponent(Graphics g){
d1.Draw(g);
g.drawImage(d1.getImage(), d1.getX(), d1.getY(), null);
g.drawImage(d2.getImage(), d2.getX(), d2.getY(), null);
repaint();
}
public class AL extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e){
d1.keyPressed(e);
// d2.keyPressed(e);
}
@Override
public void keyReleased(KeyEvent e){
d1.keyReleased(e);
// d2.keyReleased(e);
}
}
public static void main(String[] args) {
Main shoot = new Main();
Thread d1t = new Thread(d1);
d1t.start();
Thread d2t = new Thread(d2);
d2t.start();
}
}
Dog class
Code :
package Gamer;
import java.awt.*;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
public class Dog implements Runnable{
int x, y, xDir, yDir, itX,itY;
Image im;
boolean MoveIt = false;
public Dog(int xv, int yv){
im = new ImageIcon("C:\\OtherStuff\\enemy.png").getImage();
x = xv;
y = yv;
itX = 500;
itY = 300;
}
public Rectangle getBounds() {
return new Rectangle(x,y,40,40);
}
public void Draw(Graphics g) {
g.setColor(Color.BLUE);
g.fillRect(120, 120, 40, 10);
g.fillRect(160, 120, 4, 7);
g.drawImage(getImage(), getX(), getY(), null);
}
public Image getImage() {
return im;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void move(){
x += xDir;
y += yDir;
if(x <= 0){ x = 0; }
if(x >= 550) { x = 550; }
if(y <= 0){ y = 0; }
if(y >= 550) { y = 550; }
}
public void setXDirection(int xdir){
xDir = xdir;
}
public void setYDirection(int ydir){
yDir = ydir;
}
public void keyPressed(KeyEvent e){
int keyCode = e.getKeyCode();
if(keyCode == e.VK_LEFT){
setXDirection(-1);
}
if(keyCode == e.VK_RIGHT){
setXDirection(1);
}
if(keyCode == e.VK_UP){
setYDirection(-1);
}
if(keyCode == e.VK_DOWN){
setYDirection(1);
}
if(keyCode == e.VK_SPACE){
MoveIt = true;
}
}
public void keyReleased(KeyEvent e){
int keyCode = e.getKeyCode();
if(keyCode == e.VK_LEFT){
setXDirection(0);
}
if(keyCode == e.VK_RIGHT){
setXDirection(0);
}
if(keyCode == e.VK_UP){
setYDirection(0);
}
if(keyCode == e.VK_DOWN){
setYDirection(0);
}
}
public void goTo() {
if (x < itX) { setXDirection(1); }
else if (x > itX) { setXDirection(-1); }
else { setXDirection(0); }
if (y < itY) { setYDirection(1); }
else if (y > itY) { setYDirection(-1); }
else { setYDirection(0); }
if((x == itX) && (y == itY)) {MoveIt = false; }
}
@Override
public void run() {
try{
while(true){
move();
if(MoveIt) { goTo();}
Thread.sleep(5);
}
}catch(Exception e){System.err.println(e.getMessage());}
}
}
Please note that the commented out parts are/were just random tests I was doing to see what would happen kind of things..
The problem I have is that I cannot seem to figure out how to put in a collision detection between 2 dog objects? where would I put it?
I was gonne use the if(d1.intersects(d2))... but I cannot put it into the dog class as d1 and d2 are not objects in that class, and the main class I did not put a while loop so I am a bit lost as to where it should go?
Should I move the move function to the main class?
Thank you for any help
Bob