用C语言设计一个“三棋”游戏,要求使用光标控件。想要程序源代码!
# include & lt字符串& gt
使用命名空间std
类CGobang //棋子类
{
私人:
char chSort//棋子的类别
int nWin//赢棋的数量
int nLose//输棋次数
静态int nDraw//抽签次数
静电充电电路板[3][3];//棋盘
静态int nSize//棋盘的大小nSize X nSize
公共:
CGobang(char chsort) //构造函数,确定海贼王的类别。
{
chSort = chsort
nWin = nLose = nDraw = 0;
}
void play turn(void);//取1移动。
int Judge();//判断它们是否连成一条线,如果是,返回1,否则返回0。
void Win(无效);//赢棋
void Lose(无效);//输棋
静态空画(void);//绘制
void PrintInfo(void);//输出整体情况
静态空印刷板(void);//输出棋盘
static int get full(void);//判断棋盘是否满了棋子。
静态void initial board(void);//初始化棋盘
};
char CGO bang::ach board[3][3];
int CGO bang::nSize = 3;
int CGO bang::nDraw = 0;
void CGobang::Draw()
{
cout & lt& lt" \ n \ n \ t \铁!\ n \ n ";
ndraw++;
}
voidccgobang::initial board()//初始化棋盘。
{
for(int I = 0;我& ltnSizei++)
for(int j = 0;j & ltnSizej++)
ach board[I][j]=“”;
}
voidccgobang::print board()//输出棋盘
{
cout & lt& ltendl
cout & lt& lt" 1 2 3 " & lt;& ltendl
cout & lt& lt" 1 " & lt;& ltach board[0][0]& lt;& lt" | " & lt& ltach board[0][1]& lt;& lt" | " & lt& ltach board[0][2]& lt;& ltendl
cout & lt& lt"-|-|-" & lt;& ltendl
cout & lt& lt" 2 " & lt& ltach board[1][0]& lt;& lt" | " & lt& ltach board[1][1]& lt;& lt" | " & lt& ltach board[1][2]& lt;& ltendl
cout & lt& lt"-|-|-" & lt;& ltendl
cout & lt& lt" 3 " & lt& ltach board[2][0]& lt;& lt" | " & lt& ltach board[2][1]& lt;& lt" | " & lt& ltach board[2][2]& lt;& ltendl
cout & lt& ltendl
cout & lt& ltendl
}
Int CGobang::GetFull() //判断棋盘是否满了棋子,如果是,返回1。
{
for(int I = 0;我& ltnSizei++)
for(int j = 0;j & ltnSizej++)
if(achBoard[i][j]!=' ')
返回0;
返回1;
}
Void CGobang::Win() //赢棋。
{
cout & lt& lt" \ n \ n \ t \ t " & lt& ltchSort & lt& lt“党赢了!\ n \ n ";
nwin++;
}
Void CGobang::Lose() //输棋
{
nlose++;
}
void CGO bang::play turn(void)//Take 1 move。
{
int nRow,nCol
cout & lt& lt“现在是时候了”
做
{
CIN & gt;& gtnRow & gt& gtnCol//输入坐标
if(nRow & gt;nSize | | nCol & gtNSize) //判断坐标出界。
cout & lt& lt输入坐标越界,x和y的范围应小于或等于
else if(ach board[nRow-1][nCol-1]!= ' ')//判断坐标是否合理
cout & lt& lt“棋盘(”
其他
{
ach board[nRow-1][nCol-1]= ch sort;//把棋子放到坐标上。
打破;//退出循环
}
} while(1);
}
Int CGobang::Judge() //判断棋子是否连成一条线,如果是,返回1。
{//下面是可能连成一条线的各种情况。
if(ach board[0][0]= = ch sort & amp;& ampach board[1][1]= = ch sort & amp;& ampachBoard[2][2]==chSort)
返回1;
else if(ach board[2][0]= = ch sort & amp;& ampach board[1][1]= = ch sort & amp;& ampachBoard[0][2]==chSort)
返回1;
else if(ach board[0][0]= = ch sort & amp;& ampach board[1][0]= = ch sort & amp;& ampachBoard[2][0]==chSort)
返回1;
else if(ach board[0][1]= = ch sort & amp;& ampach board[1][1]= = ch sort & amp;& ampachBoard[2][1]==chSort)
返回1;
else if(ach board[0][2]= = ch sort & amp;& ampach board[1][2]= = ch sort & amp;& ampachBoard[2][2]==chSort)
返回1;
else if(ach board[0][0]= = ch sort & amp;& ampach board[0][1]= = ch sort & amp;& ampachBoard[0][2]==chSort)
返回1;
else if(ach board[1][0]= = ch sort & amp;& ampach board[1][1]= = ch sort & amp;& ampachBoard[1][2]==chSort)
返回1;
else if(ach board[2][0]= = ch sort & amp;& ampach board[2][1]= = ch sort & amp;& ampachBoard[2][2]==chSort)
返回1;
其他
返回0;//如果没有连成一条线,则返回0。
}
Void CGobang::PrintInfo(void) //打印大致情况。
{
cout & lt& lt" Side " & lt& ltchSort & lt& lt“方* * *打算赢”
}
Void PrintRule(void) //打印规则
{
cout & lt& lt" \ t \ t \欢迎来到三子朱利安游戏!"& lt& ltendl & lt& ltendl
cout & lt& lt" \游戏规则:"
cout & lt& lt" \t1。每1步输入方格的x、y坐标下棋,回车\ n ";
cout & lt& lt" \t2。如果有1条边,前三块连成一条线,则判定胜者\ n ";
cout & lt& lt" \t3。当棋盘上已满棋子但仍无赢家时,为和棋\ n ";
cout & lt& lt" \t4。x党第一\ n ";
cout & lt& lt" \ n \ n \ t \请按任意键开始下棋!\ n \ n ";
}
int judge play(CGO bang & amp;西得克斯、高邦和。SideO)//1每一步的输赢,有结果就返回1。
{
如果(SideX。Judge()) //X胜。
{
SideX。win();
SideO。lose();
返回1;
}
Else if(SideO。Judge()) //O胜。
{
SideO。win();
SideX。lose();
返回1;
}
其他
返回0;
}
无效游戏(CGobang & amp西得克斯、高邦和。SideO) //开始游戏
{
while(1)
{
CGO bang::print board();//输出棋盘
SideX。play turn();//x方下棋
If(JudgePlay(SideX,SideO)) //判断你是赢是输。
打破;
If(CGobang::GetFull()) //判断是否平局。
{
CGO bang::Draw();
打破;
}
CGO bang::print board();//输出棋盘
SideO。play turn();//O下棋。
If(JudgePlay(SideX,SideO)) //判断你是赢是输。
打破;
If(CGobang::GetFull()) //判断是否平局。
{
CGO bang::Draw();
打破;
}
}
}
int main(void)
{
CGobang SideX('X '),SideO(' O ');//定义两个棋子类对象,分别代表X方和O方。
print rule();
CIN . get();
字符串strChoice
做
{
CGO bang::initial board();//初始化棋盘
Play(SideX,SideO);//开始下一个游戏
cout & lt& lt"您想继续吗(是/否)?";
CIN & gt;& gtstrChoice
} while(str choice = = " Y " | | str choice = = " Y ");
SideX。PrintInfo();
SideO。PrintInfo();
cout & lt& lt" \ n \ n \欢迎再次使用三子朱利安游戏!"& lt& ltendl & lt& ltendl
返回0;
}