Question: This is java. I am having issues with getting random movement out of an enemy class. I need my enemies to be able to move
This is java.
I am having issues with getting random movement out of an enemy class. I need my enemies to be able to move randomly across the map. i'll post my two classes that this pertains too but if you need more code i can provide.
MainPanel.java
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Random;
import java.util.Timer;
import javax.swing.JPanel;
public class MainPanel extends JPanel {
Player myPlayer;
Player myOtherPlayer;
private int WIDTH = 1000;
private int HEIGHT = 1000;
private int WALLWIDTH = 100;
private int WALLHEIGHT = 100;
private ArrayList
private ArrayList
private ArrayList
private int MAXITEMS = 5;
private int MAXOBS = 7;
int seconds = 30;
public MainPanel()
{
setPreferredSize(new Dimension(WIDTH,HEIGHT));
myPlayer = new Player(100,100, "./src/toad.png", KeyEvent.VK_UP, KeyEvent.VK_DOWN, KeyEvent.VK_LEFT, KeyEvent.VK_RIGHT,this, 50, 38);
myOtherPlayer = new Player(200,200, "./src/toad.png", KeyEvent.VK_W, KeyEvent.VK_S, KeyEvent.VK_A, KeyEvent.VK_D,this, 50, 38);
createWalls();
createItems();
createObs();
}
public ArrayList
return walls;
}
public ArrayList
return items;
}
public ArrayList
return Obs;
}
public void createWalls()
{
int j = 0;
for(int i = 0; i < HEIGHT/WALLHEIGHT; i++)
{
for(int k = 0; k < WIDTH/WALLWIDTH; k++)
{
if(i == 0 || i == (HEIGHT/WALLHEIGHT-1))
{
walls.add(new Wall(k*WALLWIDTH,j,"./src/brick.jpg", 100, 100));
}
else
{
if(k == 0 || k == (HEIGHT/WALLHEIGHT-1))
{
walls.add(new Wall(k*WALLWIDTH,j,"./src/brick.jpg", 100, 100));
}
}
}
j+=WALLHEIGHT;
}
}
public void createObs()
{
Random myRandom = new Random();
for(int i = 0; i < MAXOBS; i++)
{
Obs.add(new Obstacle(myRandom.nextInt(500) + 200,myRandom.nextInt(500)+200, "./src/bomb.png", 5, 5));
}
}
public void createItems()
{
Random myRandom = new Random();
for(int i = 0; i < MAXITEMS; i++)
{
items.add(new Item(myRandom.nextInt(500) + 200,myRandom.nextInt(500)+200, "./src/gem.png", 5, 5));
}
}
public void paintComponent(Graphics page)
{
super.paintComponent(page);
page.drawImage(myPlayer.getImageIcon().getImage(), myPlayer.getX(), myPlayer.getY(), null);
page.drawImage(myOtherPlayer.getImageIcon().getImage(), myOtherPlayer.getX(), myOtherPlayer.getY(), null);
for(int i = 0; i < Obs.size(); i++)
{
page.drawImage(Obs.get(i).getImageIcon().getImage(), Obs.get(i).getX(), Obs.get(i).getY(),null);
}
Obs.update();
for(int i = 0; i < walls.size(); i++)
{
page.drawImage(walls.get(i).getImageIcon().getImage(), walls.get(i).getX(), walls.get(i).getY(), null);
}
for(int i = 0; i < items.size(); i++)
{
page.drawImage(items.get(i).getImageIcon().getImage(), items.get(i).getX(), items.get(i).getY(),null);
}
page.setFont(new Font("Arial", Font.PLAIN,32));
page.drawString("Player 1 Score: " + myPlayer.getScore(), 100, 800);
page.drawString("Player 2 Score: " + myOtherPlayer.getScore(), 100, 850);
if(items.size() == 0)
{
page.drawString("GAME OVER", WIDTH/2-100, HEIGHT/2);
}
}
}
Obstacle.java
import javax.swing.ImageIcon;
public class Obstacle extends GameObject {
public Obstacle(int x, int y, String imagePath, int HEIGHT, int WIDTH)
{
super(x,y,imagePath, HEIGHT, WIDTH);
}
public void update () {
x +=5;
}
@Override
public ImageIcon getImageIcon() {
return new ImageIcon(imagePath);
}
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
