C++五子棋编写控制台版CMD命令框版简单五子棋游戏适合初学者学习代码有详细注释.docx

上传人:b****2 文档编号:24349615 上传时间:2023-05-26 格式:DOCX 页数:37 大小:291.18KB
下载 相关 举报
C++五子棋编写控制台版CMD命令框版简单五子棋游戏适合初学者学习代码有详细注释.docx_第1页
第1页 / 共37页
C++五子棋编写控制台版CMD命令框版简单五子棋游戏适合初学者学习代码有详细注释.docx_第2页
第2页 / 共37页
C++五子棋编写控制台版CMD命令框版简单五子棋游戏适合初学者学习代码有详细注释.docx_第3页
第3页 / 共37页
C++五子棋编写控制台版CMD命令框版简单五子棋游戏适合初学者学习代码有详细注释.docx_第4页
第4页 / 共37页
C++五子棋编写控制台版CMD命令框版简单五子棋游戏适合初学者学习代码有详细注释.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

C++五子棋编写控制台版CMD命令框版简单五子棋游戏适合初学者学习代码有详细注释.docx

《C++五子棋编写控制台版CMD命令框版简单五子棋游戏适合初学者学习代码有详细注释.docx》由会员分享,可在线阅读,更多相关《C++五子棋编写控制台版CMD命令框版简单五子棋游戏适合初学者学习代码有详细注释.docx(37页珍藏版)》请在冰豆网上搜索。

C++五子棋编写控制台版CMD命令框版简单五子棋游戏适合初学者学习代码有详细注释.docx

C++五子棋编写控制台版CMD命令框版简单五子棋游戏适合初学者学习代码有详细注释

jieC++五子棋Ver2.1程序+代码[带AI、悔棋等]【控制台版】

这是用C++编写的一个简单五子棋游戏,带AI(电脑)、悔棋等功能。

支持单人游戏(与电脑对战)和双人对战。

使用的C++知识也很简单,只需要懂基本的语法,不需要用到API。

这个游戏不是图形界面的。

是DOS版或者说控制台版的。

游戏的运行界面如下:

这其实是第三版,添加了悔棋,修复AI[电脑]的几个BUG,以及悔棋的一个小问题。

当然了,若是还有什么BUG可以指出,我们的QQ:

775904764,有问题也可以找我。

代码如下:

//--------------------------------------------------------------------------//

//简单五子棋(控制台版)代码[Ver2.1]

//修复了AI越界的问题,简化评分函数,修复输赢判断函数的BUG。

//AI评分函数规则有部分改变,代码也更加简练。

//新增悔棋功能,仅与AI对战时可用,新增重新开始功能。

//修复悔棋的一个小BUG,修复AI随机落子部分的定义错误。

//作者:

落叶化尘QQ:

775904764

//--------------------------------------------------------------------------//

#include"五子棋类.h"

#include

#include

usingnamespacestd;

staticconstcharch[11][4]={"┌","┬","┐","├","┼","┤","└","┴","┘","○","●"};//可供选用的字符,输出棋盘或者棋子用

staticintRecord[15][15]={0};//记录棋子

staticintScore[15][15]={0};//评分

staticintSum=0,Renum=0;

intmain()

{

intDefault[15][15]={0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,//空棋盘

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,

6,7,7,7,7,7,7,7,7,7,7,7,7,7,8};

intvalue[15][15]={0};

FiveChessStart;

do

{

Start.StartGame(value,Default);//开始游戏

}

while(Start.Continue);//若是要退出就修改这个值

return0;

}

//------------------------------开始游戏------------------------------------------//

voidFiveChess:

:

StartGame(intvalue[][15],intDefault[][15])

{

Empty(value,Default);//初始化棋盘ad

ExWhile=true;

while(ExWhile)

{

Choice=MainMenu();//调用主菜单,并把用户选择的值储存在Choice里

switch(Choice)

{

case1:

flag=1;ExWhile=false;break;//把标志设置为1,与AI对战

case2:

flag=2;ExWhile=false;break;//把标志设置为2,双人对战

case3:

Select=Introduce();ExWhile=Select;Continue=false;break;//游戏说明函数

case4:

Select=Coder();ExWhile=Select;Continue=false;break;//作者介绍函数

case5:

Exit();ExWhile=false;Continue=false;break;//退出游戏函数

default:

cin.fail();cin.clear();cin.sync();cout<<"输出错误,请重新输入!

\n";system("pause>nul2>nul");ExWhile=true;break;//其它

}

}

if(flag==1)//如果标志等于1,说明为单人游戏

{

Single(value);

}

elseif(flag==2)//如果标志等于2,说明为双人游戏

{

Double(value);

}

flag=0;

}

//------------------------清空棋盘或初始化棋盘-----------------------------------//

voidFiveChess:

:

Empty(intvalue[][15],intDefault[][15])//清空棋盘

{

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

{

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

{

value[i][j]=Default[i][j];

}

}

}

voidFiveChess:

:

Exit()//退出游戏

{

system("cls");

cout<<"┌—————————————————————————┐\n";

cout<<"│感谢您使用:

简单五子棋Ver2.1│\n";

cout<<"││\n";

cout<<"│[游戏制作]:

落叶化尘│\n";

cout<<"│[联系QQ]:

775904764│\n";

cout<<"│[联系邮箱]:

lxhdjwg@│\n";

cout<<"│[简单说明]:

游戏结束界面,谢谢您的使用!

│\n";

cout<<"└—————————————————————————┘\n";

cout<<"感谢您的使用,谢谢!

按任意键退出游戏...\n";

system("pause>nul2>nul");

}

boolFiveChess:

:

Introduce()//游戏介绍

{

system("cls");

cout<<"┌—————————————————————————┐\n";

cout<<"│简单五子棋Ver2.1[游戏介绍界面]│\n";

cout<<"││\n";

cout<<"│[单人游戏]:

玩家和AI(人工智能)对战,AI智商不高。

│\n";

cout<<"││\n";

cout<<"│[双人游戏]:

可以两个玩家一起对战,可能不是很方便。

│\n";

cout<<"││\n";

cout<<"│[游戏方法]:

输入XY坐标落子,输入双-1悔棋。

│\n";

cout<<"││\n";

cout<<"│[特别提示]:

若游戏中想突然退出,按Ctrl+C即可中断。

│\n";

cout<<"││\n";

cout<<"└—————————————————————————┘\n";

cout<<"是否返回?

[Y-返回N-退出]:

";

charchoice;

cin>>choice;

if(choice=='N'||choice=='n')

{

cout<<"感谢您的使用,谢谢!

按任意键退出游戏...\n";

system("pause>nul2>nul");

returnfalse;

}

else

{

returntrue;

}

}

boolFiveChess:

:

Coder()//作者介绍

{

system("cls");

cout<<"┌—————————————————————————┐\n";

cout<<"│简单五子棋Ver2.1[作者介绍界面]│\n";

cout<<"││\n";

cout<<"│[游戏制作]:

落叶化尘│\n";

cout<<"│[联系QQ]:

775904764│\n";

cout<<"│[联系邮箱]:

lxhdjwg@│\n";

cout<<"│[简单介绍]:

游戏制作简陋,还请见谅^_^!

│\n";

cout<<"│[附加说明]:

作者正在努力学习C++中,嘿嘿~│\n";

cout<<"└—————————————————————————┘\n";

cout<<"是否返回?

[Y-返回N-退出]:

";

charchoice;

cin>>choice;

if(choice=='N'||choice=='n')

{

cout<<"感谢您的使用,谢谢!

按任意键退出游戏...\n";

system("pause>nul2>nul");

returnfalse;

}

else

{

returntrue;

}

}

//-------------------------------选择主菜单-----------------------------//

intFiveChess:

:

MainMenu()

{

system("cls");//清屏

system("title五子棋游戏By--落叶化尘QQ:

775904764");//修改窗口标题

system("color3f");//定义窗口颜色

system("modeconcols=56lines=20");//设置窗口大小

cout<<"┌—————————————————————————┐\n";

cout<<"│简单五子棋Ver2.1│\n";

cout<<"│[1]、单人游戏│\n";

cout<<"││\n";

cout<<"│[2]、双人游戏│\n";

cout<<"││\n";

cout<<"│[3]、游戏介绍│\n";

cout<<"││\n";

cout<<"│[4]、关于作者│\n";

cout<<"││\n";

cout<<"│[5]、退出│\n";

cout<<"└—————————————————————————┘\n";

cout<<"请选择:

";

intselect;

cin>>select;

returnselect;//返回用户选择的值

}

//--------------------------------胜利界面--------------------------------//

voidFiveChess:

:

Victory(intNum)

{

system("modeconcols=56lines=20");//设置窗口大小

system("cls");

if(Num==1)

{

system("color1f");

cout<<"┌—————————————————————————┐\n";

cout<<"│恭喜玩家1[黑棋]获得胜利!

│\n";

cout<<"││\n";

cout<<"│[胜利玩家]:

玩家1│\n";

cout<<"│[所属棋子]:

黑色│\n";

cout<<"│[祝福话语]:

不错哦^_^!

恭喜您获得了胜利!

│\n";

cout<<"││\n";

cout<<"└—————————————————————————┘\n";

}

elseif(Num==2)

{

system("color2f");

cout<<"┌—————————————————————————┐\n";

cout<<"│恭喜玩家2[白棋]获得胜利!

│\n";

cout<<"││\n";

cout<<"│[胜利玩家]:

玩家2│\n";

cout<<"│[所属棋子]:

白色│\n";

cout<<"│[祝福话语]:

恭喜您获得了胜利,再接再厉哈^_^!

│\n";

cout<<"││\n";

cout<<"└—————————————————————————┘\n";

}

elseif(Num==3)

{

system("color3f");

cout<<"┌—————————————————————————┐\n";

cout<<"│恭喜您,获得了胜利│\n";

cout<<"││\n";

cout<<"│[胜利玩家]:

自己│\n";

cout<<"│[所属棋子]:

黑色│\n";

cout<<"│[祝福话语]:

不错哦,打败了AI,恭喜!

│\n";

cout<<"││\n";

cout<<"└—————————————————————————┘\n";

}

elseif(Num==4)

{

system("color5f");

cout<<"┌—————————————————————————┐\n";

cout<<"│非常遗憾,您输了!

│\n";

cout<<"││\n";

cout<<"│[胜利玩家]:

AI(电脑)│\n";

cout<<"│[所属棋子]:

白色│\n";

cout<<"│[祝福话语]:

加油吧,下次一定要把AI打败哦!

│\n";

cout<<"││\n";

cout<<"└—————————————————————————┘\n";

}

else

{

system("color5f");

cout<<"┌—————————————————————————┐\n";

cout<<"│势均力敌——平局│\n";

cout<<"││\n";

cout<<"│[胜利玩家]:

无[平局]│\n";

cout<<"│[所属棋子]:

黑色或白色│\n";

cout<<"│[祝福话语]:

棋盘居然被走满了,不错不错~!

│\n";

cout<<"││\n";

cout<<"└—————————————————————————┘\n";

}

cout<<"是否返回主界面?

[Y-返回N-退出]:

";

charchoice;

cin>>choice;

if(choice=='N'||choice=='n')

{

cout<<"感谢您的使用,谢谢!

按任意键退出游戏...\n";

system("pause>nul2>nul");

Continue=false;

}

else

{

Continue=true;

}

}

//----------------------------悔棋-------------------------------//

voidFiveChess:

:

Retract(int&x1,int&y1,int&x2,int&y2,intvalue[][15])

{

if(Sum>=1)

{

Sum--;

}

if((x1==-1)&&(y1==-1)&&(x2==-1)&&(y2==-1))

{

cout<<"当前无法悔棋,棋盘上没有棋子!

";

system("pause>nul");

}

elseif(Renum>=6)

{

cout<<"悔棋超过6次,为了公平,您不能再次悔棋!

";

system("pause>nul");

}

else

{

Renum++;

if(x1==0&&y1==0){value[x1][y1]=0;Record[x1][y1]=0;}

elseif(x1==0&&y1==14){value[x1][y1]=2;Record[x1][y1]=0;}

elseif(x1==14&&y1==0){value[x1][y1]=6;Record[x1][y1]=0;}

elseif(x1==14&&y1==14){value[x1][y1]=8;Record[x1][y1]=0;}

elseif(x1==14&&(y1>0&&y1<14)){value[x1][y1]=7;Record[x1][y1]=0;}

elseif(y1==14&&(x1>0&&x1<14)){value[x1][y1]=5;Record[x1][y1]=0;}

elseif(x1==0&&(y1>0&&y1<14)){value[x1][y1]=1;Record[x1][y1]=0;}

elseif(y1==0&&(x1>0&&x1<14)){value[x1][y1]=3;Record[x1][y1]=0;}

else{value[x1][y1]=4;Record[x1][y1]=0;}

if(x2==0&&y2==0){value[x2][y2]=0;Record[x2][y2]=0;}

elseif(x2==0&&y2==14){value[x2][y2]=2;Record[x2][y2]=0;}

elseif(x2==14&&y2==0){value[x2][y2]=6;Record[x2][y2]=0;}

elseif(x2==14&&y2==14){value[x2][y2]=8;Record[x2][y2]=0;}

elseif(x2==14&&(y2>0&&y2<14)){value[x2][y2]=7;Record[x2][y2]=0;}

elseif(y2==14&&(x2>0&&x2<14)){value[x1][y2]=5;Record[x2][y2]=0;}

elseif(x2==0&&(y2>0&&y2<14)){value[x2][y2]=1;Record[x2][y2]=0;}

elseif(y2==0&&(x2>0&&x2<14)){value[x2][y2]=3;Record[x2][y2]=0;}

else{value[x2][y2]=4;Record[x2][y2]=0;}

cout<<"每盘最多允许悔棋6次,且最多只能回到上一步!

";

system("pause>nul");

}

}

//-----------------------------判断用户输入的坐标合法性-------------------------//

intFiveChess:

:

Position(int*x,int*y,intvalue[][15])

{

if(cin.fail()||*x<0||*x>=15||*y<0||*y>=15)

{

cin.clear();

cin.sync();

return1;//返回1表示不在范围内或者输入的不是数字

}

elseif(value[*x][*y]==9||value[*x][*y]==10)

{

return2;//存在棋子

}

else

{

return0;//返回0表示坐标正常

}

}

//---------------------------判断该哪个玩家先走----------------------------//

intFiveChess:

:

NextPlayer(intvalue[][15])

{

inti,j;

intplayer1=0,player2=0;

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

{

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

{

if(value[i][j]==10)

{

player1++;//统计棋盘上面黑子的个数

}

elseif(value[i][j]==9)

{

player2++;//统计棋盘上白子的个数

}

}

}

if(player1>player2||player1

{

return2;//该玩家2走了(白子)

}

else

{

return1;//该玩家1走了(黑子)

}

}

//---------------------------判断棋子落在这点,是否胜利或者平局-----------------------------------------//

intFiveChess:

:

Win(int*x,int*y,intChessNum,intvalue[][15])

{

inti,j,k;//返回-1:

平局返回0:

没有谁胜利返回1:

传递过来ChessNum号的那一方胜利

intnumber=0;

Sumchess=0;

for(i=-1;i<=1;i++)

{

for(j=-1;j<=1;j++)//循环8次,分别计算这个点的8个方向是否构成5连

{

if(i!

=0||j!

=0)//i或者j等于0,不就代表的是ChessNum的值嘛

{

for(k=1;k<5;k++)//循环4次

{//这是不越界判断//存在棋子数目+1

if(*x+k*i>=0&&*x+k*i<=14&&*y+k*j>=0&&*y+k*j<=14&&value[*x+k*i][*y+k*j]==ChessNum){number++;}//如果这个点有棋子

else{break;}//没有棋子就跳出

}

for(k=-1;k>-5;k--)//与上面相对的方向的判断

{

if(*x+k*i>=0

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1