天天看点

五子棋游戏-3(判断五子连心)

最后是判断五子连心,将以下思路:从落子点开始检测4个方向

1.左右方向相同颜色的子是否达到5个

2.上下方向相同颜色的子是否达到5个

3.左斜方向相同颜色的子是否达到5个

4.右斜方向相同颜色的子是否达到5个

Code:

  1. /// <summary>   
  2. /// 判断是否五子连心   
  3. /// </summary>   
  4. /// <param name="p"></param>   
  5. /// <returns></returns>   
  6. private bool IsWin(Piece p) {   
  7.     int x = p.X;   
  8.     int y = p.Y;   
  9.     bool win = IsFive(x, y, 0, 1, p.Color); //纵向   
  10.     win |= IsFive(x, y, 1, 1, p.Color);     //右下斜   
  11.     win |= IsFive(x, y, 1, 0, p.Color);     //横向   
  12.     win |= IsFive(x, y, 1, -1, p.Color);    //左上斜   
  13.     return win;   
  14. }   
  15. private bool IsFive(int x, int y, int offsetX, int offsetY, Color c) {   
  16.     int count = 1;   
  17.     int searchX = x + offsetX;   
  18.     int searchY = y + offsetY;   
  19.     bool stop = false;   
  20.     while(searchX >= 0 && searchX < ChessBoard.Lines &&   
  21.         searchY >= 0 && searchY < ChessBoard.Lines &&   
  22.         !stop) {   
  23.         int intColor = c == Color.White ? 1 : 2;   
  24.         if(pieces[searchX, searchY] == intColor) {   
  25.             count++;   
  26.             searchX += offsetX;   
  27.             searchY += offsetY;   
  28.         } else {   
  29.             stop = true;   
  30.         }   
  31.     }   
  32.     stop = false;   
  33.     searchX = x - offsetX;   
  34.     searchY = y - offsetY;   
  35.     while(searchX >= 0 && searchX < ChessBoard.Lines &&   
  36.         searchY >= 0 && searchY < ChessBoard.Lines &&   
  37.         !stop) {   
  38.         int intColor = c == Color.White ? 1 : 2;   
  39.         if(pieces[searchX, searchY] == intColor) {   
  40.             count++;   
  41.             searchX -= offsetX;   
  42.             searchY -= offsetY;   
  43.         } else {   
  44.             stop = true;   
  45.         }   
  46.     }   
  47.     return count == 5;   
  48. }  

视频内容请见http://www.itcast.net/course/detail/1989

总结:通过这个游戏我们关注游戏本身,更重要的是运用C#的知识点。在这个项目中有很多知识点比如:面向对象、GDI+、方法封装等。

在这个项目基础上还能进行很多扩展,比如使用集合、动画效果、人机对战等。在此抛砖引玉,希望多提宝贵意见!

<<如果您想和我交流,请点击和我成为好友>>