五子棋游戏-3(判断五子连心)
来源:互联网 发布:网络词踢人什么意思 编辑:程序博客网 时间:2024/05/22 05:18
最后是判断五子连心,将以下思路:从落子点开始检测4个方向
1.左右方向相同颜色的子是否达到5个
2.上下方向相同颜色的子是否达到5个
3.左斜方向相同颜色的子是否达到5个
4.右斜方向相同颜色的子是否达到5个
- /// <summary>
- /// 判断是否五子连心
- /// </summary>
- /// <param name="p"></param>
- /// <returns></returns>
- private bool IsWin(Piece p) {
- int x = p.X;
- int y = p.Y;
- bool win = IsFive(x, y, 0, 1, p.Color); //纵向
- win |= IsFive(x, y, 1, 1, p.Color); //右下斜
- win |= IsFive(x, y, 1, 0, p.Color); //横向
- win |= IsFive(x, y, 1, -1, p.Color); //左上斜
- return win;
- }
- private bool IsFive(int x, int y, int offsetX, int offsetY, Color c) {
- int count = 1;
- int searchX = x + offsetX;
- int searchY = y + offsetY;
- bool stop = false;
- while(searchX >= 0 && searchX < ChessBoard.Lines &&
- searchY >= 0 && searchY < ChessBoard.Lines &&
- !stop) {
- int intColor = c == Color.White ? 1 : 2;
- if(pieces[searchX, searchY] == intColor) {
- count++;
- searchX += offsetX;
- searchY += offsetY;
- } else {
- stop = true;
- }
- }
- stop = false;
- searchX = x - offsetX;
- searchY = y - offsetY;
- while(searchX >= 0 && searchX < ChessBoard.Lines &&
- searchY >= 0 && searchY < ChessBoard.Lines &&
- !stop) {
- int intColor = c == Color.White ? 1 : 2;
- if(pieces[searchX, searchY] == intColor) {
- count++;
- searchX -= offsetX;
- searchY -= offsetY;
- } else {
- stop = true;
- }
- }
- return count == 5;
- }
视频内容请见http://www.itcast.net/course/detail/1989
总结:通过这个游戏我们关注游戏本身,更重要的是运用C#的知识点。在这个项目中有很多知识点比如:面向对象、GDI+、方法封装等。
在这个项目基础上还能进行很多扩展,比如使用集合、动画效果、人机对战等。在此抛砖引玉,希望多提宝贵意见!
<<如果您想和我交流,请点击和我成为好友>>
- 五子棋游戏-3(判断五子连心)
- 五子棋游戏
- 五子棋游戏
- 五子棋游戏
- 五子棋游戏
- 五子棋游戏
- 五子棋游戏
- 五子棋游戏中判断胜负的C++源代码
- 五子棋 游戏设计
- c#游戏------联机五子棋
- 五子棋游戏源代码
- java五子棋游戏 代码
- HTML5 canvas五子棋游戏
- windows8五子棋 游戏
- Js五子棋游戏
- 五子棋落子游戏
- java五子棋游戏
- 写五子棋游戏有感
- 第八章 进程控制
- 第一天日志
- 五子棋游戏-1(绘制棋盘)
- 五子棋游戏-2(落子与悔棋)
- 2009经典
- 五子棋游戏-3(判断五子连心)
- 制作CRAMFS + YAFFS2文件系统
- 用busybox制作根文件系统
- 框架设计(第2版):CLR Via C#
- .NET框架程序设计(修订版)——微软.NET程序员系列
- easyMule自动关机工具(可用于1.X和2.0版本)
- SQL提供的聚集函数
- the first
- order by、group by、having语句