简体   繁体   English

Java中static变量怎么改

[英]How to change static Variables in Java

How do I change the data exchange to not use statics.如何更改数据交换以不使用静态。 My Prof told me I should avoid it, but I dont know how to improve here.我的教授告诉我我应该避免它,但我不知道如何在这里改进。 For example I brought the class Controls.例如,我带来了 class 控件。 Any Ideas?有任何想法吗? I really don't know what to do and need help.我真的不知道该怎么办,需要帮助。 Thank You!!谢谢你!!

package game2048;

public class GameBody {
    public static final ColorDescription COLORS = new ColorDescription();
    public static final Window WINDOW = new Window("2048");
    public static final Controls CONTROLS = new Controls();
    public static final Board BOARD = new Board(4);

}
public class Controls implements KeyListener {

    @Override
    public void keyTyped(KeyEvent e) {}
    public void keyReleased(KeyEvent e) {}
    public void keyPressed(KeyEvent e) {

        int keyCode = e.getKeyCode();

        switch (keyCode) {
            case KeyEvent.VK_UP:
                GameBody.BOARD.moveUp();
                break;
            case KeyEvent.VK_DOWN:
                GameBody.BOARD.moveDown();
                break;
            case KeyEvent.VK_LEFT:
                GameBody.BOARD.moveLeft();
                break;
            case KeyEvent.VK_RIGHT:
                GameBody.BOARD.moveRight();
                break;
            case KeyEvent.VK_ESCAPE:
                GameBody.WINDOW.dispose();
                break;
            default:
                break;
        }

        GameBody.BOARD.isGameOver();
        GameBody.WINDOW.repaint();

    }

    public void bind() {
        GameBody.WINDOW.addKeyListener(this);
    }

    public void unbind() {
        GameBody.WINDOW.removeKeyListener(this);
    }

}

At first, remove all static keywords.首先,删除所有 static 个关键字。

Then, in you main() , create an instance of your Gameboy using:然后,在您的main()中,使用以下方法创建您的Gameboy实例:

GameBody gamebody = new Gamebody();

And be aware of keyPressed .并注意keyPressed It might be a better idea to use keyReleased .使用keyReleased可能是更好的主意。

Something like this:是这样的:

package game2048;

public class GameBody {
    public final ColorDescription COLORS = new ColorDescription();
    public final Window WINDOW = new Window("2048");
    public final Controls CONTROLS = new Controls();
    public final Board BOARD = new Board(4);

}
public class Controls implements KeyListener {
    private GameBody gamebody = GameBody();

    @Override
    public void keyTyped(KeyEvent e) {}
    public void keyReleased(KeyEvent e) {}
    public void keyPressed(KeyEvent e) {

        int keyCode = e.getKeyCode();

        switch (keyCode) {
            case KeyEvent.VK_UP:
                gamebody.BOARD.moveUp();
                break;
            case KeyEvent.VK_DOWN:
                gamebody.BOARD.moveDown();
                break;
            case KeyEvent.VK_LEFT:
                gamebody.BOARD.moveLeft();
                break;
            case KeyEvent.VK_RIGHT:
                gamebody.BOARD.moveRight();
                break;
            case KeyEvent.VK_ESCAPE:
                gamebody.WINDOW.dispose();
                break;
            default:
                break;
        }

        gamebody.BOARD.isGameOver();
        gamebody.WINDOW.repaint();

    }

    public void bind() {
        gamebody.WINDOW.addKeyListener(this);
    }

    public void unbind() {
        gamebody.WINDOW.removeKeyListener(this);
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM