五子棋胜负的判定,一般有一下两种算法:

1.扫描整个棋盘,分别扫描四个方向是否有5个连子。网上找了很多五子棋源码都是用此算法,这意味着每下一个棋子都要扫描一遍15×15的棋盘,复杂而且低效,代码略。

2.每下一字,从该子开始扫描其四个方向(例如:从该子的(x-4,y)坐标开始扫描横向)是否存在5个连子。此算法较为常用,而且不涉及更为复杂的数据结构。

另外,为解决扫描越界的问题,在声明棋盘棋子位置时,可声明一个(4+15+4)×(4+15+4)的棋盘,而让棋子偏移(4,4)个坐标。

算法2源代码如下:

static void IfWin(int x,int y,int color)

{

TCHAR win[20];

int a,b;

if(stone[x][y]==1)

wcscpy_s(win,_T("黑棋胜利!"));

else

wcscpy_s(win,_T("白棋胜利!"));

for(a=x-4;a<=x+4;a++)//判断横

if(stone[a][y]==color&&stone[a+1][y]==color&&stone[a+2][y]==color&&stone[a+3][y]==color&&stone[a+4][y]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(""),MB_OK);return;}

for(b=y-4;b<=y+4;b++)//判断竖

if(stone[x][b]==color&&stone[x][b+1]==color&&stone[x][b+2]==color&&stone[x][b+3]==color&&stone[x][b+4]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(""),MB_OK);return;}

for(a=x-4,b=y-4;a<=x+4;a++,b++)//判断右斜

if(stone[a][b]==color&&stone[a+1][b+1]==color&&stone[a+2][b+2]==color&&stone[a+3][b+3]==color&&stone[a+4][b+4]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(""),MB_OK);return;}

for(a=x-4,b=y+4;a<=x+4;a++,b--)//判断左斜

if(stone[a][b]==color&&stone[a+1][b-1]==color&&stone[a+2][b-2]==color&&stone[a+3][b-3]==color&&stone[a+4][b-4]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(""),MB_OK);return;}

}

以上源码编译器为VS2010。

五子棋胜负判定c 语言,【C语言】五子棋胜负判定算法及源代码相关推荐

  1. C语言实现人机五子棋

    C语言实现人机五子棋 游戏效果预览: 百度云盘:链接:https://pan.baidu.com/s/1Ftun17GMOWwT2u0qk0TNdA 密码:3c1p 接触C语言刚好一年了,也步入了大二 ...

  2. 一个使用纯Win32 SDK和C语言实现的五子棋游戏

    引言:GobangGame 这是一个使用纯Win32 SDK和C语言实现的五子棋游戏 在这个游戏中实现的功能 [x] 绘制一个15 * 15的棋盘 [x] 绘制5个着重点位置 [x] 根据鼠标左键的点 ...

  3. 使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网)

    使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网) 一,前期准备 1,Java IDE(Eclipse)与JDK的安装与配置 jdk-15.0.1-免配置路径版 提取码:earu 免 ...

  4. c语言五子棋最简单的ai,C++简单五子棋的AI设计实现

    本文实例为大家分享了C++五子棋的AI设计实现代码,供大家参考,具体内容如下 设计思路:通过接口获取信息来确定颜色,通过set_chess函数来确定落点. 对每个点位给出两种颜色棋子的打分,分别存在两 ...

  5. 用c语言做一个五子棋程序,C语言制作简单五子棋游戏

    原标题:C语言制作简单五子棋游戏 C语言制作简单的五子棋游戏 学习C语言的人很多,但是用C语言很少,而用来为自己所用,来做游戏的人就更少了,很多人都是跟着学校学习,学校讲到哪就坐到哪,但是以后却还是不 ...

  6. C语言小游戏-五子棋

    C语言小游戏-五子棋 全部代码如下: #include <easyx.h> #include <graphics.h> #include <conio.h> #in ...

  7. c语言课程设计作业五子棋,C语言课程设计-五子棋双人对战程序

    C语言课程设计-五子棋双人对战程序 C语言课程设计-五子棋双人对战程序|c语言程序代码编程小程序设计|c语言课程设计报告课程案例 /*      本程序在Turbo C或Borland C下编译通过  ...

  8. vc6.0c语言五子棋程序,哪位大虾可以给我个VC6.0下用C语言编的五子棋,要有流程图...

    五子棋 代码 VC6.0 qq_29018467112015-06-14 五子棋 (用C语言编写五子棋游戏) rannianzhixia170392017-04-20 基于easyx图形的五子棋游戏 ...

  9. C语言实践——双人五子棋(进阶版)

    双人五子棋 前言 一.棋盘的美化 二.棋子的美化 三.棋盘的打印 四.控制台修改颜色 五.五子棋源代码 前言  上一篇文章讲了如何用C语言写一个简易的双人五子棋小游戏,但是存在一些缺陷,比如棋盘太&q ...

最新文章

  1. c获取当前系统时间_Python系统:程序和进程
  2. 【文文殿下】快速傅里叶变换(FFT)学习笔记
  3. 阿里云开源 image-syncer 工具,容器镜像迁移同步的终极利器
  4. LOJ#6044. 「雅礼集训 2017 Day8」共(Prufer序列)
  5. how to rank conferences or journals?
  6. WPF 分页控件应用
  7. PL/SQL批处理语句:BULK COLLECT 和 FORALL
  8. Bailian2708 平衡饮食【序列处理】
  9. max日期最大值为0_【SQL】SQL面试50题思路解答与分类整理(下)CASE与日期函数...
  10. 蒟蒻的SCAU第一周个人排位赛赛后感想
  11. Fastlane使用说明
  12. 结构化数据和非结构化数据、半结构化数据的区别-归纳总结整理
  13. TMC429 - 三轴2相步进电机控制芯片
  14. DataWhale NLP组队学习 Task5 基于深度学习的文本分类2
  15. CSAPP attacklab
  16. HFUUOJ1023 闷声发大财 概率dp
  17. 【无标题】求助,怎么把ienglish平板刷机
  18. 集合(list、set、map)的简单升序降序实现
  19. 卫星光通信关键技术及发展态势分析
  20. 【有利可图网】PS教程:PS调出中国古风水彩背景汉服女孩照片

热门文章

  1. 如何使用AD账号登录腾讯企业邮箱?
  2. cuil:吹牛营销大师
  3. OSPF路由协议详解
  4. RAID中条带的概念
  5. 调试大普RTC芯片驱动-ins5699s
  6. 怎么查找计算机硬件配置,电脑的硬件配置如何查看呢?
  7. 如何将flash源文件在flash MX里整体缩放或移动!
  8. JS中script标签defer和async属性的区别
  9. [wayfarer]PetShop之ASP.NET缓存
  10. C语言每日一练 —— 第20天:位运算