C++五子棋编写控制台CMD命令框简单五子棋游戏适合初学者学习代码有详细注释.docx
- 文档编号:23000806
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:24
- 大小:165.54KB
C++五子棋编写控制台CMD命令框简单五子棋游戏适合初学者学习代码有详细注释.docx
《C++五子棋编写控制台CMD命令框简单五子棋游戏适合初学者学习代码有详细注释.docx》由会员分享,可在线阅读,更多相关《C++五子棋编写控制台CMD命令框简单五子棋游戏适合初学者学习代码有详细注释.docx(24页珍藏版)》请在冰豆网上搜索。
C++五子棋编写控制台CMD命令框简单五子棋游戏适合初学者学习代码有详细注释
C++五子棋Ver2.1程序+代码[带AI、悔棋等]【控制台版】
这是用C++编写的一个简单五子棋游戏,带AI<电脑)、悔棋等功能。
支持单人游戏<与电脑对战)和双人对战。
使用的C++知识也很简单,只需要懂基本的语法,不需要用到API。
这个游戏不是图形界面的。
是DOS版或者说控制台版的。
b5E2RGbCAP
游戏的运行界面如下:
这其实是第三版,添加了悔棋,修复AI[电脑]的几个BUG,以及悔棋的一个小问题。
当然了,若是还有什么BUG可以指出,我们的QQ:
775904764,有问题也可以找我。
p1EanqFDPw
代码如下:
//--------------------------------------------------------------------------//DXDiTa9E3d
//简单五子棋<控制台版)代码[Ver2.1]
//修复了AI越界的问题,简化评分函数,修复输赢判断函数的BUG。
//AI评分函数规则有部分改变,代码也更加简练。
//新增悔棋功能,仅与AI对战时可用,新增重新开始功能。
//修复悔棋的一个小BUG,修复AI随机落子部分的定义错误。
//作者:
落叶化尘QQ:
775904764
//--------------------------------------------------------------------------//RTCrpUDGiT
#include"五子棋类.h"
#include
#include
usingnamespacestd。
staticconstcharch[11][4]={"┌","┬","┐","├","┼","┤","└","┴","┘","○","●"}。
//可供选用的字符,输出棋盘或者棋子用5PCzVD7HxA
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,//空棋盘jLBHrnAILg
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。
}
//------------------------------开始游戏------------------------------------------//xHAQX74J0X
voidFiveChess:
:
StartGame(intvalue[][15],intDefault[][15]>LDAYtRyKfE
{
Empty(value,Default>。
//初始化棋盘ad
ExWhile=true。
while(ExWhile>
{
Choice=MainMenu(>。
//调用主菜单,并把用户选择的值储存在Choice里Zzz6ZB2Ltk
switch(Choice>
{
case1:
flag=1。
ExWhile=false。
break。
//把标志设置为1,与AI对战dvzfvkwMI1
case2:
flag=2。
ExWhile=false。
break。
//把标志设置为2,双人对战rqyn14ZNXI
case3:
Select=Introduce(>。
ExWhile=Select。
Continue=false。
break。
//游戏说明函数EmxvxOtOco
case4:
Select=Coder(>。
ExWhile=Select。
Continue=false。
break。
//作者介绍函数SixE2yXPq5
case5:
Exit(>。
ExWhile=false。
Continue=false。
break。
//退出游戏函数6ewMyirQFL
default:
cin.fail(>。
cin.clear(>。
cin.sync(>。
cout<<"输出错误,请重新输入!
\n"。
system("pause>nul2>nul">。
ExWhile=true。
break。
//其它kavU42VRUs
}
}
if(flag==1>//如果标志等于1,说明为单人游戏
{
Single(value>。
}
elseif(flag==2>//如果标志等于2,说明为双人游戏
{
Double(value>。
}
flag=0。
}
//------------------------清空棋盘或初始化棋盘-----------------------------------//y6v3ALoS89
voidFiveChess:
:
Empty(intvalue[][15],intDefault[][15]>//清空棋盘M2ub6vSTnP
{
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"。
0YujCfmUCw
cout<<"││\n"。
cout<<"│[游戏制作]:
落叶化尘│\n"。
eUts8ZQVRd
cout<<"│[联系QQ]:
775904764│\n"。
sQsAEJkW5T
cout<<"│[联系邮箱]:
lxhdjwg@│\n"。
GMsIasNXkA
cout<<"│[简单说明]:
游戏结束界面,谢谢您的使用!
│\n"。
cout<<"└—————————————————————————┘\n"。
cout<<"感谢您的使用,谢谢!
按任意键退出游戏...\n"。
system("pause>nul2>nul">。
}
boolFiveChess:
:
Introduce(>//游戏介绍
{
system("cls">。
cout<<"┌—————————————————————————┐\n"。
cout<<"│简单五子棋Ver2.1[游戏介绍界面]│\n"。
TIrRGchYzg
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"。
7EqZcWLZNX
cout<<"││\n"。
cout<<"│[游戏制作]:
落叶化尘│\n"。
lzq7IGf02E
cout<<"│[联系QQ]:
775904764│\n"。
zvpgeqJ1hk
cout<<"│[联系邮箱]:
lxhdjwg@│\n"。
NrpoJac3v1
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。
}
}
//-------------------------------选择主菜单-----------------------------//1nowfTG4KI
intFiveChess:
:
MainMenu(>
{
system("cls">。
//清屏fjnFLDa5Zo
system("title五子棋游戏By--落叶化尘QQ:
775904764">。
//修改窗口标题tfnNhnE6e5
system("color3f">。
//定义窗口颜色HbmVN777sL
system("modeconcols=56lines=20">。
//设置窗口大小V7l4jRB8Hs
cout<<"┌—————————————————————————┐\n"。
cout<<"│简单五子棋Ver2.1│\n"。
83lcPA59W9
cout<<"│[1]、单人游戏│\n"。
mZkklkzaaP
cout<<"││\n"。
cout<<"│[2]、双人游戏│\n"。
AVktR43bpw
cout<<"││\n"。
cout<<"│[3]、游戏介绍│\n"。
ORjBnOwcEd
cout<<"││\n"。
cout<<"│[4]、关于作者│\n"。
2MiJTy0dTT
cout<<"││\n"。
cout<<"│[5]、退出│\n"。
gIiSpiue7A
cout<<"└—————————————————————————┘\n"。
cout<<"请选择:
"。
intselect。
cin>>select。
returnselect。
//返回用户选择的值
}
//--------------------------------胜利界面--------------------------------//uEh0U1Yfmh
voidFiveChess:
:
Victory(intNum>
{
system("modeconcols=56lines=20">。
//设置窗口大小IAg9qLsgBX
system("cls">。
if(Num==1>
{
system("color1f">。
cout<<"┌—————————————————————————┐\n"。
cout<<"│恭喜玩家1[黑棋]获得胜利!
│\n"。
WwghWvVhPE
cout<<"││\n"。
cout<<"│[胜利玩家]:
玩家1│\n"。
asfpsfpi4k
cout<<"│[所属棋子]:
黑色│\n"。
ooeyYZTjj1
cout<<"│[祝福话语]:
不错哦^_^!
恭喜您获得了胜利!
│\n"。
cout<<"││\n"。
cout<<"└—————————————————————————┘\n"。
}
elseif(Num==2>
{
system("color2f">。
cout<<"┌—————————————————————————┐\n"。
cout<<"│恭喜玩家2[白棋]获得胜利!
│\n"。
BkeGuInkxI
cout<<"││\n"。
cout<<"│[胜利玩家]:
玩家2│\n"。
PgdO0sRlMo
cout<<"│[所属棋子]:
白色│\n"。
3cdXwckm15
cout<<"│[祝福话语]:
恭喜您获得了胜利,再接再厉哈^_^!
│\n"。
cout<<"││\n"。
cout<<"└—————————————————————————┘\n"。
}
elseif(Num==3>
{
system("color3f">。
cout<<"┌—————————————————————————┐\n"。
cout<<"│恭喜您,获得了胜利│\n"。
h8c52WOngM
cout<<"││\n"。
cout<<"│[胜利玩家]:
自己│\n"。
v4bdyGious
cout<<"│[所属棋子]:
黑色│\n"。
J0bm4qMpJ9
cout<<"│[祝福话语]:
不错哦,打败了AI,恭喜!
│\n"。
cout<<"││\n"。
cout<<"└—————————————————————————┘\n"。
}
elseif(Num==4>
{
system("color5f">。
cout<<"┌—————————————————————————┐\n"。
cout<<"│非常遗憾,您输了!
│\n"。
XVauA9grYP
cout<<"││\n"。
cout<<"│[胜利玩家]:
AI<电脑)│\n"。
bR9C6TJscw
cout<<"│[所属棋子]:
白色│\n"。
pN9LBDdtrd
cout<<"│[祝福话语]:
加油吧,下次一定要把AI打败哦!
│\n"。
cout<<"││\n"。
cout<<"└—————————————————————————┘\n"。
}
else
{
system("color5f">。
cout<<"┌—————————————————————————┐\n"。
cout<<"│势均力敌——平局│\n"。
DJ8T7nHuGT
cout<<"││\n"。
cout<<"│[胜利玩家]:
无[平局]│\n"。
QF81D7bvUA
cout<<"│[所属棋子]:
黑色或白色│\n"。
4B7a9QFw9h
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。
}
}
//----------------------------悔棋-------------------------------//ix6iFA8xoX
voidFiveChess:
:
Retract(int&x1,int&y1,int&x2,int&y2,intvalue[][15]>wt6qbkCyDE
{
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。
}Kp5zH46zRk
elseif(x1==0&&y1==14>{value[x1][y1]=2。
Record[x1][y1]=0。
}Yl4HdOAA61
elseif(x1==14&&y1==0>{value[x1][y1]=6。
Record[x1][y1]=0。
}ch4PJx4BlI
elseif(x1==14&&y1==14>{value[x1][y1]=8。
Record[x1][y1]=0。
}qd3YfhxCzo
elseif(x1==14&&(y1>0&&y1<14>>{value[x1][y1]=7。
Record[x1][y1]=0。
}E836L11DO5
elseif(y1==14&&(x1>0&&x1<14>>{value[x1][y1]=5。
Record[x1][y1]=0。
}S42ehLvE3M
elseif(x1==0&&(y1>0&&y1<14>>{value[x1][y1]=1。
Record[x1][y1]=0。
}501nNvZFis
elseif(y1==0&&(x1>0&&x1<14>>{value[x1][y1]=3。
Record[x1][y1]=0。
}jW1viftGw9
else{value[x1][y1]=4。
Record[x1][y1]=0。
}
if(x2==0&&y2==0>{value[x2][y2]=0。
Record[x2][y2]=0。
}xS0DOYWHLP
elseif(x2==0&&y2==14>{value[x2][y2]=2。
Record[x2][y2]=0。
}LOZMkIqI0w
elseif(x2==14&&y2==0>{value[x2][y2]=6。
Record[x2][y2]=0。
}ZKZUQsUJed
elseif(x2==14&&y2==14>{value[x2][y2]=8。
Record[x2][y2]=0。
}dGY2mcoKtT
elseif(x2==14&&(y2>0&&y2<14>>{value[x2][y2]=7。
Record[x2][y2]=0。
}rCYbSWRLIA
elseif(y2==14&&(x2>0&&x2<14>>{value[x1][y2]=5。
Record[x2][y2]=0。
}FyXjoFlMWh
elseif(x2==0&&(y2>0&&y2<14>>{value[x2][y2]=1。
Record[x2][y2]=0。
}TuWrUpPObX
elseif(y2==0&&(x2>0&&x2<14>>{value[x2][y2]=3。
Record[x2][y2]=0。
}7qWAq9jPqE
else{value[x2][y2]=4。
Record[x2][y2]=0。
}
cout<<"每盘最多允许悔棋6次,且最多只能回到上一步!
"。
system("pause>nul">。
}
}
//-----------------------------判断用户输入的坐标合法性-------------------------//llVIWTNQFk
intFiveChess:
:
Position(int*x,int*y,intvalue[][15]>yhUQsDgRT1
{
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表示坐标正常
}
}
//---------------------------判断该哪个玩家先走----------------------------//MdUZYnKS8I
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 五子棋 编写 控制台 CMD 命令 简单 游戏 适合 初学者 学习 代码 详细 注释