实验二 结对编程 第二阶段

一、实验目标:

1)体验敏捷开发中的两人合作。

2)进一步提高个人编程技巧与实践。

二 、实验内容:

1)根据以下问题描述,练习结对编程(pair programming)实践;

2)两个学生组合,每人使用一台计算机,二人共同编码,完成实验要求。

3)针对课题查阅相关资料,加深对课题的理解;

4)在结对编程工作期间,两人的角色至少切换 4 次;

5)实验过程中合作编程两人互相探讨后采用开发平台和技术,语言工具,准备实验开展工作;

6)做好试验记录和分析工作。

三.实验过程

(一)问题描述

生命游戏(在与合作者夏晓峰讨论之后,我们选择了生命游戏为主题开始实验)

根据老师在学习通上初步的介绍以及自己的小组在课后查阅资料所获得的信息,我对生命游戏做了一个基本的了解。

生命游戏事实上并不是通常意义上的”游戏”, 它没有游戏玩家各方之间的竞争, 也谈不上输赢,可以把它归类为“仿真游戏”。事实上,也是因为它模拟和显示的图象,看起来颇似生命的出生和繁衍过程而得名为“生命”。游戏在一个类似于围棋棋盘一样的,可以无限延伸的二维方格网中进行。例如,设想每个方格中都可放置一个生命细胞,生命细胞只有两种状态:“生”或“死”。图中,用黑色的方格表示该细胞为“生”, 空格表示该细胞为“死” 。游戏开始时, 每个细胞可以随机地(或给定地)被设定为“生”或“死”之一的某个状态, 然后,再根据某种规则(生存定律)计算下一代每个细胞的状态:

并且生命游戏可以定义一定的生命定律如下所述:

1.每个细胞的状态由该细胞及周围八个细胞上一次的状态所决定;
2. 如果一个细胞周围有3个细胞为生,则该细胞为生,即该细胞若原先为死,则转为生,若原先为生,则保持不变;
3. 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;
4. 在其它情况下,该细胞为死,即该细胞若原先为生,则转为死,若原先为死,则保持不变。
(二)敏捷开发(课后搜索资料和基于自己的理解)
概念:是一种新型软件开发方法,是一种能应对快速变化需求的软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队;在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。
(三)结对编程(基于百度中对此概念的认识)
首先,敏捷开发是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。其次,这种开发方法可以使我们从双方的角度思考写出更高效的代码。

1功能理解

程序结构图


主函数入口

2编码规范

1约定的变量名

IMAGE cellLive,cellDie
int cellNum[50][50]={0};
int cellLength=29;

约定的功能函数名

init()
checkLive(int Flag,int I,int J)
cellLife()
OnMouse()

更改前

更改后

3编程过程

采用qq共享屏幕进行交互

4代码托管

github地址截图并对最后一次代码进行提交,以及在确认无误后对分支的合并

5编程问题和解决方法

图形界面无法停留在桌面上

采用死循环的方式while(1)让图形界面停留

延时函数放置的地方应该是每一个还是每一轮延时

    修改前


经过讨论每一个延时所花费的时间过长,用户界面不友好,故改为每一轮去延时,经过修改后:

6体会

第一版结束之后,我只是盯着眼前的代码,到底有什么可改进的地方。而他想的是要添加功能(鼠标事件,变量的加入),想的是第二版、第三版。我们的思维方式不同,他影响着我,我无意中为他理清了自己的思路,能考虑更多的问题。
这就是我的第一次结对编程。
对我而言,我得到了编程的经验,包括项目的流程、方法的熟悉、函数的具体使用、以及遇到问题的解决方法和心态。

猜你喜欢

转载自www.cnblogs.com/cctv-cc/p/12587033.html