JAVA学习笔记(七)细胞自动机(带注释)

本文是关于细胞自动机的学习笔记,主要介绍了细胞自动机的规则,分析了翁恺老师的JAVA代码,包括CellMachine、Field、View和Cell四个部分,并提出了翁恺老师提出的两个问题供读者思考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

细胞自动机

这两天学习了翁恺老师的细胞自动机章节,下载了他的代码,并且分析和研究了一下,打上了一些注释,如果有需要的同学可以一起看一下翁恺老师的代码,也可以借助我的注释理解一下代码里面的思想和方法。

一、细胞自动机介绍

在一个棋盘上有很多细胞(黑为活着的细胞,白为死亡的细胞),它们在棋盘上根据一定的规则重生或者死亡。
1.死亡:如果一个细胞的邻居活着的数量>3或者<2,则该细胞死亡
2.重生:如果一个细胞的邻居活着的数量=3,则该细胞重生
3.如果有其他情况则保持现状

二、文件结构

在这里插入图片描述

三、代码

1.CellMachine

package cellmachine;

import javax.swing.JFrame;

import cell.Cell;
import field.View;
import field.Field;
//因为这三个类都是在其他包里的,我们想要用就必须要import一下

public class CellMachine {
   

    public static void main(String[] args) {
   
        Field field = new Field(30,30);
        //new了一个新的30*30的棋盘对象
        for( int row = 0; row<field.getHeight(); row++ ) {
   
            for( int col = 0; col<field.getWidth(); col++ ) {
   
                field.place(row, col, new Cell());
            }
        }
        //两层循环,遍历棋盘上的每一个位置,在每一个坐标对应的位置创造一个新的细胞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();
                    //细胞重生
                }
                //这里用了random随机在0~1之间,也就是棋盘上每一个细胞有1/5的概率重生
            }
        }
        //两层循环,遍历棋盘上的每一个细胞,给细胞自动机初始化,给整个棋盘的细胞随机重生

        View view = new View(field);
        //new了一个新的view对象,告诉它我们的field
        JFrame frame = new JFrame();
        //new了一个新的JFrame对象,JFrame类的用处是创造一个JAVA窗口
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //获得一个默认的关闭操作,当我们点击红叉时可以正常地将程序结束掉
        frame.setResizable(false);
        //窗口大小不可以改变
        frame.setTitle("Cells")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值