Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2016, 00:10   #1
SergGoFun
Новичок
Джуниор
 
Регистрация: 19.03.2016
Сообщений: 1
По умолчанию Спавн врагов - сделать делей

суть такова, не могу выставить делей на спавн врагов, и еще бы хотел узнать как реализовать возможность убивать врагов и возможность смерти от них.

код таков:

Код:
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);
        }
    }
}
SergGoFun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Flash Движение врагов Yachiry Общие вопросы Web 0 12.04.2014 21:39
сделать видеочат на сайте. Хочу сделать но не знаю как.. Shaman-King Свободное общение 12 14.01.2013 00:22
Я создал игру типо марио и хочу сделать её по сети как это сделать? rbkmz Работа с сетью в Delphi 7 14.05.2012 15:58
Про ГРАФЫ, друзей, врагов, добро и зло! Ksardas13 Общие вопросы C/C++ 4 30.05.2011 03:26
Пусть группа состоит из N человек. В ней каждый имеет (N/2) друзей и не больше K врагов. koshka669 Помощь студентам 3 26.05.2011 18:15