实验目标
1. 体验敏捷开发中的两人合作。
2. 进一步提高个人编程技巧与实践。
实验内容
1. 根据以下问题描述,练习结对编程(pair programming)实践;
2. 要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求;
3. 要求在结对编程工作期间,两人的角色至少切换 4 次;
4. 编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
实验记录
阶段一:
一、查阅相关资料对敏捷开发和结对编程的理解
二、组队情况
1. 队名:
做的都队
2. 队伍信息:
队员1 饶童心
博客地址:https://www.cnblogs.com/999xxx/
队员2 潘武振
博客地址:https://www.cnblogs.com/zuiaixinxin/
3. 仓库地址:https://github.com/pp9527/LifeGame/blob/master/LifeGame.py
三、选题
生命游戏
生命游戏是英国数学家约翰.何顿.康威在1970年发明的细胞自动机,它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死亡的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单而死去。
游戏在一个类似于围棋棋盘一样的,可以无限延伸的二维方格网中进行。例如,设想每个方格中都可放置一个生命细胞,生命细胞只有两种状态:"生"或"死"。图中,用黑色的方格表示该细胞为"死", 其它颜色表示该细胞为"生" 。
游戏开始时, 每个细胞可以随机地(或给定地)被设定为"生"或"死"之一的某个状态, 然后,再根据如下生存定律计算下一代每个细胞的状态:
四、针对课题查阅的资料,对课题的理解
我们可以把计算机中的宇宙想象成是一堆方格子构成的封闭空间,尺寸为N的空间就有N*N个格子。而每一个格子都可以看成是一个生命体,每个生命都有生和死两种状态,如果该格子生就显示蓝色,死则显示白色。每一个格子旁边都有邻居格子存在,如果我们把3*3的9个格子构成的正方形看成一个基本单位的话,那么这个正方形中心的格子的邻居就是它旁边的8个格子。每个格子的生死遵循下面的原则:
(1)如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) :
(2) 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;
(3) 在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)设定图像中每个像素的初始状态后依据上述的游戏规则演绎生命的变化,由于初始状态和迭代次数不同,将会得到令人叹服的优美图案。这样就把这些若干个格子(生命体)构成了一个复杂的动态世界。运用简单的3条作用规则构成的群体会涌现出很多意想不到的复杂性为,这就是复杂性科学的研究焦点。生命游戏有一个通用的形式化的模型,每个格子(或细胞)的状态可以在一个有限的状态集合S中取值,格子的邻居范围是一个半径r,也就是以这个格子为中心,在距离它r远的所有格子构成了这个格子的邻居集合,还要有一套演化规则,可以看成是一个与该格子当前状态以及邻居状态相关的一个函数,可以写成f:S*S^((2r)^N-1)->S。
五、开发前工作
1. 结对编程平台:
经过讨论本组决定使用python语言编写生命游戏,以pycharm作为开发平台,在github上进行代码的托管。在开发过程中使用QQ远程桌面进行屏幕共享,使用QQ语音进行讨论问题、协作编程。在结对编程过程中一个人写一个人看着,中间交换角色,实现两个人控制一台电脑。
2. 实现模块:
(1)初始列表:使用随机数函数,确定细胞个数与位置;
(2)运用函数,根据细胞法则衍生出下一个地图;
(3)输出:运用pygame库对界面进行美化,模拟细胞动态演变过程;
(4)地图大小自行输入,加入一个合法性判断的函数。
3. 代码规范:
(http://www.360doc.com/content/17/1027/23/277688_698706939.shtml)
通过查阅资料,我们从上图的三个大方面进行了讨论与总结,把最值得注意与最常见的不规范的方面着重进行了检查。我们在使用pycharm时自带静态检查工具,不规范时会有提示,更加能减少整个编程过程中代码不规范的可能性。
至此第一阶段的结对编程准备工作已经完成。
原文:https://www.cnblogs.com/999xxx/p/12539057.html