看了翁恺老师的Java进阶,然后跟着敲了代码,练手,深入的体会一下这个小项目的思想。
Field的类,放入细胞,存放数据。
View类用于根据Field画出图形,调用细胞有的draw方法。
然后在根据简单的逻辑判断,判断细胞的邻居数量,来确定细胞的生死。
在这个过程中学到了frame.pack()-->根据窗口里面的布局及组件(本例指panel)的preferedSize来确定frame的最佳大小。和setSize()不同,更够不用手动设置,更为贴合的找到frame的大小。
package 细胞自动机.CellMachine;
import 细胞自动机.Cell.Cell;
import 细胞自动机.Field.Field;
import javax.swing.*;
/**
* Created by Administrator on 2018\4\1 0001.
*/
public class CellMachine {
public static void main(String[] args) {
Field field = new Field(30,30);
//往格子里放细胞
for(int row=0;row<field.getHeight();row++){
for(int col=0;col<field.getWidth();col++){
field.place(row,col,new Cell());
}
}
//初始化确定最开始细胞的数量
for(int row=0;row<field.getHeight();row++){
for(int col=0;col<field.getWidth();col++){
Cell cell = field.get(row,col);
if(Math.random()<0.2){
cell.reborn();