我有一个游戏,我想重新启动它。我被建议将游戏中的每个变量恢复为默认值。问题是,我不知道如何从另一个类正确地恢复各种变量,布尔和数组,但是当我运行游戏时,它并没有改变任何东西。游戏没有重启。
我就这样做了:
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
我不知道我做了什么。对不起请告诉您需要的代码部分,以便提供帮助。
答案 0 :(得分:0)
您可以在创建时为每个变量赋值:
protected int x=0, y=0, count=1;
...
然后这些是&#39;默认&#39;值。
对于布尔值,您可以将其设置为您需要的值:
private boolean running = false;
private boolean active = true;
所有其他对象的默认值均为null
,因为所有对象都已初始化为null
(除非它们是int
,double
,{{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应该为你“垃圾收集”旧对象。