这是我正在制作的生活游戏的代码,我想尝试在活细胞之间添加间距,但无法弄明白。
有人可以帮忙吗?或者是否可以在后台制作网格?
public class ClickFX extends Application
{
public LifeGrid lg;
public int x;
public int y;
public static void main(String[] args)
{
launch(args);
}
GraphicsContext gc;
ClickData clickData;
int squareSize;
Stage primaryStage;
Color colours[] = { Color.WHITE, Color.RED, Color.GREEN, Color.CYAN,
Color.BLUE, Color.BLACK };
public void start(Stage primaryStage) throws FileNotFoundException {
squareSize = 6;
int x = 80, y = 80;
clickData = new ClickData(x, y);
lg = new LifeGrid(x,y,"seed.txt");
VBox root = new VBox(8);
HBox buttons = new HBox(5);
buttons.setAlignment(Pos.CENTER);
Button ngButton = new Button("Next Gen");
ngButton.setOnAction(new ngButtonHandler());
ngButton.setTooltip(new Tooltip("Click to Start!\nKeep clicking to Evolve!"));
Button clearButton = new Button("Clear");
clearButton.setOnAction(new clearButtonHandler());
clearButton.setTooltip(new Tooltip("Click to Clear"));
Button randomButton = new Button("Random Generate");
randomButton.setOnAction(new randomButtonHandler());
randomButton.setTooltip(new Tooltip("Click to create Random Generation"));
Button closeButton = new Button("Close");
closeButton.setOnAction(new closeButtonHandler());
buttons.getChildren().addAll(ngButton, randomButton, clearButton, closeButton);
Canvas canvas = new Canvas(x * squareSize, y * squareSize);
gc = canvas.getGraphicsContext2D();
canvas.addEventHandler(MouseEvent.MOUSE_CLICKED, new mouseClickHandler());
this.primaryStage = primaryStage;
primaryStage.setTitle("Game Of Life");
root.getChildren().addAll(canvas, buttons);
primaryStage.setScene(new Scene(root));![enter image description here][1]
primaryStage.setResizable(false);
primaryStage.show();
}
public void init() throws Exception
{
super.init();
Parameters parameters = getParameters();
Map<String, String> namedParameters = parameters.getNamed();
for(Map.Entry<String, String> entry : namedParameters.entrySet())
{
if("width".equals(entry.getKey()))
{
x = Integer.parseInt(entry.getValue());
}
else if("height".equals(entry.getKey()))
{
y = Integer.parseInt(entry.getValue());
}
}
}
按钮的操作在下面创建。
class clearButtonHandler implements EventHandler<ActionEvent> {
public void handle(ActionEvent e) {
clickData.clear();
gc.setFill(Color.WHITE);
gc.fillRect(0, 0, clickData.getX() * squareSize, clickData.getY()
* squareSize);
}
}
class closeButtonHandler implements EventHandler<ActionEvent> {
public void handle(ActionEvent e) {
primaryStage.close();
}
}
class randomButtonHandler implements EventHandler<ActionEvent>
{
public void handle(ActionEvent e)
{
lg.RandomGeneration();
drawNG();
}
}
class ngButtonHandler implements EventHandler<ActionEvent>
{
public void handle(ActionEvent e)
{
drawNG();
lg.Run();
}
}
在这里,我在画布上绘制了活细胞。
public void drawNG()
{
for(int i=0; i<lg.CG.length; i++)
{
for(int k=0; k<lg.CG[0].length; k++)
{
if(lg.CG[i][k] == 1)
{
gc.setFill(Color.BLACK);
gc.setStroke(Color.RED);
gc.fillRect(k*squareSize, i*squareSize, squareSize, squareSize);
}
else
{
gc.setFill(Color.WHITE);
gc.fillRect(k*squareSize, i*squareSize, squareSize, squareSize);
}
}
}
}
答案 0 :(得分:0)
更改
gc.fillRect(k*squareSize, i*squareSize, squareSize, squareSize)
为...
gc.fillRect(k*squareSize + offset, i*squareSize + offset, squareSize, squareSize)
其中offset
是您想要的距离。