人人对弈的简单五子棋程序 c语言 棋盘是点 语言200行左右

人人对弈的简单五子棋程序 c语言 棋盘是点 语言200行左右,第1张

五子棋程序:

#include<iostream>

using namespace std;

int Hsheng(char a[][15]);//判断o子是否获胜的函数

int Bsheng(char a[][15]);//判断x子是否获胜的函数

int he(char a[][15]);//判断是否平局(也就是棋盘下满了)的函数

void qipan(char a[15][15])//执行输出棋盘命令

{ for(int i=0;i<15;i++) //打印棋盘

{ for(int j=0;j<15;j++)

cout<<a[i][j];

cout<<endl; } }

int main()

{ char a[15][15]; int x,y;

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

for(int j=0;j<15;j++)

a[i][j]=' '; qipan(a);

while(1)//用循环语句执行o,x交替下子,这些while语句看起来似乎是个死循环~实际上都会经过break结束

{ int a1=1;

while(1)

{ for(;a1;)

{ cout<<"请输入o子下的位置:"; //输入o子的位置

cin>>x>>y; if(a[x][y]=='o'||a[x][y]=='x')//判断是否已有子

{cout<<"已有子请重下"<<",";continue;}

else if(x>=15||y>=15){cout<<"输入错误请重输"<<",";continue;}

else { a[x][y]='o'; a1=0;}

} break;}

qipan(a);//下好o子后将棋盘显示

if(Hsheng(a))//判断o子是否已经获胜

{ cout<<"o子获胜"<<endl; break; }

while(1)//下x子

{ cout<<"请输入x子下的位置:";

cin>>x>>y;

if(a[x][y]=='o'||a[x][y]=='x'||x>=15||y>=15)

{ for( ; a[x][y]=='o'||a[x][y]=='x'; )

{ cout<<"已有子请重下";

cout<<"请输入x子下的位置:";

cin>>x>>y;continue; }

for ( ; x>=15||y>=15||x; )

{ cout<<"输入错误请重输"<<","; //判断输入棋子位置是否正确

cout<<"请输入x子下的位置:";

cin>>x>>y;continue ;}

a[x][y]='x';break; }

else

{ a[x][y]='x'; break; } }

qipan(a);//再一次输出棋盘

if(Bsheng(a))//判断x子是否已经获胜

{ cout<<"x子获胜"<<endl; break; }

if(he(a))//判断是否平局

{ cout<<"平局"<<endl; break; } }

return 0; }

int Hsheng(char a[][15])

{ int i,j;//判断横着的5个是否都相等

for(i=0;i<15;i++)

for(j=0;j<15;j++)

if(a[i][j]=='o'&&a[i][j+1]=='o'&&a[i][j+2]=='o'&&a[i][j+3]=='o'&&a[i][j+4]=='o')

return 1;

for(j=0;j<15;j++)//判断竖着的5个是否都相等

for(i=0;i<15;i++)

if(a[i][j]=='o'&&a[i+1][j]=='o'&&a[i+2][j]=='o'&&a[i+3][j]=='o'&&a[i+4][j]=='o')

return 1;

for(i=0;i<15;i++)//判断左斜5个

for(j=0;j<15;j++)

if(a[i][j]=='o'&&a[i+1][j+1]=='o'&&a[i+2][j+2]=='o'&&a[i+3][j+3]=='o'&&a[i+4][j+4]=='o')

return 1;

for(i=0;i<15;i++)//右斜5个

for(j=14;j>3;j--)

if(a[i][j]=='H'&&a[i+1][j-1]=='o'&&a[i+2][j-2]=='o'&&a[i+3][j-3]=='o'&&a[i+4][j-4]=='o')

return 1;

return 0; }

int Bsheng(char a[][15])//同o,只是改字符

{ int i,j;

for(i=0;i<15;i++)

for(j=0;j<15;j++)

if(a[i][j]=='x'&&a[i][j+1]=='x'&&a[i][j+2]=='x'&&a[i][j+3]=='x'&&a[i][j+4]=='x')

return 1;

for(j=0;j<15;j++)

for(i=0;i<15;i++)

if(a[i][j]=='x'&&a[i+1][j]=='x'&&a[i+2][j]=='x'&&a[i+3][j]=='x'&&a[i+4][j]=='x')

return 1;

for(i=0;i<15;i++)

for(j=0;j<15;j++)

if(a[i][j]=='x'&&a[i+1][j+1]=='x'&&a[i+2][j+2]=='x'&&a[i+3][j+3]=='x'&&a[i+4][j+4]=='x')

return 1;

for(i=0;i<15;i++)

for(j=14;j>3;j--)

if(a[i][j]=='x'&&a[i+1][j-1]=='x'&&a[i+2][j-2]=='x'&&a[i+3][j-3]=='x'&&a[i+4][j-4]=='x')

return 1;

return 0; }

int he(char a[][15])

{ for(int i=0;i<15;i++)

for(int j=0;j<15;j++)

{ if(a[i][j]==' ')//当棋盘全部子都不是' '时才能return 1,即棋盘已下满

return 0;

}

return 1;

}

希望能帮到你!!

直接上程序吧:

//wuziqijava

import javaappletApplet;

import javaawtButton;

import javaawtCheckbox;

import javaawtCheckboxGroup;

import javaawtColor;

import javaawtGraphics;

import javaawtLabel;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaawteventItemEvent;

import javaawteventItemListener;

import javaawteventMouseEvent;

import javaawteventMouseListener;

import javaawteventMouseMotionListener;

@SuppressWarnings("serial")

public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener

{

int color_Qizi=0;//旗子的颜色标识 0:白子 1:黑子

int intGame_Start=0;//游戏开始标志 0未开始 1游戏中

int intGame_Body[][]=new int[16][16]; //设置棋盘棋子状态 0 无子 1 白子 2 黑子

Button b1=new Button("游戏开始");

Button b2=new Button("重置游戏");

Label lblWin=new Label(" ");

Checkbox ckbHB[]=new Checkbox[2];

CheckboxGroup ckgHB=new CheckboxGroup();

public void init()

{

setLayout(null);

addMouseListener(this);

add(b1);

b1setBounds(330,50,80,30);

b1addActionListener(this);

add(b2);

b2setBounds(330,90,80,30);

b2addActionListener(this);

ckbHB[0]=new Checkbox("白子先",ckgHB,false);

ckbHB[0]setBounds(320,20,60,30);

ckbHB[1]=new Checkbox("黑子先",ckgHB,false);

ckbHB[1]setBounds(380,20,60,30);

add(ckbHB[0]);

add(ckbHB[1]);

ckbHB[0]addItemListener(this);

ckbHB[1]addItemListener(this);

add(lblWin);

lblWinsetBounds(330,130,80,30);

Game_start_csh();

}

public void itemStateChanged(ItemEvent e)

{

if (ckbHB[0]getState()) //选择黑子先还是白子先

{

color_Qizi=0;

}

else

{

color_Qizi=1;

}

}

public void actionPerformed(ActionEvent e)

{

@SuppressWarnings("unused")

Graphics g=getGraphics();

if (egetSource()==b1)

{

Game_start();

}

else

{

Game_re();

}

}

public void mousePressed(MouseEvent e){}

@SuppressWarnings("unused")

public void mouseClicked(MouseEvent e)

{

Graphics g=getGraphics();

int x1,y1;

x1=egetX();

y1=egetY();

if (egetX()<20 || egetX()>300 || egetY()<20 || egetY()>300)

{

return;

}

if (x1%20>10)

{

x1+=20;

}

if(y1%20>10)

{

y1+=20;

}

x1=x1/2020;

y1=y1/2020;

set_Qizi(x1,y1);

}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseReleased(MouseEvent e){}

public void mouseDragged(MouseEvent e){}

public void mouseMoved(MouseEvent e){}

public void paint(Graphics g)

{

draw_qipan(g);

}

public void set_Qizi(int x,int y) //落子

{

if (intGame_Start==0) //判断游戏未开始

{

return;

}

if (intGame_Body[x/20][y/20]!=0)

{

return;

}

Graphics g=getGraphics();

if (color_Qizi==1)//判断黑子还是白子

{

gsetColor(Colorblack);

color_Qizi=0;

}

else

{

gsetColor(Colorwhite);

color_Qizi=1;

}

gfillOval(x-10,y-10,20,20);

intGame_Body[x/20][y/20]=color_Qizi+1;

if (Game_win_1(x/20,y/20)) //判断输赢

{

lblWinsetText(Get_qizi_color(color_Qizi)+"赢了!");

intGame_Start=0;

}

if (Game_win_2(x/20,y/20)) //判断输赢

{

lblWinsetText(Get_qizi_color(color_Qizi)+"赢了!");

intGame_Start=0;

}

if (Game_win_3(x/20,y/20)) //判断输赢

{

lblWinsetText(Get_qizi_color(color_Qizi)+"赢了!");

intGame_Start=0;

}

if (Game_win_4(x/20,y/20)) //判断输赢

{

lblWinsetText(Get_qizi_color(color_Qizi)+"赢了!");

intGame_Start=0;

}

}

public String Get_qizi_color(int x)

{

if (x==0)

{

return "黑子";

}

else

{

return "白子";

}

}

public void draw_qipan(Graphics G) //画棋盘 1515

{

GsetColor(ColorlightGray);

Gfill3DRect(10,10,300,300,true);

GsetColor(Colorblack);

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

{

GdrawLine(20,20i,300,20i);

GdrawLine(20i,20,20i,300);

}

}

public void Game_start() //游戏开始

{

intGame_Start=1;

Game_btn_enable(false);

b2setEnabled(true);

}

public void Game_start_csh() //游戏开始初始化

{

intGame_Start=0;

Game_btn_enable(true);

b2setEnabled(false);

ckbHB[0]setState(true);

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

{

for (int j=0;j<16 ;j++ )

{

intGame_Body[i][j]=0;

}

}

lblWinsetText("");

}

public void Game_re() //游戏重新开始

{

repaint();

Game_start_csh();

}

public void Game_btn_enable(boolean e) //设置组件状态

{

b1setEnabled(e);

b2setEnabled(e);

ckbHB[0]setEnabled(e);

ckbHB[1]setEnabled(e);

}

public boolean Game_win_1(int x,int y) //判断输赢 横

{

int x1,y1,t=1;

x1=x;

y1=y;

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

{

if (x1>15)

{

break;

}

if (intGame_Body[x1+i][y1]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

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

{

if (x1<1)

{

break;

}

if(intGame_Body[x1-i][y1]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t>4)

{

return true;

}

else

{

return false;

}

}

public boolean Game_win_2(int x,int y) //判断输赢 竖

{

int x1,y1,t=1;

x1=x;

y1=y;

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

{

if (x1>15)

{

break;

}

if (intGame_Body[x1][y1+i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

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

{

if (x1<1)

{

break;

}

if(intGame_Body[x1][y1-i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t>4)

{

return true;

}

else

{

return false;

}

}

public boolean Game_win_3(int x,int y) //判断输赢 左斜

{

int x1,y1,t=1;

x1=x;

y1=y;

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

{

if (x1>15)

{

break;

}

if (intGame_Body[x1+i][y1-i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

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

{

if (x1<1)

{

break;

}

if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t>4)

{

return true;

}

else

{

return false;

}

}

public boolean Game_win_4(int x,int y) //判断输赢 左斜

{

int x1,y1,t=1;

x1=x;

y1=y;

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

{

if (x1>15)

{

break;

}

if (intGame_Body[x1+i][y1+i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

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

{

if (x1<1)

{

break;

}

if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t>4)

{

return true;

}

else

{

return false;

}

}

}

五子棋的玩法是:

五子棋分为白棋和黑棋,通过相互对垒取得胜利,任意方向满五个即可胜利。

如果堵住要道,就要重新选择出路,一般敌方三个相连时,就要堵住。

整个棋盘下满时都没有人达到五连,即为和棋也为平棋。

五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。

五子棋的棋具与围棋通用,是一种传统的棋种,有两种玩法。一种是双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。还有一种是自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。

五子棋容易上手,老少皆宜,而且趣味横生,引人入胜:它不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

五子棋的玩法是:

五子棋分为白棋和黑棋,通过相互对垒取得胜利,任意方向满五个即可胜利。

如果堵住要道,就要重新选择出路,一般敌方三个相连时,就要堵住。

整个棋盘下满时都没有人达到五连,即为和棋也为平棋。

五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。

五子棋的棋具与围棋通用,是一种传统的棋种,有两种玩法。一种是双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。还有一种是自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。

五子棋容易上手,老少皆宜,而且趣味横生,引人入胜:它不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

五子棋的玩法是:

五子棋分为白棋和黑棋,通过相互对垒取得胜利,任意方向满五个即可胜利。

如果堵住要道,就要重新选择出路,一般敌方三个相连时,就要堵住。

整个棋盘下满时都没有人达到五连,即为和棋也为平棋。

五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。

五子棋的棋具与围棋通用,是一种传统的棋种,有两种玩法。一种是双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。还有一种是自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。

五子棋容易上手,老少皆宜,而且趣味横生,引人入胜:它不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

五子棋的玩法是:

五子棋分为白棋和黑棋,通过相互对垒取得胜利,任意方向满五个即可胜利。

如果堵住要道,就要重新选择出路,一般敌方三个相连时,就要堵住。

整个棋盘下满时都没有人达到五连,即为和棋也为平棋。

五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。

五子棋的棋具与围棋通用,是一种传统的棋种,有两种玩法。一种是双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。还有一种是自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。

五子棋容易上手,老少皆宜,而且趣味横生,引人入胜:它不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

五子棋的玩法是:

五子棋分为白棋和黑棋,通过相互对垒取得胜利,任意方向满五个即可胜利。

如果堵住要道,就要重新选择出路,一般敌方三个相连时,就要堵住。

整个棋盘下满时都没有人达到五连,即为和棋也为平棋。

五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。

五子棋的棋具与围棋通用,是一种传统的棋种,有两种玩法。一种是双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。还有一种是自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。

五子棋容易上手,老少皆宜,而且趣味横生,引人入胜:它不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

五子棋有两种玩法:

玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。

玩法二:自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。

棋子

棋子分黑白两色。棋子形状为扁圆形,有一面凸起或两面凸起均可。棋子厚度一般不超过08厘米,直径应比棋盘上邻近点间的距离略小些,以免影响在棋盘上的行棋。以20—23厘米为宜。

平时下棋,棋子数量不限,以下棋时够用为准。正规的标准数一般定为黑子113枚,白子112枚。

棋子材质,重量不限。但以硬质,不易磨损,且放在棋盘上具有一定稳定性为好。

以上就是关于人人对弈的简单五子棋程序 c语言 棋盘是点 语言200行左右全部的内容,包括:人人对弈的简单五子棋程序 c语言 棋盘是点 语言200行左右、用matlab编写五子棋的完整程序、五子棋怎么玩法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9693855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存