现在的位置: 首页 > 综合 > 正文

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

2014年03月15日 ⁄ 综合 ⁄ 共 1726字 ⁄ 字号 评论关闭

最后是判断五子连心,将以下思路:从落子点开始检测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.   
  16. private bool IsFive(int x, int y, int offsetX, int offsetY, Color c) {   
  17.     int count = 1;   
  18.     int searchX = x + offsetX;   
  19.     int searchY = y + offsetY;   
  20.     bool stop = false;   
  21.     while(searchX >= 0 && searchX < ChessBoard.Lines &&   
  22.         searchY >= 0 && searchY < ChessBoard.Lines &&   
  23.         !stop) {   
  24.         int intColor = c == Color.White ? 1 : 2;   
  25.         if(pieces[searchX, searchY] == intColor) {   
  26.             count++;   
  27.             searchX += offsetX;   
  28.             searchY += offsetY;   
  29.         } else {   
  30.             stop = true;   
  31.         }   
  32.     }   
  33.     stop = false;   
  34.     searchX = x - offsetX;   
  35.     searchY = y - offsetY;   
  36.     while(searchX >= 0 && searchX < ChessBoard.Lines &&   
  37.         searchY >= 0 && searchY < ChessBoard.Lines &&   
  38.         !stop) {   
  39.         int intColor = c == Color.White ? 1 : 2;   
  40.         if(pieces[searchX, searchY] == intColor) {   
  41.             count++;   
  42.             searchX -= offsetX;   
  43.             searchY -= offsetY;   
  44.         } else {   
  45.             stop = true;   
  46.         }   
  47.     }   
  48.     return count == 5;   
  49. }  

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

总结:通过这个游戏我们关注游戏本身,更重要的是运用C#的知识点。在这个项目中有很多知识点比如:面向对象、GDI+、方法封装等。
在这个项目基础上还能进行很多扩展,比如使用集合、动画效果、人机对战等。在此抛砖引玉,希望多提宝贵意见!

 

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

抱歉!评论已关闭.