以前只是一个人完成一个项目,不论什么都是,现在突然要两个人一起来写, 听上去挺稀奇的,也挺简单的,可惜了就是“听上去”而已。我认为这也是一种技术啊~

我跟我的搭档研究了好久好久,选择了好久,然后也选了各种语言,最后决定了用Java。本来我打算做一个数独的小项目,可惜搭档说还是做五子棋的(主要我觉得做五子棋的人太多了),所以最后还是做了五子棋的,这是源码的github链接。

我们用Java编写了一个五子棋游戏,实现了实现了人人对战,人机对战。其中人机对战使用了很简单的AI,使棋子随机出现在棋盘的各个位置。在整个过程中,我有我的活儿,我的搭档(cnblongs)也有他的任务。

一、分工情况:

崔琪:GUI设计以及代码规范

孙明东:负责棋子胜负判断部分

二、过程分析:

这次我主要负责的是GUI设计以及代码规范,我来大概说说GUI吧。

GUI编程规范总结:

1、一般情况下对话框第一栏都是菜单栏,因此首先就是建立菜单栏。在GUI控件使用时所有的控件都是层层嵌套的,就是控件依托,最终整合到面板上,进而再添加事件监听器,已响应事件的发生;

建立菜单:

public MenuBar getMB(){//创建菜单栏
MenuBar mb = new MenuBar(); Menu file = new Menu("文件");//文件菜单
MenuItem open = new MenuItem("打开");//打开菜单项
file.add(open);
MenuItem save = new MenuItem("保存");//保存菜单项
file.add(save);
file.addSeparator();
MenuItem exit = new MenuItem("退出");//退出菜单项
file.add(exit); Menu game = new Menu("游戏"); MenuItem begin = new MenuItem("开始游戏");//开始游戏菜单项
game.add(begin);
game.addSeparator();
MenuItem mantoman = new MenuItem("人人对战");
game.add(mantoman);
MenuItem mantocpu = new MenuItem("人机对战");
game.add(mantocpu); Menu have = new Menu("执子颜色");
MenuItem haveblcak = new MenuItem("黑色");
have.add(haveblcak);
MenuItem havewhite = new MenuItem("白色");
have.add(havewhite); game.addSeparator();
game.add(have); Menu help = new Menu("帮助");//帮助菜单
MenuItem about = new MenuItem("关于");//打开菜单项
help.add(about); mb.add(file);
mb.add(game);
mb.add(help); MenuAction al = new MenuAction();
open.addActionListener(al);
save.addActionListener(al);
about.addActionListener(al);
exit.addActionListener(al);
begin.addActionListener(al);
mantoman.addActionListener(al);
mantocpu.addActionListener(al);
haveblcak.addActionListener(al);
havewhite.addActionListener(al);
return mb;
}

在这里举一例。

GUI框架的设计步骤:

①首先要建立主框架:JFrame f=new JFrame();

②取得框架的内容窗格 Container contentPane=f.getContentPane();

③在制作复杂的用户界面时,常常需要使用多个JPanel将复杂的界面分解为先对建大的子界面,然后再对每个JPanel进行布局:

Menu file = new Menu("文件");//文件菜单
  MenuItem open = new MenuItem("打开");//打开菜单项
  file.add(open);
  MenuItem save = new MenuItem("保存");//保存菜单项
  file.add(save);
  file.addSeparator();
  MenuItem exit = new MenuItem("退出");//退出菜单项
  file.add(exit);

④将面板添加到框架的内容窗格中,如:

Menu have = new Menu("执子颜色");
MenuItem haveblcak = new MenuItem("黑色");
have.add(haveblcak);
MenuItem havewhite = new MenuItem("白色");
have.add(havewhite); game.addSeparator();
game.add(have);

⑤处理控件的依赖关系,及消息的定义,各种细节的设计

⑥控件的逐级加入

JSSFMenu.add(DBJFItem);//将下拉子菜单加入到主菜单中去

menuBar.add(DBJFItem);//将主菜单加入到主菜单工具条中

⑦将面板加入到框架的内容窗格中

contentPanel.add(P);

三、设计结果:

运行界面

接下来是运行的结果

以上是项目的过程

四、收获

在这次的结对项目中,我体会到了两人在一起工作时的状态,好处总要比弊处多。首先两个人在一起做一个项目会节省很多的时间,分工合作要比一个人瞎忙来得好;还有,一个人的思维往往是受局限的,有了伙伴之后总会让你在思维上有所启发。相互的交流学习是非常重要的,往往有所经验才有所收获。很高兴和搭档的这次合作!

Pair Project的更多相关文章

  1. 软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] [附加题]

    软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] [附加题] 首先,在分组之前,我和室友薛亚杰已经详细阅读了往届学长的博客,认为电梯调度 ...

  2. 软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]

    软件工程  ---   Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] 说明结对编程的优点和缺点. 结对编程的优点如下: 在独立设计.实现代码的过程中不 ...

  3. Pair project(刘昊岩11061156 黄明源11061186)

    Pair project members:刘昊岩11061156,黄明源11061186 两周时间,工程下午刚刚结束,现做一些总结. 在现有工程基础上修改schedule 包下方法,主要思想是,也就是 ...

  4. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]:谢勤政-11061197,吴润凡-11061185

    一,关于结对编程 结对编程的优点: 1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力. 2)对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高 ...

  5. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]:刘耀先-11061183,罗凡-11061174

    本次为我们两个人的第一次结对编程.从总体而言,我们对结对编程比单人编程略显不适应.但是经过一段时间的磨合,我们逐渐的习惯了这种编程方式. 1.  结对编程的优缺点 结对编程的优点: (1)       ...

  6. 结对项目 Pair Project

    结对项目 Pair Project 一人编程,一人操作,共同检查. 源码 https://github.com/dpch16303/test/blob/master/%E5%AE%9E%E8%B7%B ...

  7. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]

    作业提交时间:10月9日上课前. Design and implement an Elevator Scheduler to aim for both correctness and performa ...

  8. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] --11061188刘强

    结对编程总结 队员:刘强(11061188) 林谋武(11061169) 结对编程: 结对编程的优点: 1.  两个人合作,相比于一个人自己奋斗而言,更能激发自己的潜能:我们在合作过程中,互相学习,互 ...

  9. Pair Project:电梯控制程序

    12061160刘垚鹏 & 12061166宋天舒 1.1结对编程的优缺点结对编程相对于个人编程有很多优点.首先,督促作用,在讨论过程中能够很快投入工作,为了不耽误对方时间,我们会尽快完成各自 ...

  10. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]:思考题——谢勤政11061197

    第一题: 大楼里面的电梯一般分区域,或考虑思考题第四题的情况,运行楼层不一样的电梯属于不同的区域.然后在接口IRequest和IPassenger还有IElevator里面都加上int area这个属 ...

随机推荐

  1. mybatis根据数据库表结构自动生成实体类,dao,mapper

    首先, pom需要引入 <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifac ...

  2. Node爬虫之初体验

    记得之前就听说过爬虫,个人初步理解就是从网页中抓取一些有用的数据,存储到本地,今天就当是小牛试刀,拿来溜溜...... 实现需求: 抓取课程数据,输入url后并在浏览器端以一定的数据格式显示出来(如下 ...

  3. 03.Python网络爬虫第一弹《Python网络爬虫相关基础概念》

    爬虫介绍 引入 之前在授课过程中,好多同学都问过我这样的一个问题:为什么要学习爬虫,学习爬虫能够为我们以后的发展带来那些好处?其实学习爬虫的原因和为我们以后发展带来的好处都是显而易见的,无论是从实际的 ...

  4. linux下的文件目录结构

    linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录 - root,存放root用户的相关文件 - home,存放普通用户的相关文件 - b ...

  5. UVA437-The Tower of Babylon(动态规划基础)

    Problem UVA437-The Tower of Babylon Accept: 3648  Submit: 12532Time Limit: 3000 mSec Problem Descrip ...

  6. [python] 解决pip install download速度过慢问题 更换豆瓣源

    """ python建立pip.ini.py 2016年4月30日 03:35:11 codegay """ import os ini=& ...

  7. Oracle调整顾问(SQL Tuning Advisor 与 SQL Access Advisor

    在Oracle数据库出现性能问题时,使用Oracle本身的工具包,给出合理的调优建议是比较省力的做法. tuning advisor 是对输入的sql set的执行计划进行优化accsee advis ...

  8. 【转】VMware 14 Pro安装mac os 10.12

    一.准备工作 [1]资源下载 VMware Workstation Pro 14 已安装或自行安装 Unlocker (链接: https://pan.baidu.com/s/1dG5jkuH 密码: ...

  9. Linux系统学习之Linux账号管理

    一.基本介绍 Linux用户分为三类,即普通用户.根用户.系统用户. 普通用户指的是所有使用Linux系统的真实用户. 根用户就是root用户,权限最大,它的ID为0,也被称为超级用户,root用户拥 ...

  10. 20175310 MyCP(课下作业,必做)

    一.作业要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内 ...