博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模拟条件超简单的细胞繁衍游戏之一
阅读量:5879 次
发布时间:2019-06-19

本文共 2036 字,大约阅读时间需要 6 分钟。

hot3.png

就像题目说的,这是一个模拟细胞繁衍的游戏,规则是:

  1. 当细胞周围<2 || >3 个细胞时,那个细胞就挂掉(太挤太窄都不行啊,怪我咯);

  2. 当一个死掉的细胞周围恰好有 3 个细胞时(换成2太拥挤,4的话就没得玩了,没几轮就不动了),它就满血复活啦~~

其实这个游戏主要还是想说明这个道理:表现和数据分离,这尼玛到底是怎么来玩的。

就这么简单的规则。来看看怎么样实现;

 先来撸一撸思路啊(其实我是想打捋一捋的~·~),是这样:

  1. 既然是模拟细胞,不用说,必然有个Cell Class;

  2. 既然是表现和数据分离,那我们总的有个表现类和数据类啊。

171121_iazF_2559261.jpg

好丑的图,不忍直视....

下面就开撸吧:

先把一个个类先建好,不要求弄好,先搭个架子

来个最简单的Cell类:

public class Cell {     private boolean isAlive = false;     public boolean isAlive() {          return this.isAlive;     }     public void die() {          this.isAlive = false;     }     public void reborn() {          this.isAlive  = true;     }     public void draw(Graphics g, int row, int col, int size){          g.drawRect(row, col, size, size);          if(isAlive){          g.fillRect(row, col, size, size);          }     }}

 再来个复杂点的:

package field;import java.util.ArrayList;import java.util.List;import cell.Cell;public class Field {     private int height;     private int width;     private Cell[][] cells;         public Field(int height, int width) {          this.height = height;          this.width = width;          cells = new Cell[height][width];     }     public int getHeight() {          return this.height;     }     public int getWidth() {          return this.width;     }     public Cell place(int row, int col, Cell cell) {          Cell ret = cells[row][col];          cells[row][col] = cell;          return ret;     }     public Cell getCell(int row , int col) {          return cells[row][col];     }    public Cell[] getNeighbour(int row , int col) {             List
 list = new ArrayList
();          for(int i = -1; i < 2; i ++) {               for(int j = -1; j < 2; j ++) {                int r = row + i;                int c = col + j;                if(r > -1 && c > -1 && r < this.height && c < this.width                && !( r == row && c == col)) {                list.add(cells[r][c]);                }               }          }      return list.toArray(new Cell[list.size()]);     }}

 

转载于:https://my.oschina.net/u/2559261/blog/551951

你可能感兴趣的文章
css绘制几何图形
查看>>
HTML标签
查看>>
理解JS中的Event Loop机制
查看>>
转载:字符编码笔记:ASCII,Unicode和UTF 8
查看>>
修复看不懂的 Console Log
查看>>
Android跨进程通信 AIDL使用
查看>>
ajax常见面试题
查看>>
结合kmp算法的匹配动画浅析其基本思想
查看>>
vue进行wepack打包执行npm run build出现错误
查看>>
nginx搭建
查看>>
【d3.js v4基础】过渡transition
查看>>
VUEJS开发规范
查看>>
Android系统的创世之初以及Activity的生命周期
查看>>
彻底解决Linux下memcached的安装
查看>>
人人都会数据采集- Scrapy 爬虫框架入门
查看>>
Android网络编程11之源码解析Retrofit
查看>>
esxi主机之添加新用户的访问权限
查看>>
AD账户被锁信息通知脚本
查看>>
数据集市和数据仓库的关系
查看>>
python 断言
查看>>