创建对象的多个实例。 (游戏)

时间:2014-06-11 22:28:53

标签: java

我被要求为我的CS(高中)课程制作一个游戏作为我学期末的作业。我们还没有正确地教授制作游戏所需的所有编码,因此我在这方面的知识非常差。无论如何,我想要制作的游戏类似于" Flappy Fall" (Apple appstore游戏),对象从屏幕顶部落下并下降到屏幕底部。目标是在这些物体到达底部之前捕捉它们。我能够让一个对象掉落并且还创建了" catcher",但我不知道如何创建多个下落的对象,也不知道如何删除对象一旦它被捕获捕手。到目前为止,我有课程" JavaGame"," Catcher"和" Ball"。任何帮助将不胜感激。

int x, y;
int t = 1;
private Image dbImage;
private Graphics dbGraphics;
Image player;
Image bkg;
static Catcher p = new Catcher(150, 450);

public JavaGame() {
    //Game Images
    ImageIcon b = new ImageIcon("bkg.png");
    bkg = b.getImage();

    //Game properties
    setTitle("Game");
    setSize(350, 600);
    setResizable(false);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    addKeyListener(new Keys());
    addMouseMotionListener(new Mouse());


}

public void paint(Graphics g) {
    //
    dbImage = createImage(getWidth(), getHeight());
    dbGraphics = dbImage.getGraphics();
    draw(dbGraphics);
    g.drawImage(dbImage, 0, 0, this);
}





public void draw(Graphics g) {
    g.drawImage(bkg, 0, 0, this); //Creates background
    p.draw(g);
    //while (t < 100) {
        p.b.draw(g);
        //t++;
    //}
    g.setColor(Color.WHITE);
    g.drawString(""+p.score, 175, 50);
    repaint();
}


public static void main(String[] args) {
    JavaGame jg = new JavaGame();

    //Threads
    Thread p1 = new Thread(p);
    p1.start();
    Thread ball = new Thread(p.b);
    ball.start();
}

public class Keys extends KeyAdapter {
    public void keyPressed(KeyEvent e) {
        p.keyPressed(e);
    }

    public void keyReleased(KeyEvent e) {
        p.keyReleased(e);
    }
}

public class Mouse implements MouseMotionListener {
    public void mouseDragged(MouseEvent e) {
        p.mouseDragged(e);
    }
    public void mouseMoved(MouseEvent e) {
        p.mouseMoved(e);
    }
}

}

int x, y, ranX, xDirection;
int score;
Rectangle catch1;   
Ball b = new Ball(170, 1);

public Catcher (int x, int y) {
    score = 0;
    this.x = x;
    this.y = y;
    catch1 = new Rectangle(this.x, this.y, 50, 15);
}

public void run() {
    try {
        while(true) {
            move();
            Thread.sleep(5);
        }
    }

    catch(Exception e) {
        System.out.println("Error");
    }
}


public void collision() {
    if (b.ball.intersects(catch1)) {
        b.ball(Color.blue);
        score++;
        System.out.println(score);
    }
}

public void move() {
    collision();
    catch1.x += xDirection;
    if (catch1.x <= 0)
        catch1.x = 0;
    if (catch1.x >= 300)
        catch1.x = 300; 
}

public void setXDirection(int xDir) {
    xDirection = xDir;
}

    public void keyPressed(KeyEvent m) {
        int keyCode = m.getKeyCode();
        if (keyCode == m.VK_LEFT) {
            setXDirection(-1);
        }       

        if (keyCode == m.VK_RIGHT) {
            setXDirection(+1);
        }  
        m.consume();
    }            

    public void keyReleased(KeyEvent m) {
        int keyCode = m.getKeyCode();
        if (keyCode == m.VK_LEFT) {
            setXDirection(0);
        }                

        if (keyCode == m.VK_RIGHT) {
            setXDirection(0);
        } 
        m.consume();
    }

    public void mouseDragged(MouseEvent e) {
        catch1.x = e.getX()-25;
        e.consume();
    }
    public void mouseMoved(MouseEvent e) {
        catch1.x = e.getX()-25;
        e.consume();
    }

public void draw(Graphics g) {
    g.fillRect(catch1.x, catch1.y, catch1.width, catch1.height);

}

}

int x, y, yDirection;
Rectangle ball;

public Ball (int x, int y) {
    this.x = x;
    this.y = y;
    ball = new Rectangle(this.x, this.y, 10, 10);
}

public void run() {
    try{
        while(true) {
            move();
            Thread.sleep(5);
        }
    }

    catch(Exception e) {
        System.out.println("Error");
    }
}

public void move() {
    if (ball.y >= 600) {
        ball.y = 600;
    }

    if (ball.y > 0) {
        ball.y++;
    }
}

public void setYDirection(int yDir) {
    yDirection = yDir;
}

public void draw(Graphics g) {
    g.setColor(Color.WHITE);
    g.fillRect(ball.x, ball.y, ball.width, ball.height);
    System.out.println(ball.x+ " "+ ball.y+ " " + ball.width + " " + ball.height);
}

}

2 个答案:

答案 0 :(得分:3)

我会稍微重新组织一下代码。在主游戏中,您可以拥有一系列“球”类型。我会把收藏选项留给你。但是你需要在集合中添加“新”球,然后在它们被抓住后将它们删除。

答案 1 :(得分:2)

由于我不想做你的任务,我只是给出一个简短的答案:

多次致电new Ball()。 当然,您可能希望将它们添加到集合中,例如      List list = new ArrayList();      list.add(球);

完成后,将其从该集合中删除。

相关问题