博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
弎问笔录30 之 狐狸和兔子(二)
阅读量:6955 次
发布时间:2019-06-27

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

hot3.png

现在把FoxAndRabbit给码出来:

package foxnrabbit;import java.util.ArrayList;import java.util.List;import javax.swing.JFrame;import ICell.ICell;import animal.Animal;import animal.Fox;import animal.Rabbit;import field.Field;import field.Location;import field.View;public class FoxAndRabbit { private Field field; private View view; public FoxAndRabbit(int size) {  field = new Field(size, size);  for(int row = 0; row < field.getHeight(); row ++) {   for(int col = 0; col < field.getWidth(); col ++) {    double probability = Math.random();    if(probability < 0.05) {     field.place(row, col, new Fox());    }else if(probability < 0.15) {     field.place(row, col, new Rabbit());    }   }  }  view = new View(field);  JFrame frame = new JFrame();  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  frame.setResizable(false);  frame.setTitle("FoxAndRabbit");  frame.add(view);  frame.pack();  frame.setVisible(true); }  public void start(int steps) {  for(int i = 0; i < steps; i ++) {   step();   view.repaint();   try {    Thread.sleep(200);   } catch (Exception e) {    e.printStackTrace();   }  } }  public void step() {  for(int row = 0; row < field.getHeight(); row ++) {   for(int col = 0; col < field.getWidth(); col ++) {    ICell cell = field.get(row, col);    if(cell != null) {     Animal animal = (Animal) cell;     animal.grow();     System.out.println(animal);     if(animal.isAlive()){      //move      Location[] freeAdj = field.getFreeAdj(row, col);      if(freeAdj.length > 0) {       Location moveloc = animal.move(row, col, freeAdj);       if(moveloc != null) {        field.move(row, col, moveloc);       }      }      //feed,注意,吃掉的animal一定要remove出来;      ICell[] neighbour = field.getNeighbour(row, col);      List
 listofRabbit = new ArrayList
();      if(neighbour.length > 0) {       for(ICell c : neighbour) {        if(c instanceof Rabbit) {         listofRabbit.add((Rabbit) c);        }       }       if(!listofRabbit.isEmpty()){        Animal fed = animal.feed(row, col, listofRabbit);        if(fed != null) {         field.remove((ICell) fed);        }       }             }      //breed      Animal baby = animal.breed();      if(baby != null) {       field.placeRandomAdj(row, col, (ICell)baby);      }     }else {      field.remove(row, col);     }    }   }  } }  public static void main(String[] args) {  FoxAndRabbit fnr = new FoxAndRabbit(40);  fnr.start(150); }}

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

你可能感兴趣的文章
Python数据结构——双端队列
查看>>
GitHub 项目推荐:用深度学习让你的照片变得美丽 ...
查看>>
另类文件加密 图片当密码给文本加密
查看>>
MySQL cluster 7.2集群部署配置
查看>>
iptables开放端口的使用方法总结
查看>>
MySQL数据库如何解决大数据量存储问题
查看>>
CENTOS6.5 yum配置
查看>>
《自顶向下网络设计(第3版)》——1.6 复习题
查看>>
【转】微信小程序给程序员带来的可能是一个赚钱的机遇
查看>>
《Programming Ruby中文版:第2版》终于正式出版了
查看>>
【RSA专题】在RSA2017大会上你会看到什么?勒索软件、物联网、区块链(以及更多)!...
查看>>
使用Observium来监控你的网络和服务器
查看>>
蚂蚁区块链团队资讯简报20170514
查看>>
线性空间(向量空间)
查看>>
多媒体之录音
查看>>
何为程序员思维
查看>>
【导入导出】compress 值为y对导入对象所占空间的影响
查看>>
mysql 分区类型详解
查看>>
ORACLE同义词总结
查看>>
iOS 设备类型和版本判断
查看>>