第二次博客作业-结对编程第一阶段
一、实验目标:
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二、实验内容:
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、敏捷开发
360百科上说,敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。其核心原则是:主张简单、拥抱变化、可持续性、递增的变化、令投资最大化、有目的的建模等等。
四、结对编程
结对编程技术是指两位程序员坐在同一工作台前开发软件。与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码。两个程序员具有相同的缺点和盲点的可能性很小,所以当我们采用结对编程的时候会获得一个强大的解决方案。而这个解决方案恰恰是其它软件工程方法学中所没有的。
五、问题描述
本次我们队的实验题目是生命游戏。生命游戏的规则很简单,寥寥几条,但是却能有无数种变化,无数种或简单或复杂的美丽图案。不仅如此,生命游戏还对应了宇宙中的生命规律。它是一个二维的矩形世界,这个世界里每个方格对应着一个细胞,有填充代表是活着的细胞,无填充代表是死去的细胞。每个细胞在下一刻的状态取决于周围的八个细胞,如果相邻细胞中活着的细胞过多,那么这个细胞会因为资源匮乏而死亡,如果相邻细胞活着的过少,那么这个细胞也会因为孤独而死亡。具体规则如下:
1、相邻细胞有三个存活细胞时,该细胞下一时刻为存活状态(不论前一状态是存活还是死亡)(模拟繁殖)。
2、相邻细胞有两个存活细胞时,该细胞下一时刻状态不变(即存活细胞下一刻还是存活,死亡细胞下一刻还是死亡)。
3、相邻细胞有三个以上存活细胞,该细胞下一时刻死亡(模拟人口过密)
4、相邻细胞低于两个以下,该细胞下一时刻死亡(模拟人口稀疏)。
六、实验讨论
本周的实验,我和队友讨论了关于生命游戏的需求分析,共分为四大模块。
①初始化细胞分布图
初始化内容包括分布方式、分布矩阵大小等。分布方式分为随机分布与给定分布,由于时间关系,暂定是随机分布,但保证一定的细胞存活与死亡数量。矩阵目前也是先给定矩阵大小。后续时间若允许,可以完善分布方式与分布矩阵大小,给定一些特殊的细胞排列,使其能够演化出特殊的图案。
②演化方式选择
可以选择是单步演化还是不间断的演化方式,初步先做出单步演化,以方便随时交互操作。后续可将其完善。
③细胞分布下一时刻计算
在计算前,我们需要注意一点,矩阵的四条边与矩阵内部的计算有一定的区别,为方便前期结果,故而先将矩阵四条边固定为死亡细胞,以方便计算。计算时,依据生命游戏规则,活着为1,死亡为0。矩阵内部每一个元素,先计算其周围细胞的存活状态,活着则加一,死亡不计,若八个状态加完之后为3,则给该元素赋值1;若为2,则不变;其余情况则将元素赋值为0。
④输出矩阵
由于前期我们暂时选择了单步演化,故而应该将当前时刻的矩阵形态输出出来。
七、组队情况
| 课题 | 生命游戏 |
| 队伍名 | 奔波儿灞与灞波儿奔 |
| 组员 | 杜家云、杜蒙蒙 |
| blog地址 |
杜蒙蒙: 杜家云:https://www.cnblogs.com/cloudyyy/ |
| GitHub仓库地址 | https://github.com/cloudy-y/exp2 |
编程语言最终选定python

浙公网安备 33010602011771号