суть такова, не могу выставить делей на спавн врагов, и еще бы хотел узнать как реализовать возможность убивать врагов и возможность смерти от них.
код таков:
Код:
package MyFirstGame;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.Timer;
public class Galaxy extends Applet implements ActionListener
{
public int Width = 800;
public int Height = 800;
public BufferedImage SpaceShip;
public BufferedImage Enemy;
public int SpawnEnemyDelay = 500000000;
public BufferedImage Bullet;
public BufferedImage Star;
public Timer timer = new Timer(10, this);
public ArrayList<Point> Enemys = new ArrayList<Point>();
public ArrayList<Point> Bullets = new ArrayList<Point>();
public ArrayList<Point> Stars = new ArrayList<Point>();
public Point ShipPos = new Point(Width/2, Height/2);
public Galaxy()
{
try
{
SpaceShip = ImageIO.read(new File("spaceship.png"));
Bullet = ImageIO.read(new File("bullet.png"));
Star = ImageIO.read(new File("star.png"));
Enemy = ImageIO.read(new File("enemy.png"));
}
catch (IOException ex)
{
Logger.getLogger(Galaxy.class.getName()).log(Level.SEVERE, null, ex);
}
timer.start();
}
public void init()
{
addMouseMotionListener(new MouseEvents());
addMouseListener(new MouseEvents());
}
public void paint(Graphics g)
{
Image buffer = createImage(Width, Height);
Graphics2D g2d = (Graphics2D)buffer.getGraphics();
g2d.setColor(Color.black);
g2d.fillRect(0, 0, Width, Height);
g2d.setColor(Color.red);
g2d.drawImage(SpaceShip, ShipPos.x, ShipPos.y, this);
SpawnObject(Stars, Star.getWidth());
SpawnObject(Enemys, Enemy.getWidth());
DrawObjects(g2d, Bullets, Bullet);
DrawObjects(g2d, Stars, Star);
DrawObjects(g2d, Enemys, Enemy);
EnemyMove(Enemys, 0, 1);
BulletMove(Bullets, 0, -5);
StarMove(Stars, 0, 5);
g.drawImage(buffer, 0, 0, null);
}
private void BulletMove(ArrayList<Point> points, int xOffset, int yOffset)
{
for (int i = 0; i < points.size(); i++)
{
points.get(i).x += xOffset;
points.get(i).y += yOffset;
if(points.get(i).y < 0) points.remove(i);
}
}
private void StarMove(ArrayList<Point> points, int xOffset, int yOffset)
{
for (int i = 0; i < points.size(); i++)
{
points.get(i).x += xOffset;
points.get(i).y += yOffset;
if(points.get(i).y > Height) points.remove(i);
}
}
private void EnemyMove(ArrayList<Point> points, int xOffset, float yOffset)
{
for (int i = 0; i < points.size(); i++)
{
points.get(i).x += xOffset;
points.get(i).y += yOffset;
if(points.get(i).y > Height) points.remove(i);
}
}
private void DrawObjects(Graphics g, ArrayList<Point> points, BufferedImage image)
{
for (int i = 0; i < points.size(); i++)
{
g.drawImage(image, points.get(i).x, points.get(i).y, this);
}
}
@Override
public void actionPerformed(ActionEvent e)
{
paint(getGraphics());
timer.start();
}
private void SpawnObject(ArrayList<Point> points, int objectWidth)
{
points.add(new Point(GetRandomXCoord(objectWidth), 10));
}
public int GetRandomXCoord(int objectWidth)
{
Random rand = new Random();
int coord = rand.nextInt(Width);
if(coord - objectWidth < 0) return 0;
if(coord + objectWidth > Width) return Width - objectWidth;
return coord;
}
class MouseEvents extends MouseAdapter
{
@Override
public void mouseMoved(MouseEvent e)
{
ShipPos = GetShipPos(e.getPoint());
}
@Override
public void mouseClicked(MouseEvent e)
{
Bullets.add(new Point(ShipPos.x + SpaceShip.getWidth()/ 2, ShipPos.y));
repaint();
}
private Point GetShipPos(Point point)
{
int shipWidth = SpaceShip.getWidth();
int shipHeight = SpaceShip.getHeight();
return new Point(point.x - shipWidth/2, point.y - shipHeight/2);
}
}
class KeyEvents extends MouseAdapter
{
@Override
public void mouseMoved(MouseEvent e)
{
ShipPos = GetShipPos(e.getPoint());
}
@Override
public void mouseClicked(MouseEvent e)
{
Bullets.add(new Point(ShipPos.x + SpaceShip.getWidth()/ 2, ShipPos.y));
repaint();
}
private Point GetShipPos(Point point)
{
int shipWidth = SpaceShip.getWidth();
int shipHeight = SpaceShip.getHeight();
return new Point(point.x - shipWidth/2, point.y - shipHeight/2);
}
}
}