Collision testing

I’ve got a file which draws the position of trees (2) based off a randomly generated (seeded) number.

GamePanel.java:


package Game;

import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.swing.JComponent;

public class GamePanel extends JComponent implements KeyListener {
	
	//variable declaring
	private static final long serialVersionUID = 1L;
	Game game;
	Player pl = new Player();
	Grid gr = new Grid();
	BufferedImage tree;
	BufferedImage flower;
	BufferedImage grass;
	
	int treeCount = 2;
	int flowerCount = 2;
	int[] treeX = new int[treeCount];
	int[] treeY = new int[treeCount];
	int[] flowerX = new int[flowerCount];
	int[] flowerY = new int[flowerCount];
	
	//constructor set screen up etc
	public GamePanel(Game game) {
		setFocusable(true);
		addKeyListener(this);
		this.game = game;
		
		try 
		{
			pl.defPlayer = ImageIO.read(new File("C:\\Users\\Shannon\\workspace\\RPG\\src\\Images\\Players\\defPlayer.png"));
			grass = ImageIO.read(new File("C:\\Users\\Shannon\\workspace\\RPG\\src\\Images\\Backgrounds\\grass.png"));
			tree = ImageIO.read(new File("C:\\Users\\Shannon\\workspace\\RPG\\src\\Images\\Backgrounds\\tree.png"));
			flower = ImageIO.read(new File("C:\\Users\\Shannon\\workspace\\RPG\\src\\Images\\Backgrounds\\flower.png"));
		}
		catch (IOException ex)
		{
			ex.printStackTrace();
		}
		
		Random t = new Random(2934);
		Random f = new Random(3423);
		for (int i = 0; i < treeCount; i++) {
			treeX[i] = t.nextInt(480 / 32)-2;
			treeY[i] = t.nextInt(320 / 32)-2;
		}
		for (int i = 0; i < flowerCount; i++) {
			flowerX[i] = f.nextInt(480 / 32)-2;
			flowerY[i] = f.nextInt(320 / 32)-2;
		}
	}
	
	public void keyPressed(KeyEvent e) {
		int keyCode = e.getKeyCode();
		int speed = 32;
		
		if (keyCode == KeyEvent.VK_ESCAPE) {
			game.showHomePanel();
		}
		
		if (keyCode == KeyEvent.VK_P) {
			game.showPausedPanel();
		}
		
        if (keyCode == KeyEvent.VK_RIGHT) {
            pl.x += speed;
            if (pl.x > 480-32) {
                pl.x = 480-32;
            }
        }
         
        if (keyCode == KeyEvent.VK_LEFT) {
             pl.x -= speed;
             if (pl.x < 0) {
                pl.x = 0;
             }
        }
         
        if (keyCode == KeyEvent.VK_DOWN) {
            pl.y += speed;
            if (pl.y > 320-32) {
                pl.y = 320-32;
            }
        }
         
        if (keyCode == KeyEvent.VK_UP) {
            pl.y -= speed;
            if (pl.y < 0) {
                pl.y = 0;
            }
        }
        repaint();
    }

	public void keyReleased(KeyEvent e) {

	}

	public void keyTyped(KeyEvent e) {
		
	}
	
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		
		//draw grass
		for (int i = 0; i < 480; i += 32) {
			for (int x = 0; x < 320; x += 32) {
				g.drawImage(grass, i, x, null);
			}
		}
		//draw trees
		for (int i = 0; i < treeCount; i++) {
			g.drawImage(tree, treeX[i] * 32, treeY[i] * 32, null);
		} 
		//draw flowers
		for (int i = 0; i < flowerCount; i++) {
			g.drawImage(flower, flowerX[i] * 32, flowerY[i] * 32, null);
		}
		gr.draw(g);
		pl.draw(g);
		requestFocusInWindow();
	}
}

Game.java (main control)


package Game;

import java.io.IOException;

import javax.swing.*;

public class Game {

	private static final long serialVersionUID = 1L;
	Camera camera;
	GamePanel gamePanel;
	HomePanel homePanel;
	PausedPanel pausedPanel;
	
	JFrame frame = new JFrame("RPG");
	
	public Game() {
		gamePanel = new GamePanel(this);
		homePanel = new HomePanel(this);
		pausedPanel = new PausedPanel(this);
		
		frame.add(homePanel);
		frame.setFocusable(true);
		frame.setTitle("RPG");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(800, 600);
		frame.setLocationRelativeTo(null);
		frame.setResizable(false);
		frame.setVisible(true);
	}
	
	public void showHomePanel() {
		frame.remove(gamePanel);
		frame.remove(pausedPanel);
		frame.add(homePanel);
		((JPanel)frame.getContentPane()).revalidate();
		frame.repaint();
	}
	
	public void showGamePanel() {
		frame.remove(homePanel);
		frame.remove(pausedPanel);
		frame.add(gamePanel);
		((JPanel)frame.getContentPane()).revalidate();
		frame.repaint();
	}
	
	public void showPausedPanel() {
		frame.remove(gamePanel);
		frame.remove(homePanel);
		frame.add(pausedPanel);
		((JPanel)frame.getContentPane()).revalidate();
		frame.repaint();
	}

	public static void main(String[] args) throws IOException {
		new Game();
	}	
}

What I need to do is somehow get the position of the tree both X and Y then see if the Player X and Y are greater than the tree X and Y. To do so I need to get the position of the tree (X, Y) but not so sure, as it’s determined in a for loop.

If you have any idea how I can do it, please leave a response.
Thanks.

Could you show all the classes, also the one with the main loop
-EDIT-

In your repaint method, before you repaint everything, make a collision check. If the collision is true, just put x -32, otherwise don’t do anything.
-EDIT-

Make a for loop, to check all collisions.
for (int i = 0; i < treeCount; i++) {
if (treeX[i] > pl.x)
{
x -= 32;
}
}

Updated with the main class, sorry about that.

Look at your code to draw the trees:

treeX[i] * 32, treeY[i] * 32

is the x, y location for tree i.