JAVA课程设计+五子棋(个人博客)

1.团队博客地址:

http://www.cnblogs.com/yzb123/p/7063424.html

2.个人负责模块或任务说明

  • 游戏初始化,清除棋盘上的棋子
  • 鼠标监听器
  • 棋子落棋
  • 判断胜负

3.自己的代码提交记录截图

4.自己负责模块或任务详细说明

鼠标监听器:
 this.CG= new CheseGame();
        addMouseListener(CG);
        add(CG);
鼠标点击:
 public void mouseClicked(MouseEvent me) { //throw new UnsupportedOperationException("Not supported yet.");}//鼠标点击
 public void mouseEntered(MouseEvent me) {  // throw new UnsupportedOperationException("Not supported yet.");}//鼠标刚进入组件的时候调用(只调用一次)
鼠标释放(获取鼠标x,y的坐标且确定黑白子):
public void mousePressed(MouseEvent me) {//鼠标释放
         // throw new UnsupportedOperationException("Not supported yet.");
          if(winner == 0)
          {
              x = me.getX();//获取鼠标的X坐标位置
              y = me.getY();//获取鼠标的y坐标位置
              chb1.setEnabled(false);
              chb2.setEnabled(false);
          }
          x = (int)(x/30)-1;
          y = (int)((y-15)/30)-1;
          if(x>=0&&x<=19&&y>=0&&y<=19)
          {
              if(flag == 1&&map[x][y] == 0)
              {
                  map[x][y] = 1;
                  if(win(x,y))
                      winner = 1;
                  flag = 2;
              }
              else
                  if(flag == 2&&map[x][y] == 0)
              {
                  map[x][y] = 2;
                   if(win(x,y))
                       winner = 2;
                  flag = 1;
              }//在当前位子构造棋子
          }
          repaint();
      }
 public void mouseReleased(MouseEvent me) {//当鼠标释放的时候,调用该函数
         // throw new UnsupportedOperationException("Not supported yet.");
      }
public void mouseExited(MouseEvent me) {//当鼠标离开的时候,调用该函数
         // throw new UnsupportedOperationException("Not supported yet.");
      }
判断胜负:
Boolean win(int x,int y)
    {
        int score = 1;
             for(int i = x;i < x+4;)//横向x++
             {
                 if(i == 19)
                     break;
                 if(map[i][y] != map[++i][y])
                    break;
                 score++;
             }
             for(int i = x;i > x-4;)//横向x--
             {
                 if(i == 0)
                     break;
                 if(map[i][y] != map[--i][y])
                    break;
                 score++;
             } 
            if(score >= 5)
                 return true;
            else
                 score = 1;
            for(int j = y; j < y+4;)//纵向y++
            {
                if(j == 19)
                    break;
                if(map[x][j] != map[x][++j])
                    break;
                score++;
            }
            for(int j = y; j > y-4;)//纵向y--
            {
                if(j == 0)
                    break;
                if(map[x][j] != map[x][--j])
                    break;
                score++;
            } 
            if(score >= 5)
                 return true;
            else
                 score = 1;
            for(int i = x;i < x+4;)//斜向x++、y++
                for(int j = y;j < y+4;)
                {
                    if(i == 19 || y == 19)
                    {i = x+4; break;}
                    if(map[i][j] != map[++i][++j])
                    {
                        i = x+4;
                        break;
                    }
                    score++;
                }
                for(int i = x;i > x-4;)//斜向x--、y--
                  for(int j = y;j > y-4;)
                  {
                      if(i == 0||j==0)
                      {i = x-4; break;}
                      if(map[i][j] != map[--i][--j])
                      {
                          i = x-4;
                          break;
                      }
                      score++;
                  } 
                if(score >= 5)
                   return true;
               else
                   score = 1;
              for(int i = x;i > x-4;)//斜向x--、y++
                  for(int j = y;j < y+4;)
                  {
                      if(i==0 || j==19)
                      { i = x-4;break;}
                      if(map[i][j] != map[--i][++j])
                      {
                          i = x-4;
                          break;
                      }
                      score++;
                  }  
              for(int i = x;i < x+4;)//斜向x++、y--
                  for(int j = y;j > y-4;)
                  {
                      if(i==19||j==0)
                      { i = x+4;break;}
                      if(map[i][j] != map[++i][--j])
                      {
                          i = x + 4;
                          break;
                      }
                      score++; 
                  } 
              if(score >= 5)
                   return true;
              else
                   return false;
      }

5.课程设计感想

在编程时无法实现悔棋与网络连接功能的实现。在设计悔棋时想用另一个数组储存棋子的位置,然后再写一个back函数进行返回,尝试过多次还是没有实现。感觉水平不够还是选低等级的题目来写,高等级的难度太大了。

posted @ 2017-06-22 10:32  杨泽斌  阅读(2532)  评论(0编辑  收藏  举报