zoukankan      html  css  js  c++  java
  • 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函数进行返回,尝试过多次还是没有实现。感觉水平不够还是选低等级的题目来写,高等级的难度太大了。
    
    
  • 相关阅读:
    Struts2文件上传
    Struts2文件下载
    使用ajax()方法和后台交互
    简单的写数据到txt文件
    JPA初体验(使用Hibernate4实现)
    动态删除ArrayList中的元素
    MySQL5.5.15 源码 cmake 安装
    HeartBeat启动关闭mysqld服务的脚本修改
    MySQL MyISAM 转 Innodb
    2038/01/19 11:14:07 MySQL
  • 原文地址:https://www.cnblogs.com/yzb123/p/7063614.html
Copyright © 2011-2022 走看看