五子棋C++实现

#include<iostream>

#include<iomanip>

#include<cstdlib>

#include<cstdio>

#include<string.h>

using namespace std;

const int X = 21; //棋盘行数

const int Y = 21; //棋盘列数

char p[X][Y];  //定义棋盘

int m=0;//定义临时点,保存输入坐标

int n=0;

void display()  //输出棋盘

{

for(int i=0; i<X; i++)

cout<<setw(3)<<setfill(‘ ‘)<<i;

cout<<endl;

for(int i=1; i<Y; i++)

{

cout<<setw(3)<<setfill(‘ ‘)<<i;

for(int j=1;j<X;j++)

cout<<setw(3)<<setfill(‘ ‘)<<p[i][j];

cout<<endl;

}

}

void black()  //黑方落子

{

cout<<"请黑方输入落子位置:\n"

<<"请输入落子的行数:";

cin>>m;

cout<<"请输入落子的列数:";

cin>>n;

if(m<=0||m>=X||n>=Y||n<=0)

{

cout<<"超出棋盘范围,请重新输入正确坐标!\n";

black();

}

else if((p[m][n]==1)||p[m][n]==2)

{

cout<<"该点已有棋子,请重新选取落子点!\n";

black();

}

else

p[m][n]=1; //黑方用1来表示

system("cls");

display();

}

void red()  //红方落子

{

cout<<"请红方输入落子位置:\n"

<<"请输入落子的行数:";

cin>>m;

cout<<"请输入落子的列数:";

cin>>n;

if(m>=X||m<=0||n<=0||n>=Y)

{

cout<<"超出棋盘范围,请重新输入正确坐标!\n";

red();

}

else if((p[m][n]==1)||p[m][n]==2)

{

cout<<"该点已有棋子,请重新选取落子点!\n";

red();

}

else

p[m][n]=2; //红方用2来表示

system("cls");

display();

}

int evalue()  //只需要判断落子点为中心的九点“米”字是否连续即可

{

int k = 0,r = 0;

/*斜线判断*/

for(k=3;k<X-2;k++)  //两条,其中的p[k][r]!=‘-‘是排除空子的情况

{

for(r=3;r<Y-2;r++)

{

if(p[k][r]!=‘-‘&&p[k-2][r-2]==p[k][r]&&p[k-1][r-1]==p[k][r]&&p[k+1][r+1]==p[k][r]&&p[k+2][r+2]==p[k][r])

return 1;

else if(p[k][r]!=‘-‘&&p[k+2][r-2]==p[k][r]&&p[k+1][r-1]==p[k][r]&&p[k-1][r+1]==p[k][r]&&p[k-2][r+2]==p[k][r])

return 1;

}

}

/*横线判断*/

for(k=1;k<X;k++)  //p[k][r]!=‘-‘是排除空子的情况

for(r=3;r<Y-2;r++)

if(p[k][r]!=‘-‘&&p[k][r-2]==p[k][r]&&p[k][r-1]==p[k][r]&&p[k][r+1]==p[k][r]&&p[k][r+2]==p[k][r])

return 1;

/*竖线判断*/

for(k=3;k<X-2;k++)  //p[k][r]!=‘-‘是排除空子的情况

for(r=1;r<Y;r++)

if(p[k][r]!=‘-‘&&p[k-2][r]==p[k][r]&&p[k-1][r]==p[k][r]&&p[k+1][r]==p[k][r]&&p[k+2][r]==p[k][r])

return 1;

return 0;

}

int main()

{

memset(p,‘-‘,441);  //初始化为‘-’

cout<<"欢迎使用简易双人对战五子棋游戏\n"

<<"五子棋棋谱如下:\n";

display();

while(1)

{

red();

if(evalue())

{

cout<<"红方赢!\n";

break;

}

black();

if(evalue())

{

cout<<"黑方赢!\n";

break;

}

}

return 0;

}

时间: 2025-01-18 16:10:41

五子棋C++实现的相关文章

双人组队作业:五子棋

双人组成员:李志刚,刘海威 五子棋作为一款棋类竞技运动在民间十分流行,许多人喜欢玩五子棋,为了熟悉五子棋的规则技巧以及简单的人工智能,决定用JAVA开发五子棋游戏.游戏分为人机对战和人人对战.首先 设计一个15╳15围棋棋盘,由两玩家或人与电脑交替进行对战,并可以实现以下功能: 1.选择落子的先后顺序(黑先白后) 2.重置棋盘 3.刷新重新开始 4.退出提示 并且规定退出者判为负,但退出过程中要有提示.以防不小心点错了. 最后判断某一方是否为五子连珠. 实现一个简单的多用户五子棋的游戏程序,包括

五子棋计算思路

五子棋分为有禁手和无禁手,有禁手就是在无禁手的规则的基础上加上禁手规则,具体是规则不讲了.所以就人机对战来讲,从无禁手来做,比较好做.这里只讲无禁手的情况.无禁手就是只要能连成5个子,或者5个子以上,就算赢.    而计算机博弈要解决的问题,抽象地讲只有一个问题“下一步怎么走”,对五子棋来讲,就是下一步在哪个点落子.一般的思路在 棋类人机对战的一般原理 - BillySir - 博客园  已经有说.下面重点讲五子棋特有的算法思路. 下一步怎么走,总体思路:    1.如果下一步能赢,就走这一步 

结对-五子棋游戏-开发环境搭建过程

项目名称:五子棋游戏 参加项目人员:李一轩.程吉 环境搭建:下载HBuilder软件,下载Google浏览器:依次安装即可使用

简单程序设计-五子棋

<程序设计-五子棋> 作者:蜡笔小黑(原创博文,转载请说明) 前言:很多刚刚接触编程的人都不知道怎么下手编写程序,特别是学习了新的知识点,不知道有什么用,那么本文将以简单的存储结构及简单的运算,条件语句,分支语句,循环语句结合,带来一个双人对战版五子棋,这是一个简单的模型,实现了五子棋最最基本的功能,还有好多地方需要补全,如边界问题,设计问题,游戏逻辑问题,希望读者阅读后能够注意,通过自己的努力来完善它,还能扩展各种功能,如悔棋,网络对战等,有时候写程序和小生命一样,慢慢会成长,而我们作为&q

人机ai五子棋 ——五子棋AI算法之Java实现

人机ai五子棋 下载:chess.jar (可直接运行) 源码:https://github.com/xcr1234/chess 其实机器博弈最重要的就是打分,分数也就是权重,把棋子下到分数大的地方,我获胜的概率就更大. 而在下棋过程中,大部分的点的得分都很小,或者接近,因此无需对每一个点都打分,只需要在我方附近(进攻)或者敌方附近(防守)的几个点进行打分. 具体原理大家可以看源码中的注释,说明的很清楚. 参考 http://blog.csdn.net/pi9nc/article/details

五子棋游戏:使用javascript

文件夹建立: UI image logo.jsp yw.jsp cw.jsp js script.js css style.css index.html index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>五子棋游戏</title>     <link rel="styl

团队项目:五子棋

五子棋是一种两人对弈的纯策略型棋类游戏,通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成5子连线者获胜. 棋具与围棋通用,起源于中国上古时代的传统黑白棋种之一.主要流行于华人和汉字文化圈的国家以及欧美一些地区,是世界上最古老的棋. 容易上手,老少皆宜,而且趣味横生,引人入胜:不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性.已在各个游戏平台有应用.

android程序----&gt;android五子棋的实现

在慕课网上学习了五子棋的课程,感觉挺不错.然后自己写了个关于五子棋的android程序,从中还是能够学习到很多东西的.现在我们开始今天五子棋程序的编写历程.程序的源码请参见友情链接: 目录导航 一些前期做准备的代码 自定义棋盘的View 保存残局并恢复棋局 判断游戏是否结束的算法 友情链接 好了,我们现在开始一步步的构建出项目来,首先是如下的项目结构图: 运行的效果图: 一些前期做准备的代码 一. 主活动类MainActivity,在菜单中加入了再来一局的功能: public class Mai

jQuery网页版五子棋小游戏源码下载

体验效果:http://hovertree.com/texiao/game/4/ 网页五子棋源代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>jquery五子棋游戏 -</title> <script type="