簡體   English   中英

從 JAVA 文件調用 JAVA 文件時遇到問題

[英]Trouble calling a JAVA file from a JAVA File

我對 java 相當陌生,並且無法將我按照教程編碼的迷你網球游戲調用到另一個 java 文件中。 本質上,主文件中的一個按鈕將調用我的游戲並將其顯示在另一個JFrame中。 我無法打開我的游戲框架,我知道這與我的游戲代碼布局有關,但我嘗試重新排列,但我無法調用它,因為主要的 function 拋出一個中斷的異常,因為那里有一個線程保持游戲循環。 我會在我的主程序中添加什么來調用它,如何修改我的迷你網球游戲以使其能夠被調用? 基本上,我怎樣才能修改下面的代碼以便能夠使用Game2 game = new Game2(); 在另一個程序中? 還是有其他方法?

@SuppressWarnings("serial")
public class Game2 extends JPanel {
    Ball ball = new Ball(this);
    Racquet racquet = new Racquet(this);
    int speed = 1;

    private int getScore() {
        return speed - 1;
    }

    public Game2() {
        addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {
            }

            @Override
            public void keyReleased(KeyEvent e) {
                racquet.keyReleased(e);
            }

            @Override
            public void keyPressed(KeyEvent e) {
                racquet.keyPressed(e);
            }
        });
        setFocusable(true);
        Sound.BACK.loop();
    }

    private void move() {
        ball.move();
        racquet.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);
        racquet.paint(g2d);

        g2d.setColor(Color.GREEN);
        g2d.setFont(new Font("Verdana", Font.BOLD, 30));
        g2d.drawString(String.valueOf(getScore()), 10, 30);
    }

    public void gameOver() {
        Sound.BACK.stop();
        Sound.GAMEOVER.play();
        JOptionPane.showMessageDialog(this,
                                      "You caught it this many times " + getScore(),
                                      "Game Over",
                                      JOptionPane.YES_NO_OPTION);
        System.exit(ABORT);
    }

    public static void main(String[] args) throws InterruptedException {
        JFrame frame = new JFrame("Catch the Snowball");
        Game2 game = new Game2();
        frame.add(game);
        frame.setSize(300, 400);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        while (true) {
            game.move();
            game.repaint();
            Thread.sleep(10);
        }
    }
}

我不確定我是否理解正確,但如果你想訪問Game2 game = new Game2(); 從另一個 class 您可以創建 static object 游戲。

    public class Game2 extends JPanel {
        public static Game2 game;
        ...

然后你需要初始化它。

public static void main(String[] args) throws InterruptedException {
    JFrame frame = new JFrame("Catch the Snowball");
    game = new Game2();

然后你可以通過

Game2.game.something();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM