五子棋游戏-3(判断五子连心)
最后是判断五子连心,将以下思路:从落子点开始检测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(判断五子连心)相关推荐
- 用Java写的简单五子棋游戏(原创五子连珠算法)
源码jar包(已安装jdk环境可直接运行) 下载地址:http://download.csdn.net/detail/eguid_1/9532912 五子连珠算法为自创算法,对于五子棋该算法性能足以. ...
- java 连珠五子棋.现代职业_用Java写的简单五子棋游戏(原创五子连珠算法)
源码jar包(已安装jdk环境可直接运行) 五子连珠算法为自创算法,对于五子棋该算法性能足以. 该算法原理是这样的: 根据当前下子位置获取该位置上的4条直线8个方向的与当前棋子同色的棋子连珠数量,如果 ...
- 五子棋判断 五子连珠
题目链接:https://ac.nowcoder.com/acm/contest/331/B 题目大意: 思路:因为N太大.二维数组肯定是开不下.所以用map存就可以了. 当时就去写了二百多行的代码, ...
- c语言五子棋怎么判断五子连珠,五子棋 输赢判断算法
我们以一个二位数组表示五子棋,通过x.y坐标,表示一个棋子的位置. 1.基本原理: 五子棋判断输赢,其实就是一个二维坐标上,判断上下.左右.两个45度直线,是否有五个相同的直连棋子. 2.判断时机: ...
- c语言五子棋怎么判断五子连珠,分享一个 五子棋 输赢 的 判断逻辑。C#脚本
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 欢迎指出哪里需要改进.头有点晕,想了半天 实现的. 首先棋盘是由二维数组qipan[,]实现. 然后0是没有下子的状态.1是白子,2是黑子. 直接每次下完 ...
- Python Pygame制作简单五子棋游戏(详细代码+解释)
这里只想简单演示下一个简单的五子棋界面和落子等操作,主要为了后面设计AI对战方便演示,AI算法后面设计吧,最近事太多了,,,,. 希望本文有助于你制作自己期望的简单的五子棋. 一.pygame初始化画 ...
- 关于五子棋五子连珠判定问题
五子棋判断哪一方胜利 引入 五子棋大家都知道吧,不再写多余的描述,本文只介绍一个自己想出来的判断双方哪一方胜利的算法. 注意:本文算法均为本人自创,没有借鉴任何人的文章与帮助,如有雷同,纯属巧合!未经 ...
- 用74l138实现一个一位全减器_用pygame实现一个简单的五子棋游戏
准备 python基础相关准备: pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通" 安装python 3.8.0 在python官网下载, ...
- javafx 制作五子棋游戏——简单MVC框架
目录 游戏描述 上手须知 源码地址 项目结构 一.实体层 二.视图层 三.控制器 四.测试 效果图 游戏描述 一个五子棋游戏,能实现双方黑白对决,当一方获胜时给出提示信息,利用Javafx实现GUI界 ...
最新文章
- SCOM2016 安装OS或应用管理包
- Java内存管理之软引用(Soft Reference)
- centos设置java环境变量,CentOS设置环境变量
- mysql master thread_mysql innodb master_thread伪代码整理
- CentOS 7 firewalld使用简介
- Linux虚拟机挂载共享文件夹
- new和delete创建和销毁二维数组
- 12.1、自定义Condition
- BroadcastReceiver的学习和使用实例
- 【读书笔记】iOS-Web应用程序的自动化测试
- 哔哩哔哩用户需求分析报告
- 百度搜索引擎的工作原理
- SOP 封装 和 SOIC 封装的区别——细微差别,可以混用
- java 10000以内的质数_10000以内有多少质数
- 高端游戏计算机配置单,高端稳定有保障 6000元i7-7700配GTX1060游戏配置推荐
- git报错:Reinitialized existing Git repository in ...解决方法
- Flutter流畅性fps计算
- 辛弃疾 青玉案·元宵赏析
- C语言atan2()函数:求y/x的反正切值
- 高等数学 - 条件收敛和绝对收敛有什么区别