一、题目简介

1、计算机能对棋局进行分析、判断。根据棋局状态来确定机器方的下棋行为。
2、计算机能根据棋局状态实时的判断对弈双方的胜负。
3、控制双方交替下棋。
4、友好的界面呈现。 
 
二、结对分工及过程
 结对 刘永政(学号后四位:1139) 张斌(学号后四位:1136)

 组员各自的优缺点:

      1.刘永政: 代码的编写和代码规范。

     2.张斌:程序的分析和程序的测试及测试代码的编写

三、结对编程优缺点:

    优点:

    1.结对编程时间紧密,在一定程度上可以督促双方学习,提高效率

   2.Coder在coding过程中会遇到一些细小的问题,而reviewer可以及时指出错误,并给予解决方案进行讨论。

   3.遇到问题时,两个人一起讨论,并补充对方没有想到的地方,是完善程序最好的方式。

   缺点:

   在编程过程中,很长时间是coder在coding的过程中想思路,大概这也是每个程序员的特点,而这个时候reviewer就会长时间遇到空档期。

四、代码地址

https://github.com/heartgo/test

源代码:

javax.swing.*;
   
  java.awt.*;
  java.awt.event.*;
  java.net.URL;
 
  JFrame {
  //棋盘背景位图
  //黑子位图
  //白子位图
  //棋盘
  JPanel east;
  JPanel west;
  450;
  500;
  //以下为下拉菜单
  JMenuBar menubar;
 
 
 
 
  //人与人下还是人与电脑下,true与电脑下
  Mouseclicked();
  MouseMoved();
  Menuitemclicked();
   
  //构造函数
  ChessMap(){
  //改变系统默认字体
  12);
  .keys();
  .hasMoreElements()) {
  .nextElement();
  .get(key);
  .FontUIResource) {
  .put(key, font);
  }
  }
 
  FINAL_HEIGHT);
  false);
  init();
  2
  .getDefaultToolkit()
  .height
  2);
  .EXIT_ON_CLOSE);
  .reset();
  true);
  }
   
  //初始化与默认值
  init()
  {
   
 
 
 
  ChessPanel(map,blackchess,whitechess);
  JMenuBar();
 
 
 
 
 
 
 
 
  ++)
  .add(menuitem1[i]);
  ++)
  .add(menuitem2[i]);
  ++)
  .add(menuitem3[i]);
  ++)
  .add(menu[i]);
  = getContentPane();
  setJMenuBar(menubar);
  JPanel();
  JPanel();
 
 
 
  .addMouseListener(mouseclicked);
  .addMouseMotionListener(mousemoved);
  .addActionListener(menuclicked);
  .addActionListener(menuclicked);
  .addActionListener(menuclicked);
  .addActionListener(menuclicked);
  .addActionListener(menuclicked);
  .addActionListener(menuclicked);
  .addActionListener(menuclicked);
  .addActionListener(menuclicked);
   
  }
  //判断鼠标左击并通知棋盘和电脑
  {
  e)
  {
  false){
  //和电脑博弈
  Point();
  .getY());
  .x;
  .y;
  // 如果该位置已经放置棋子
  +y);
  2)
  return;
  // 玩家为黑棋,考虑禁手
  0) {
  .bw);
  null;
  switch(type){
  :
 
  break;
  :
 
  break;
  :
 
  break;
  break;
  }
  null) {
  null,str);
  return;
  }
  }
  .bw);
  .update( x, y );
  //落子声音
  // 第一步棋,需初始化设置边界值
  1){
  0)
  1;
  15)
  1;
  0)
  1;
  15)
  1;
  }
  else
  .resetMaxMin(x,y);
  if (flag) {
  .bw);
  return;
  }
  .bw);
  //和人博弈
  Point();
  .getY());
  .x;
  .y;
  // 如果该位置已经放置棋子
  +y);
  2)
  return;
  // 玩家为黑棋,考虑禁手
  0) {
  .bw);
  null;
  switch(type){
  :
 
  break;
  :
 
  break;
  :
 
  break;
  break;
  }
  null) {
  null,str);
  return;
  }
  }
  .bw);
  .update( x, y );
  //落子声音
  .repaint();
  // 第一步棋,需初始化设置边界值
  1){
  0)
  1;
  15)
  1;
  0)
  1;
  15)
  1;
  }
  else
  .resetMaxMin(x,y);
  if (flag) {
  .bw);
  return;
  }
  }
  }
  }
  }
  //调试用,获得鼠标位置
  {
  e)
  {
  .getPoint());
  }
  e)
  {}
  }
  //菜单消息处理
  {
  e)
  {
  .getSource();
  .getActionCommand();
  //重开一局
  .reset();
  .WHITE_ONE)
  7);
  //player=cp.BLACK_ONE;
  }
  //悔棋
  .win) {
 
  return;
  }
  // 当前轮到玩家下棋,取消两步 否则,取消一步
  .sbw){
  2;
  2;
  2;
  .repaint();
  }
  .sbw){
  2;
  --;
  .repaint();
  }
  }
  //退出
  1);
  }
  //禁手选择
 
  .showOptionDialog(
 
  .DEFAULT_OPTION,
  null,
  0]);
  1){
  true;
 
  else{
  false;
 
  }
  }
  //人机博弈
  true;
 
  .showOptionDialog(
 
  .DEFAULT_OPTION,
  null,
  0]);
  //机器先手
  .WHITE_ONE;
  7);
 
   
  //人先手
  //player=cp.BLACK_ONE;
  .BLACK_ONE;
 
  }
  }
  //人人博弈
  false;
  true);
  //规则
  null,
  +
  +
  +
  +
  +
  +
  +
  +
  +
  .INFORMATION_MESSAGE);
  }
  //版权与帮助
  +
  +
  .INFORMATION_MESSAGE);
  }
  }
   
  }
  args) {
  ChessMap();
  }
  }

运行截图

实验三结对项目

五、测试情况

实验三结对项目

六、心得

通过这次结对作业,我知道了两个人一起编程是需要配合的,如果配合不好会比较痛苦,但也有很多优点,这种方式减少了个人工作量,也会让程序编写的更好

相关文章:

  • 2021-11-22
  • 2022-02-14
  • 2022-02-06
  • 2021-06-01
  • 2022-02-16
猜你喜欢
  • 2021-09-09
  • 2021-11-04
  • 2021-10-09
  • 2021-12-21
  • 2021-07-29
相关资源
相似解决方案