[英]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.