如何从另一个类更改变量,布尔值和数组的值

时间:2016-11-30 15:26:24

标签: java variables

我有一个游戏,我想重新启动它。我被建议将游戏中的每个变量恢复为默认值。问题是,我不知道如何从另一个类正确地恢复各种变量,布尔和数组,但是当我运行游戏时,它并没有改变任何东西。游戏没有重启。

我就这样做了:

users/route2.py

users/route3.py

以下是调用private boolean running; private boolean active; private int index; private long timer; private float xOffset, yOffset; private Queue<Integer> BaseQueue, KeyQueue; protected int x, y, count; protected boolean pickedUp; private static State currentState; private int width, height; private int spawnX, spawnY; protected float xMove, yMove; private boolean[] keys, justPressed, cantPress; private ArrayList<Item> inventoryItems; public static Item[] items = new Item[256]; public static Tile[] tiles = new Tile[256]; private int[][] tilesArray; public void restartGame() throws Exception{ active = true; running = false; index = 0; timer = 0; xOffset= 0; yOffset=0; BaseQueue = null; KeyQueue = null; x=0; y =0; count = 1; width= 0; height = 0; spawnX = 100; spawnY=100; currentState = null; xMove = 0; yMove = 0; keys = null; justPressed = null; cantPress = null; inventoryItems = null; items = null; ArrayList<Item> items = null; tiles = null; tilesArray = null; } 方法的代码:

restartGame

我不知道我做了什么。对不起请告诉您需要的代码部分,以便提供帮助。

3 个答案:

答案 0 :(得分:0)

您可以在创建时为每个变量赋值:

protected int x=0, y=0, count=1;
...

然后这些是&#39;默认&#39;值。
对于布尔值,您可以将其设置为您需要的值:

private boolean running = false;
private boolean active = true;

所有其他对象的默认值均为null,因为所有对象都已初始化为null(除非它们是intdouble,{{1}等等)。

对于string,默认值也为null

boolean

答案 1 :(得分:0)

我将以下陈述作为此问题的问题:

  

我被建议将游戏中的每个变量恢复为默认值。

当你实例化这个课程并在游戏中玩弄它时,它会改变数值。当您重新实例化此类时,它将再次使用默认值重新创建对象,覆盖现有对象。

例如,如果你有:

Object o = new Object();
o.setThis("whatever");
o.setThat(true);
o.setFoo(1);
o.setBar(0.0f);

然后您决定要重新启动游戏,以便重置o中包含的值,您只需重新实例化即可将所有内容设置为开头。

Object o = new Object();
... // Do whatever

Object的构造函数中,您可以根据需要设置默认值。至于在Object中访问这些属性,我建议你看一下POJO并使用getter和setter。

这种方法类似于List清算时使用的方法。你可以这样做:

List<T> arr = new ArrayList<T>();

或:

List<T>.clear();

您基本上要清空对象以获取新值,从根本上刷新对象。

答案 2 :(得分:0)

当你从一个类创建一个对象时(假设你使用它一段时间并修改它的值),如果你需要一个对象恢复到它的初始状态和属性,你可以实例化一个新类并将其分配给您已创建的对象。

class MyGame {

    // all states and properties
    private int width = 0; // etc . . .
    public void setWidth(int width) {

        this.width = width;
    }
    // etc . . .
}

// create a new game
MyGame myGame = new MyGame();

// modify the object for a while
myGame.setWidth(12); // etc . . .

// you can just reset the object like so,
myGame = new MyGame();

希望java应该为你“垃圾收集”旧对象。