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函數進行返回,嘗試過多次還是沒有實現。感覺水平不夠還是選低等級的題目來寫,高等級的難度太大了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM