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