一、实验目标
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程
一、代码规范
1.1注释
由#开头的“真正的”注释,说明选择当前实现的原因以及这种实现的原理和难点。注释仅仅是语句的重复解释,没有任何价值。好的注释解释为什么,而不是怎么样。当修改代码时,维护代码周围的所有注释。
1.2命名
好的名字一目了然,不需要读者去猜,甚至不需要注释,不要编写需要外部文档支持的代码,这样的代码时脆弱的,要确保你的代码本身读起来就很清晰
1.3语句
不要使用制表符tab进行缩进,千万不要混用tab与空格,应使用4个空格进行缩进,每行只写一条语句,变量名应为下划线风格。
2、程序的总体设计(附图说明模块之间的关系)
(1)流程图
3、程序结对编程过程(附图)及功能实现情况(附代码和图)
1)先在本地建立仓库
2)然后将本地仓库与主仓库连接起来
3)角色转换
4)交流过程
我和周韧欢经过QQ远程操控,视频通话,以及微信语音通话等方式进行了问题的交流,任务分配,角色互换,以及代码的编写等操作。
5)功能实现情况
#include "stdio.h" #include "string.h" #include "windows.h" #define N 49//1表示棋子,只有黑色棋子 int aa[N+2][N+2];//定义棋盘大小 int bb[N+2][N+2];//辅助棋盘 void Initialize();//初始化一个对局函数 void RunGame();//进行游戏 int Count(int i,int j);//计算生命周围的生命数量 void Data();//调用已存的游戏数据 main() { system("mode con cols=99 lines=50");//设置窗口大小 system("color 70");//设置颜色 Initialize();//初始化一个对局函数 RunGame();//进行游戏 } void Initialize()//初始化一个对局函数 { Data();//调用已存的游戏数据 } void RunGame()//进行游戏 { int i,j,s=0; int flag=0; while(1) {Sleep(1000); system("cls");//清理屏幕,准备写入 for(i=1;i<N+1;i++) { for(j=1;j<N+1;j++) if(aa[i][j]==1) printf("■"); else if(aa[i][j]==0) printf(" "); printf(" "); } for(i=1;i<N+1;i++) for(j=1;j<N+1;j++) { s=Count(i,j); if(aa[i][j]==1) { if(s<2) bb[i][j]=0;//如果一个生命周围的生命少于2个,它在回合结束后死亡。 else if(s>3) bb[i][j]=0;//如果一个生命周围的生命超过3个,它在回合结束后死亡。 else if(s==2||s==3) bb[i][j]=1;//如果一个生命周围有2或3个生命,它在回合结束时保持原样。 } else if(aa[i][j]==0) { if(s==3) bb[i][j]=1;//如果一个死格周围有3个生命,它在回合结束时获得生命。 } } for(i=1;i<N+1;i++) for(j=1;j<N+1;j++) aa[i][j]=bb[i][j]; if(flag==0) { getchar(); flag=1; } } } int Count(int i,int j)//计算生命周围的生命数量 { int s=0,a,b; for(a=-1;a<=1;a++) for(b=-1;b<=1;b++) if(!(a==0&&b==0)&&aa[i+a][j+b]==1) s++; return s; } void Data()//调用已存的游戏数据 { int p=12; int l; for(l=-16;l<=16;l++) //if(l!=-8&&l!=0&&l!=4) aa[N/2+1][N/2+1+l]=1; }
/*
//滑翔机
chess[1][3]=1;chess[2][1]=1;chess[2][3]=1;chess[3][2]=1;chess[3][3]=1;
*/
/*
//高斯帕滑翔机
chess[1][p+11]=1;chess[1][p+13]=1;
chess[2][p+10]=1;chess[2][p+13]=1;
chess[3][p+9]=1;chess[3][p+10]=1;chess[3][p+21]=1;chess[3][p+28]=1;
chess[4][p+1]=1;chess[4][p+2]=1;chess[4][p+7]=1;chess[4][p+8]=1;chess[4][p+12]=1;chess[4][p+21]=1;chess[4][p+27]=1;chess[4][p+29]=1;
chess[5][p+1]=1;chess[5][p+2]=1;chess[5][p+9]=1;chess[5][p+10]=1;chess[5][p+20]=1;chess[5][p+27]=1;chess[5][p+28]=1;chess[5][p+30]=1;
chess[6][p+10]=1;chess[6][p+13]=1;chess[6][p+16]=1;chess[6][p+17]=1;chess[6][p+27]=1;chess[6][p+28]=1;chess[6][p+30]=1;chess[6][p+31]=1;chess[6][p+35]=1;chess[6][p+36]=1;
chess[7][p+11]=1;chess[7][p+13]=1;chess[7][p+16]=1;chess[7][p+19]=1;chess[7][p+20]=1;chess[7][p+21]=1;chess[7][p+22]=1;chess[7][p+27]=1;chess[7][p+28]=1;chess[7][p+30]=1;chess[7][p+35]=1;chess[7][p+36]=1;
chess[8][p+16]=1;chess[8][p+17]=1;chess[8][p+18]=1;chess[8][p+19]=1;chess[8][p+27]=1;chess[8][p+29]=1;
chess[9][p+17]=1;chess[9][p+18]=1;chess[9][p+28]=1;
*/
}
4、项目github地址(附图)
游戏地址:https://github.com/lizhenzhen0114/game
5、实验总结
经过这次试验我学到了很多,有时候一个人在研究问题的时候往往会有自己的固定思路,但是搭档的存在刚刚好为我们提供了另一种不同的思路,比如说在欢姐初次提交的实验报告上,游戏运行截图出现了很明显的错误,经过老师指出后,我们以为是代码的错误,后来发现其实只是进行动图合成的时候,漏了一张图。这次的实验经历对我们来讲也是很新奇的,我们通过git和github,使得在不同地点不同时间的两个人可以在相同的工作空间内进行同一个工作并进行交流与交互,大大提高了工作的效率与趣味。同时,通过这次实验,我也对git的push,pull等等命令的理解更加深刻,所以希望以后能够与我的同伴进行合作。