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.