- 浏览: 81627 次
- 性别:
- 来自: 上海
最新评论
-
zhangyou1010:
以前项目里面的功能,我基本都是用java 程序去实现,最近才发 ...
Oracle学习笔记(一) -
addison110:
不争而善胜:孙子兵法有云,不胜在己,胜在彼。其实相对于自然,社 ...
读老子(三) -
doylecnn:
Last-in-first-out也就是先进先出的模式???
Android学习笔记(二)
这是我在论坛上一个朋友出的一道题目,然后我再用java来写的。总共3个类。
- public class mainapp {
- /**
- * 1. 如果一个细胞只有0或1个邻居,它将因为孤独而死;
- * 2. 如果一个细胞有4到8个邻居,它将因为拥挤而死;
- * 3. 如果一个细胞恰有2或者3个邻居,它将继续生存下去;
- * 4. 如果一个空格子恰有3个邻居,将“生”出一个新细胞;
- * 5. 其他的空格子继续维持原状。
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Cellsgroup test = new Cellsgroup();
- test.setVisible(true);
- }
- }
- /*
- * 此类是一个窗体,用来装cell的容器
- */
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.GridLayout;
- import java.awt.Toolkit;
- import javax.swing.JFrame;
- public class Cellsgroup extends JFrame {
- private static final long serialVersionUID = 1L;
- public int rows = 10; //行
- public int coloums = 10; //列数
- Cell[] Cellgroup = new Cell[rows*coloums]; //装载Cellgroup的类
- //构造方法
- public Cellsgroup(){
- super("cell"); //设置标题
- Toolkit mykit = this.getToolkit();
- Dimension wndsize = mykit.getScreenSize();
- int size = wndsize.width/2;
- this.setBounds((wndsize.width-size)/2,(wndsize.height-size)/2
- ,size,size); //设置大小
- this.allcell();
- this.setDefaultCloseOperation(EXIT_ON_CLOSE); //设置推出
- this.setVisible(true);
- }
- //添加元素
- private void allcell() {
- GridLayout layout = new GridLayout(rows,coloums); //设置网格布局管理器
- Container content = this.getContentPane();
- content.setLayout(layout);
- for(int i = 0;i<Cellgroup.length;i++){ //初始化,放入cell
- Cellgroup[i] = new Cell(i,this);
- content.add(Cellgroup[i]);
- }
- for(Cell cell:Cellgroup){
- cell.initialfrinends(cell.getNo());
- }
- }
- }
- /*细胞,为了处理方便,这里把其做为一个Label表示。*/
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.JLabel;
- import javax.swing.Timer;
- public class Cell extends JLabel {
- private static final long serialVersionUID = 1L;
- private boolean status; //表示细胞存活的状态。
- private Cell[] cellfriend; //存储附近细胞的类
- private Cellsgroup Cellsgroup; //载入窗体
- private int no; //窗体编号
- public int getNo() {
- return no;
- }
- Timer t ; //计时器
- //获取状态
- public boolean isStatus() {
- return status;
- }
- //设定状态
- public void setStatus(boolean status) {
- if(status){
- this.setText("Cell"); //表示出现新的细胞
- }else{
- this.setText(""); //细胞死亡
- }
- this.repaint();
- this.status = status;
- }
- //构造函数
- public Cell(int no,Cellsgroup Cellsgroup){
- this.Cellsgroup = Cellsgroup;
- this.initialStatus(); //初始化状态
- this.no = no;
- t = new Timer((int) (200*Math.random()+900),new timelistener());
- t.start(); //打开计时器
- }
- //初始化状态
- private void initialStatus(){
- if(Math.random()>0.5){ //当随机数大于0.5时,表示细胞存活
- this.setStatus(true); //为存活
- }else{
- this.setStatus(false); //为死亡
- }
- }
- //设定朋友群
- public void initialfrinends(int no){
- cellfriend = new Cell[8]; //表示8个方位
- this.setOneFriend(1, no-Cellsgroup.coloums); //正上方
- if(((no-1)%Cellsgroup.coloums)!=0){ //左边一排没有左面
- this.setOneFriend(3, no-1); //左面
- this.setOneFriend(0, no-Cellsgroup.coloums-1); //左上角
- this.setOneFriend(5, no+Cellsgroup.coloums-1); //左下角
- }
- if((no%Cellsgroup.coloums)!=0){ //右边一排没有右面
- this.setOneFriend(4, no+1); //右面
- this.setOneFriend(2, no-Cellsgroup.coloums+1); //右上角
- this.setOneFriend(7, no+Cellsgroup.coloums+1); //右下角
- }
- this.setOneFriend(6, no+Cellsgroup.coloums); //正下方
- }
- //设定一个朋友
- //friendno是将要放入cellfrind的下标,cellsno是cellgroup对应的下标。
- private void setOneFriend(int friendno,int cellsno){
- //因为考虑到边的情况,所以要cellsno判断一下是否越界。
- if((cellsno<Cellsgroup.Cellgroup.length)&&(cellsno>=0)){
- cellfriend[friendno]= Cellsgroup.Cellgroup[cellsno];
- }
- }
- //获得存活的朋友数
- public int getalivefriend(){
- int alivefriend = 0; //计数器
- for(Cell cell:cellfriend){ //迭代整个数组
- if(cell!=null&&cell.isStatus()){ //为存活
- alivefriend++; //计数器加一
- }
- }
- return alivefriend;
- }
- //监听器类
- class timelistener implements ActionListener{
- public void actionPerformed(ActionEvent e) {
- int alivefriend = getalivefriend();
- if(alivefriend<2||alivefriend>3){ //细胞会死亡
- setStatus(false);
- }else if(alivefriend==3){ //生成新细胞
- setStatus(true);
- }
- }
- }
- public String toString(){
- return String.valueOf(this.no);
- }
- }
发表评论
-
不用循环Copy数组的方法
2011-11-17 21:54 1026arraycopy(Object src, int ... -
Java.lang.AbstractStringBuilder源代码笔记
2011-11-17 21:45 34351,子类有StringBuffer和StringBuilder ... -
读String源代码笔记
2011-11-12 22:10 11321,数字可以转换成其他的进制的字符串时,能够使用Inte ... -
Tomcat(三)
2010-03-31 10:47 11479.Context.XML 这个文件主 ... -
oracle学习笔记(十八)
2010-03-30 20:11 919110)谈到分区的作用。我想有点意识的人都会明白。把一 ... -
Tomcat学习笔记(二)
2010-03-24 09:10 13466 . <Manager className=&quo ... -
Oracle学习笔记(十七)
2010-03-21 13:41 1076103). Date,TimeStamp,Interval ... -
Oracle学习笔记(十六)
2010-03-20 19:43 89597.NLS(National Languag ... -
Tomcat学习笔记(一)
2010-03-18 15:50 15471。多个Tomcat实例 To have one ... -
Oracle学习笔记(十五)
2010-03-14 19:12 79896 本来想要继续写索引,但是发觉由于没有一些主观上的认识。写 ... -
Oracle学习笔记(十四)
2010-03-12 23:39 68692.索引。 对于索引。其实我了解的并不是很多。只是单单的知 ... -
Oracle学习笔记(十三)
2010-03-07 20:59 76087.堆组织表 看完了这些介绍之后,我 ... -
Oracle学习笔记(十二)
2010-03-04 22:36 120680。表的类型 1.堆组织表(heap organized ... -
oracle学习笔记(十一)
2010-02-28 18:36 75576. 关于零时表的Undo和Redo。直接写结论吧 ... -
Oracle学习笔记(十)
2010-02-25 22:23 85770 Redo和Undo Redo和Undo从字面 ... -
想在上海地区找份工作
2010-02-24 21:53 72我会的都已经记录在这里。具体要求可以看看我的 ... -
Oracle学习笔记(九)
2010-02-20 22:40 88066,事务。其实在数据库中,事务的作用毋庸置疑。在这 ... -
Oracle学习笔记(八)
2010-02-19 15:57 90162,并发与多版本: 觉得这是数据库永恒的主题。一个数据的高低 ... -
Oracle学习笔记(七)
2010-02-17 18:42 96656 阻塞: 这一段没有看得太明白。但是也不是云里雾 ... -
Oracle学习笔记(六)
2010-02-15 10:09 89452 锁: 其实锁是每个数据库用于处理并发问题的一种 ...
相关推荐
20070424 <br/>运行开始时,程序会提示用户输入: <br/>补给的延时时间(400~X) <br/>细胞个体的总数量(1~499) <br/> 输入你觉得合适的数值开始,程序就会在地图上随机出现一个细胞生命,...
程序默认模拟20*20个方格内的细胞,可以通过在源代码中修改数组的下标上界得到任意多方格内的细胞模拟程序,开始时只需输入活细胞坐标(程序默认不输入的坐标都是死细胞),在输入一组大于20的坐标,模拟即开始
基于Python3 开发的细胞分裂模拟程序。程序可设定细胞死亡周期,细胞分裂需要的资源空间,细胞分裂的最大次数等参数。可以自行优化调整
运行开始时,程序会提示用户输入: <br/>补给的延时时间(400~X) <br/>细胞个体的总数量(1~499) <br/> 输入你觉得合适的数值开始,程序就会在地图上随机出现一个细胞生命,慢慢得看它们繁殖吧,...
细胞模拟通常涉及到以下几个方面: 1. **初始化**:设置初始细胞状态,可能基于某种特定的模式或随机分布。 2. **规则定义**:设定细胞状态转移规则,比如根据周围细胞的状态决定当前细胞的生死。 3. **时间步推进**...
- 使用JAVA编写模拟程序,实现上述规则。 - 对模拟结果进行数据分析,以评估交通控制策略的有效性。 #### 四、模型构建与实现 **模型假设:** - 假设道路上的每辆车按照一定的规则移动。 - 设定安全距离阈值,...
生命模拟程序通常基于像“康威生命游戏”这样的规则集,其中每个细胞有固定的状态(如存活、死亡),并根据周围细胞的状态遵循特定的更新规则。这些规则可以模拟出各种复杂的动态模式,如自复制结构、周期性模式等...
《细胞模拟程序——“nerve.zip_The Program”解析》 在信息技术的广阔领域中,模拟生物系统一直是科学家和工程师们关注的热点。标题中的"nerve.zip_The Program"暗示了一个专门用于模拟神经系统的软件程序。这个...
标题中的“多线程生命模拟程序”指的是一个利用多线程技术实现的计算机程序,它模拟了生物体的生命周期和互动。在计算机科学领域,生命模拟通常基于所谓的细胞自动机,如著名的康威生命游戏。这类模拟允许我们观察...
在这个项目中,Matlab被用来编写模拟程序,处理和展示数据。 4. **数据结构**:为了跟踪细胞的属性,如世代、父母、祖先、出生时间和分裂时间,项目可能使用了自定义的数据结构,如数组或者矩阵。在Matlab中,可以...
1. **设置参数**:根据实验条件或理论分析,确定合适的FHN模型参数,如ε、a和b,以模拟特定的细胞响应。 2. **空间网格**:为了模拟二维或三维空间中的波形,我们需要在空间上建立一个网格,每个网格点对应一个FHN...
在“基于matlab的分水岭算法分割黏连细胞程序”中,提供的代码可能包括了以上所述的这些步骤,并且可能还包含了自定义的优化策略,如选择最佳阈值、改进种子点检测等。通过分析和理解这段代码,用户可以学习如何在...
### 基于P代码的细胞分裂和分化的程序模拟 #### 概述 本文讨论了一个结合现代生物学知识与计算机编程技术的新颖方法——通过观察孵化鸡的过程,并将其转化为计算机可处理的形式,来探索细胞分裂与分化的机制。研究...
开发者可能已经封装了这些复杂的计算过程,使得其他Delphi程序可以方便地调用这个类,实现细胞自动机的各种模拟。 代码文件"codefans.net"可能是从代码分享网站codefans.net下载的源代码,用于实现细胞算法。在查看...
如果是代码文件,它可能包括主程序和相关辅助函数,用于展示和模拟生命游戏的各种状态。 **详细知识点:** 1. **细胞自动机原理**:介绍细胞自动机的基本概念,包括一维、二维细胞自动机以及它们在复杂系统理论中...
在本研究中,作者通过模拟氨基酸饥饿状态,使用雷帕霉素处理两种鳞翅目昆虫细胞——家蚕(Bmn-e细胞)和斜纹夜蛾(SL细胞),观察到不同的细胞死亡反应。Bmn-e细胞在12小时后显示出明显的细胞自噬和细胞凋亡,而SL...
3. 增殖与死亡:模拟细胞的增殖机制(如有丝分裂)和死亡过程(如程序性细胞死亡)。 4. 环境互动:模拟细胞与周围环境(如营养物质、有害物质、温度等)的交互。 四、模拟算法 模拟单细胞生物的行为可能需要用到...
最著名的细胞自动机之一是康威的生命游戏,它通过“生”、“死”规则模拟细胞状态的变化,展现了复杂的行为。在本项目中,细胞自动机可能也采用了类似规则,但具体规则需要查看源代码来了解。 2. **Java实现**:...
这个程序是在windows平台下运行game of life最好的平台。它不仅对细胞空间没有限制、运行速度非常快、界面很友好,而且能够为你提供大量的初始细胞分布图案,你还可以任意组合这些图案达到你象要的构形,然后让这些...