最后是判断五子连心,将以下思路:从落子点开始检测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+、方法封装等。
在这个项目基础上还能进行很多扩展,比如使用集合、动画效果、人机对战等。在此抛砖引玉,希望多提宝贵意见!

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

五子棋游戏-3(判断五子连心)相关推荐

  1. 用Java写的简单五子棋游戏(原创五子连珠算法)

    源码jar包(已安装jdk环境可直接运行) 下载地址:http://download.csdn.net/detail/eguid_1/9532912 五子连珠算法为自创算法,对于五子棋该算法性能足以. ...

  2. java 连珠五子棋.现代职业_用Java写的简单五子棋游戏(原创五子连珠算法)

    源码jar包(已安装jdk环境可直接运行) 五子连珠算法为自创算法,对于五子棋该算法性能足以. 该算法原理是这样的: 根据当前下子位置获取该位置上的4条直线8个方向的与当前棋子同色的棋子连珠数量,如果 ...

  3. 五子棋判断 五子连珠

    题目链接:https://ac.nowcoder.com/acm/contest/331/B 题目大意: 思路:因为N太大.二维数组肯定是开不下.所以用map存就可以了. 当时就去写了二百多行的代码, ...

  4. c语言五子棋怎么判断五子连珠,五子棋 输赢判断算法

    我们以一个二位数组表示五子棋,通过x.y坐标,表示一个棋子的位置. 1.基本原理: 五子棋判断输赢,其实就是一个二维坐标上,判断上下.左右.两个45度直线,是否有五个相同的直连棋子. 2.判断时机: ...

  5. c语言五子棋怎么判断五子连珠,分享一个 五子棋 输赢 的 判断逻辑。C#脚本

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 欢迎指出哪里需要改进.头有点晕,想了半天 实现的. 首先棋盘是由二维数组qipan[,]实现. 然后0是没有下子的状态.1是白子,2是黑子. 直接每次下完 ...

  6. Python Pygame制作简单五子棋游戏(详细代码+解释)

    这里只想简单演示下一个简单的五子棋界面和落子等操作,主要为了后面设计AI对战方便演示,AI算法后面设计吧,最近事太多了,,,,. 希望本文有助于你制作自己期望的简单的五子棋. 一.pygame初始化画 ...

  7. 关于五子棋五子连珠判定问题

    五子棋判断哪一方胜利 引入 五子棋大家都知道吧,不再写多余的描述,本文只介绍一个自己想出来的判断双方哪一方胜利的算法. 注意:本文算法均为本人自创,没有借鉴任何人的文章与帮助,如有雷同,纯属巧合!未经 ...

  8. 用74l138实现一个一位全减器_用pygame实现一个简单的五子棋游戏

    准备 python基础相关准备: pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通" 安装python 3.8.0 在python官网下载, ...

  9. javafx 制作五子棋游戏——简单MVC框架

    目录 游戏描述 上手须知 源码地址 项目结构 一.实体层 二.视图层 三.控制器 四.测试 效果图 游戏描述 一个五子棋游戏,能实现双方黑白对决,当一方获胜时给出提示信息,利用Javafx实现GUI界 ...

最新文章

  1. SCOM2016 安装OS或应用管理包
  2. Java内存管理之软引用(Soft Reference)
  3. centos设置java环境变量,CentOS设置环境变量
  4. mysql master thread_mysql innodb master_thread伪代码整理
  5. CentOS 7 firewalld使用简介
  6. Linux虚拟机挂载共享文件夹
  7. new和delete创建和销毁二维数组
  8. 12.1、自定义Condition
  9. BroadcastReceiver的学习和使用实例
  10. 【读书笔记】iOS-Web应用程序的自动化测试
  11. 哔哩哔哩用户需求分析报告
  12. 百度搜索引擎的工作原理
  13. SOP 封装 和 SOIC 封装的区别——细微差别,可以混用
  14. java 10000以内的质数_10000以内有多少质数
  15. 高端游戏计算机配置单,高端稳定有保障 6000元i7-7700配GTX1060游戏配置推荐
  16. git报错:Reinitialized existing Git repository in ...解决方法
  17. Flutter流畅性fps计算
  18. 辛弃疾 青玉案·元宵赏析
  19. C语言atan2()函数:求y/x的反正切值
  20. 高等数学 - 条件收敛和绝对收敛有什么区别

热门文章

  1. 凌汛 php,汛期和凌汛的区别 分别是什么意思
  2. 软件设计——质量属性(非功能性需求)
  3. 国内外计算机审计发展,我国计算机审计软件的发展现状
  4. (十八)Python爬虫:XPath的使用
  5. Navicat操作数据库时一直显示加载中
  6. Waymo向左,霉运向右
  7. 西蒙菲莎计算机专业,西蒙菲沙大学计算机专业课程设置
  8. iOS UILabel 文字 置顶/置底 实现
  9. 自动化专业学习大数据开发,零基础学习分享
  10. 计算机处理器技术类毕业论文文献都有哪些?