实验二 结对编程(阶段二)

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

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

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

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

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

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

三.实验过程

  • 使用二维数组存储一个20*20的表格
  • 数组中用1代表活着状态,0代表死亡状态
  • 每个细胞在页面中用 span 表示,以颜色区别不同状态
  • 当需要绘制下一个图形时,深度拷贝当前数组,计算每一个细胞周围存活数量,再计算下一代当前细胞的状态。
  • 给 span 的父元素绑定 click 事件,用到拖动改变细胞的状态, 对span自定义属性 data-cellx 和 data-celly 存放当前坐标。

四.程序实现

package com.cisco.gendwang;


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;


public class LifeGame extends JFrame
{
private final World world;

public LifeGame(int rows, int columns)
{
world = new World(rows, columns);
new Thread(world).start();
add(world);
}

public static void main(String[] args)
{
LifeGame frame = new LifeGame(40, 50);

JMenuBar menu = new JMenuBar();
frame.setJMenuBar(menu);

JMenu options = new JMenu("Options");
menu.add(options);

JMenuItem arrow = options.add("Arrow");
arrow.addActionListener(frame.new ArrowActionListener());

JMenuItem square = options.add("Square");
square.addActionListener(frame.new SquareActionListener());

JMenu help = new JMenu("Help");
menu.add(help);

frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1007, 859);
frame.setTitle("Game of Life");
frame.setVisible(true);
frame.setResizable(false);
}

class ArrowActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
world.setArrow();
}
}

class SquareActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
world.setSquare();
}
}
}

五.运行结果

 

 

六.github地址

https://github.com/cheng-xiang-star/cheng.git

 

实验小结

从前写代码都是一个人的事,数据结构和算法包括给函数命名都比较随意,为了方便自己的理解,遵循自己的规则就好。但结对编程需要两个人的智慧,一边沟通一边编写。在约定用什么样的数据结构,什么样的算法,什么样的接口,甚至函数命名都需要两人共同交流完成,虽然过程繁琐,但程序的准确性提高了。一些容易犯的编写错误,经过两个人的检查,也更容易被发现和指出。虽然看似效率不如以前一个人编写时高,但是实际上代码结构更加清晰,出现bug的几率也更小了。总的来说,除了比较累,这样的编程方式还是很优秀的。

posted @ 2020-04-06 09:28  Luhuhuhu  阅读(130)  评论(0编辑  收藏  举报