我有一款类似于生命游戏的游戏。游戏涉及创建房屋和重新安排邻居等。我想重新启动游戏,只需要将所有这些值设置回原始的起始值。我如何使用代码执行此操作。我理解它的英文,但似乎无法将其转换为代码。
这是我的一些主要程序(如果有人希望我发布我可以发布的整个主程序),但要简单,我不想让你们混淆。
所以我想要的是:要重新启动游戏,我只想将所有这些值设置回原始起始值。
一些主要计划:
public class Ghetto extends JFrame implements ActionListener, MouseListener,MouseMotionListener
{
protected Grids theGrid;
JButton resetButton;
javax.swing.Timer timer; // generates ticks that drive the animation
public final static int SIZE = 5;
public final static int BLUE = 10;
public final static int RED = 8;
public final static int DIVERSITY_PERCENTAGE = 70;
public static void main(String[] args)
{
new Ghetto();
}
public Ghetto() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
addMouseListener(this);
addMouseMotionListener(this);
setLayout(new FlowLayout());
theGrid = new Grids(SIZE, BLUE, RED, DIVERSITY_PERCENTAGE);
add(theGrid);
resetButton = new JButton("Reset");
add(resetButton);
resetButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
resetWithCurrent();
}
});
setSize(new Dimension(550, 600));
setVisible(true);
}
//public void resetWithCurrent()
//{
//}
@Override
public void actionPerformed(ActionEvent e)
{
timer.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
performStep();
}
});
}
}
答案 0 :(得分:1)
通常,最简单的方法是重置"不是。扔掉物体,做一个全新的!构造函数会为您处理所有事情,您不必担心遗漏某些事情。如果你真的需要,你可以创建一个执行所有必要设置的重置方法,并让构造函数调用它。您必须确保捕获所有内容,因此特别是您不能使用任何类似Foo x = bar
的字段初始化,并且您无法使用任何初始化程序块。
我建议的方法:
Ghetto ghetto = new Ghetto();
//Do stuff with the ghetto.
ghetto = new Ghetto();
//BLAM! The old ghetto is *gone*, and we have a new one to play with.
答案 1 :(得分:0)
如果这些"值"存储在一个单独的类中,比如class" GameProperties"那么你只需要通过创建GameProperties的新实例来调用构造函数。 构造函数应该注意分配默认值。 所以,假设您在Ghetto类中有一个名为 props 的 GameProperties 实例:
添加GameProperties类的新实例并在Ghetto类中更改resetWithCurrent:
GameProperties props = new GameProperties();
public void resetWithCurrent(){
//This will reset the values to their defaults as defined in the constructor
props = new GameProperties();
}
在使用GameProperties时删除值常量。使用getters方法 获取属性值。
创建新类:
public class GameProperties {
//assign initial default values
private int size= 5;
private int blue= 10;
private int red= 8;
private int diversity_percentage= 70;
//calling default constructor will set the properties default values
public GameProperties(){
}
public int getSize(){
return size;
}
public int getBlueValue(){
return size;
}
public int getRedValue(){
return size;
}
public int getDiversityPercentage(){
return diversity_percentage;
}
}
希望它有所帮助。