ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

实验二 结对编程第二阶段

2020-03-28 15:02:22  阅读:289  来源: 互联网

标签:结对 int cells 编程 细胞 ++ CellArray 第二阶段


一、实验目标
  1)体验敏捷开发中的两人合作。

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

 

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

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

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

    4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。

 

三、实验要求

1、代码规范


2、程序的总体设计(附图说明模块之间的关系)

(1)为了体现软件工程的分层思想,把结构分为data层、service层和应用层

  • data层存放细胞数组类
  • service层存放算法逻辑
  • lifeGame应用层主要是界面的实现和启动

 

(2)算法函数模块图

 

3、程序结对编程过程(附图)及功能实现情况(附代码和图)

(1)结对编程过程

实际操作我们使用的是QQ远程结对,为了方便统计我们使用issue来记录具体进度

 

 

(2)功能实现情况

  • 矩阵初始化

 

 1 public static CellArray initMap(int row,int col ) {
 2         CellArray cells=new CellArray(row,col);
 3         for(int  i=0;i<row;i++) {
 4             for(int j=0;j<col;j++) {
 5                 Random r=new Random();
 6                 int a=r.nextInt(4); //在0-3之间随机选一个数
 7                 if(a==1) {
 8                     cells.setCell(i,j,CellState.LIVE.getValue());
 9                 }
10                 else {
11                     cells.setCell(i,j,CellState.DEAD.getValue());
12                     
13                 }
14             }
15         }
16         return cells;
17     }

 

  • 下一代细胞
 1 //判断细胞下一代的生死
 2     public static CellArray generate(CellArray cells) {
 3         CellArray nextCells=new CellArray(cells.getRow(),cells.getCol());
 4       for(int i=0;i<nextCells.getRow();i++) 
 5           for(int j=0;j<nextCells.getCol();j++) {
 6               
 7               int count=countNumber(cells,i,j);
 8              if(count==3) {
 9                  nextCells.setCell(i, j, CellState.LIVE.getValue());   //活邻居为三 活
10              }
11              else if(count==2&&cells.getCell(i, j)==CellState.LIVE.getValue()) {  //活邻居为二且自己本来就活着 活
12                  nextCells.setCell(i, j, CellState.LIVE.getValue());
13              }
14              else {
15                  nextCells.setCell(i, j, CellState.DEAD.getValue());  //其他情况 死
16              }
17           }
18         
19         return  nextCells;
20         
21     }

 

  • 细胞生命周期
 1         //细胞生命周期
 2         Timer timer = new Timer();
 3         timer.schedule(new TimerTask() {
 4             @Override
 5             public void run() {
 6                 cells = GameService.generate(cells);
 7                 ++generation;
 8                 label2.setText("繁衍代数:" + generation);
 9                 for (int i = 0; i < row; i++) {
10                     for (int j = 0; j < col; j++) {
11                         if (cells.getCell(i, j) == CellState.LIVE.getValue()) {
12                             btns[i][j].setBackground(Color.black);
13 
14                         } else {
15                             btns[i][j].setBackground(Color.white);
16                         }
17                     }
18                 }
19             }
20         }, 0, 500);
21         setVisible(true);
22     }

 

  • 统计活邻居数
 1     //统计边界中细胞活邻居的个数
 2     public static int countNumber(CellArray cells,int x,int y) {
 3         int count = 0;
 4          for (int i = 0; i < 3; ++i) {
 5                 for (int j = 0; j < 3; ++j) {
 6                     if (CellState.LIVE.getValue() == cells.getCell(x + temp[i], y + temp[j])) {//判断矩阵中活的细胞数目和给出的细胞及周边细胞的数目是否相同
 7                         ++count;
 8                     }
 9                 }
10             }    
11          if (CellState.LIVE.getValue() == cells.getCell(x, y)) {//如果矩阵中活的细胞数和给出的位置细胞数相同
12                 --count;
13             }
14         
15         return count;
16     }

 

  • 效果展示

 

 

4、项目github地址(附图)

地址:https://github.com/super-sweet8/-

补充一点:第四次交换时,队友检查代码无误不再推送信息,所以README上没有记录,但是issues上是可以体现的

 

5、实验总结

    本来效果展示那一块想上传视频的,查了很多资料,网上的教程都是上传类似优酷B站之类的视频,链接视频平台会生成,本地的视频没有找到解决办法。尝试过使用百度网盘创造链接,发现展示页面是密码输入,笔者不想借助B站转这个链接,因为B站UP主的视频都是提供大家学习,我这个对别人没有任何帮助,纯属为了个人,觉得放上去挺不好意思的,于是我放弃了。或许有别的办法,知道的朋友欢迎留言。

    本次实验到此结束,过程中遇到的问题真的是层出不穷,没有别的办法就是得有耐心然后不停的重复重复重复,百度是一个很好的学习工具,不懂多多查阅总有收获。组队编程是一个很大的挑战,交流是最最重要的,包容理解也占了很多,实验完成的那一刻双方即使隔着屏幕也能从那字里行间察觉对方的激动心情。

   关于实验中关于github的操作在此省略,已在前几篇文中做过详细描述。

标签:结对,int,cells,编程,细胞,++,CellArray,第二阶段
来源: https://www.cnblogs.com/blog-address/p/12433806.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有