用C语言设计一个“三棋”游戏,要求使用光标控件。想要程序源代码!

# include & ltiostream & gt

# 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;

}