Java 同一类型的多个移动对象

Java 同一类型的多个移动对象,java,object,Java,Object,我开始用java做一个小游戏,有点像迷宫。但我对“敌人”有点问题 我有一个职业“球”,创造了球员和一个职业“敌人”我想用它来创建不止一个这样的类型。敌人是方块,我需要很多方块在特定的坐标上,所以我必须上下移动球,而方块从侧面向左移动。我不知道这些指示有多具体。但我只多创建了一个移动方块,但那些没有移动 你们中的任何人可能知道并需要更多的信息,请要求它,我会给你的代码或你需要什么。 谢谢 敌人阶级: public class Enemy { int Y = 20; private static

我开始用java做一个小游戏,有点像迷宫。但我对“敌人”有点问题

我有一个职业“球”,创造了球员和一个职业“敌人”我想用它来创建不止一个这样的类型。敌人是方块,我需要很多方块在特定的坐标上,所以我必须上下移动球,而方块从侧面向左移动。我不知道这些指示有多具体。但我只多创建了一个移动方块,但那些没有移动

你们中的任何人可能知道并需要更多的信息,请要求它,我会给你的代码或你需要什么。 谢谢

敌人阶级:

public class Enemy {

int Y = 20;
private static final int WIDTH = 60;
private static final int HEIGHT = 50;
int x = 1000;
private Game game;

public Enemy(Game game) {
    this.game = game;

}
public void paint(Graphics2D g) {
    g.fillRect(x, Y, WIDTH, HEIGHT);

}
public void move() {
        x = x - 1;
}

public Rectangle getBounds() {
    return new Rectangle(x, Y, WIDTH, HEIGHT);
}

public int getTopY() {
    return Y;}
球类:

public class Ball {
    private static final int DIAMETRU = 30;
    int x = 200;
    int y = 0;
    private Game game;

    public Ball(Game game) {
        this.game= game;
    }

    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_UP)
            y = y - 5;
        if (e.getKeyCode() == KeyEvent.VK_DOWN)
            y = y + 5;
    }

    public void keyReleased(KeyEvent e) {

    }

    void move(){

        if (collision()){
            x = x - 5;
        }
        if (x == 25)
            game.gameOver();
    }
    private boolean collision() {
        return game.enemy.getBounds().intersects(getBounds());
    }

    public void paint(Graphics2D g) {
        g.fillOval(x, y, DIAMETRU, DIAMETRU);
    }

    public Rectangle getBounds() {
        return new Rectangle(x, y, DIAMETRU, DIAMETRU);
    }
}
游戏课

public class Game extends JPanel {

    Ball ball = new Ball(this);
    GameOver go = new GameOver(this);
    Enemy enemy = new Enemy(this);


    public Game() {
        addKeyListener(new KeyListener() {
            public void keyTyped(KeyEvent e) {
            }
            public void keyReleased(KeyEvent e) {
                ball.keyReleased(e);
            }
            public void keyPressed(KeyEvent e) {
                ball.keyPressed(e);
            }
        });
        setFocusable(true);
    }

    private void move() {
        enemy.move();
        ball.move();


    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        ball.paint(g2d);
        enemy.paint(g2d);
        go.paint(g2d);
    }

    public void gameOver() {
        JOptionPane.showMessageDialog(this, "Game Over", "Game Over", JOptionPane.YES_NO_OPTION);
        System.exit(ABORT);
    }

    public static void main(String[] args) throws InterruptedException {
        JFrame frame = new JFrame("Maze");
        Game game = new Game();
        frame.add(game);
        frame.setSize(1000,500);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        while (true) {
            game.move();
            game.repaint();
            Thread.sleep(5);
        }
    }
}

首先,对于任何读过这个问题的人来说,不清楚你是如何表现出基本理解这个问题所需要的所有东西的

下面是一个3D解决方案: 您可以使用j3d软件包,可以找到一个很好的教程。把它通读到最后,也许它能帮你一个人解决问题

要移动这些对象,请在某个位置保留它们的列表(可能是“ArrayList”),并经常更新它们以允许它们移动

如果您阅读了教程,尤其是零件,那么您应该知道如何在世界中定位对象。如果您理解了TransformGroup的概念,那么您可能会意识到,为了操纵对象的位置,您必须将其TransformGroup保留在某个位置。这意味着你的敌人职业可能是这样的:

import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import javax.vecmath.*;
class Enemy {
    private TransformGroup tg; //Reference to move the object and also 
                               // has to be added to the world, see tutorial
    private ColorCube cube; //Reference to the cube, I don't exactly know why, could come in handy
    public Enemy() {
        Transform t = new Transform3D();
        this.tg = new TransformGroup();
        this.cube = new ColorCube(0.3); //Light red
        t.setTranslation(Vector3f(0.0f, 0.0f, 0.0f)); //Init with starting position
        this.tg.setTransform(t);
    }

    public void reposition() {
        //Call this for reposition and do your things
        // manipulate the TransformGroup for example
    }
    public TransformGroup getTg() { //So you can add it to the world after instanciating a new object
        return this.tg;
    }
}

你的角色的类看起来应该是一样的,如果你知道如何简化如何同时对付敌人和你自己的类(它们都需要经常更新),也许你可以在其中添加一些多态性。

你应该在这里发布相关的代码片段。第二,你应该问一个具体的问题。1)为了更快地获得更好的帮助,请发布一篇文章。2) 请对代码、输入/输出和结构化文档(如HTML或XML)使用代码格式。为此,请选择示例并单击消息发布/编辑表单上方的
{}
按钮。3) 请不要忘记在问题中添加“?”!有些人在页面中搜索“?”,如果“问题”中不存在,则直接转到行中的下一个(实际)问题。“这超出了您的需要。THX”您似乎无法知道我们需要什么来解决此问题。如果你知道需要什么,你就能自己解决99%的问题。此外,停止使用诸如“u”和“thx”之类的无意义拼写。这些不是我们需要在手机上查看的短信。你有一个完整的键盘,使用效果很好。谢谢。我去看看。