【C语言】五子棋胜负判定算法及源代码

C语言--五子棋项目【图文详解 经典】 今天小编带领大家学一学C语言入门必写的五子棋项目,题目非常经典,值得一学。 阅读详情

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


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。

PTA 五子棋赢了吗? C语言 五子棋赢了吗?(简易判断) 问题描述   假设五子棋的棋盘是N* N的(正整数N&amp;lt;20),黑子用*表示,白子用#表示,空位置用. 表示。      现给你一个棋局,请判断黑子是否获胜,如获胜,显示Win,并给出获胜排列的最左边那列的最上方那颗棋子的坐标。(棋盘左上角坐标是 (0, 0) ,右下角坐标是 (N-1, N-1)),如果未获胜,则显示“Not yet”。 注意:   不考虑白子是否... 阅读详情

相关推荐

【C语言 |五子棋】C语言实现五子棋

用C语言实现五子棋

YKX0000的博客 9331

scratch简易编程

scratch简易编程。(ppt)

【项目展示】自己用C语言编写的五子棋小程序

1、前言 2015年,我刚刚上大一。大一上学期,我们就学习了C语言这门课程。学了大概两个多月吧,我就心血来潮,在学校图书馆的机房里自主编写了我的第一个C语言项目——五子棋小程序。 我依稀记得,那个夏日的夜晚,风带着些许暑气,一个少年背着沉重的书包,拖着疲惫却又轻快的身躯,满意地走出图书馆的身影。他的心中有说不尽的甜——毕竟,做成了此生第一个完全由自己开发的小游戏。 而当时的我编写的五子棋小游戏是什么样子的呢?当时的我还不会GUI编程(虽然到现在也还没学会……),所以就借鉴了一下更早以前玩过的一个基于CUI的

橄榄树下的孩子 4313

scratch智能五子棋

智能五子棋机器人,可以用scratch2.0以及scratch3.0打开,实现了人机对战功能,以及自动演示,判断输赢功能

一种简单判断五子棋胜负的方式

c的简单算法

2301_76715868的博客 2024

【c语言五子棋】自定义类型五子棋/井字棋:胜负判断

五子棋胜负判断篇 代码实现如下: 横向判断: //横向判断 int ifwina(int positionx, int positiony, int length, int winrule) { int whitewin = 0, blackwin...

dancehole的博客 5406

五子棋胜负判定c 语言,【C语言五子棋胜负判定算法源代码

五子棋胜负判定,一般有一下两种算法:1.扫描整个棋盘,分别扫描四个方向是否有5个连子。网上找了很多五子棋源码都是用此算法,这意味着每下一个棋子都要扫描一遍15×15的棋盘,复杂而且低效,代码略。2.每下一字,从该子开始扫描其四个方向(例如:从该子的(x-4,y)坐标开始扫描横向)是否存在5个连子。此算法较为常用,而且不涉及更为复杂的数据结构。另外,为解决扫描越界的问题,在声明棋盘棋子位置时,可声...

weixin_36076701的博客 3307

五子棋胜负判定c 语言,C语言五子棋胜负判定算法源代码 -电脑资料

五子棋胜负判定,一般有一下两种算法:1.扫描整个棋盘,分别扫描四个方向是否有5个连子,2.每下一字,从该子开始扫描其四个方向(例如:从该子的(x-4,y)坐标开始扫描横向)是否存在5个连子。此算法较为常用,而且不涉及更为复杂的数据结构。另外,为解决扫描越界的问题,在声明棋盘棋子位置时,可声明一个(4+19+4)×(4+19+4)的棋盘,而让棋子偏移(4,4)个坐标。算法2源代码如下:static...

weixin_39859052的博客 740

C语言五子棋统计输赢次数,【C语言五子棋胜负判定算法源代码

五子棋胜负判定,一般有一下两种算法:1.扫描整个棋盘,分别扫描四个方向是否有5个连子。网上找了很多五子棋源码都是用此算法,这意味着每下一个棋子都要扫描一遍15×15的棋盘,复杂而且低效,代码略。2.每下一字,从该子开始扫描其四个方向(例如:从该子的(x-4,y)坐标开始扫描横向)是否存在5个连子。此算法较为常用,而且不涉及更为复杂的数据结构。另外,为解决扫描越界的问题,在声明棋盘棋子位置时,可声...

weixin_34579167的博客 827

C语言五子棋源代码

#include "stdio.h" #include "math.h" #include "windows.h" #include "time.h"//使用当前时钟做种子 #define N 15 //定义棋盘大小 1黑2白 #define M N+8 //定义数据棋盘大小 int chess[N][N];//棋盘,用于储存下子位置 int count[M][M...

coca的博客 5万+

C语言实践----五子棋(附源代码及思路讲解)

用C语言设计五子棋小游戏,棋盘符号┌┬┐├┼┤└ ┴ ┘。了解五子棋下棋过程1、在菜单界面选择对战方式、进行上一局或退出游戏2、绘制棋盘、棋子3、执黑子的玩家先落子,然后双方轮流落子4、判断胜负或平局5、退出游戏 ...

weixin_61866141的博客 9万+

C语言实现人机五子棋

C语言实现人机五子棋 效果: 百度云盘:链接:https://pan.baidu.com/s/1Ftun17GMOWwT2u0qk0TNdA 密码:3c1p

qq_45669199的博客 2万+

C语言五子棋游戏源代码

# include # include # include # include//插入输入输出头文件 # include//字符数组的函数定义的头文件 # include//stdlib 头文件即standard library标准库头文件stdlib 头文件里包含了C、C++语言的最常用的系统函数该 ,文件包含了C语言标准库函数的定义. # define SPA 0//在C或C++语

h14525544的博客 4411

五子棋的c语言源码

#include #include #define NO_CHESS    "十" #define RED_CHESS   "❤️" #define BLACK_CHESS "♠️" #define BOARD_SIZE  15 //定义棋盘的大小 typedef int DataType; struct Stack {

estbon的博客 1万+

【C语言五子棋(c语言实现)

c语言控制台实现5子棋

yj20040627的博客 3786

【C语言】简单小游戏——五子棋,详细代码及其思路

一个简单的纯c语言完成的五子棋小游戏

qq_59091630的博客 2697

C语言编写的五子棋游戏完整源代码

五子棋游戏的规则看似简单,但要实现一款既能满足玩家娱乐需求,又能保持游戏平衡性的五子棋游戏,我们需要从游戏的基本概念和目标开始入手。

weixin_42612405的博客 1110
上一篇: 【TCHAR、_T与_TEXT】【strcpy、wcscpy与_tcscpy】
下一篇: 【北大MOOC】2014程序设计实习--第二周编程作业
卢超群
博客等级 码龄13年 13粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值