C语言版井字棋文档格式.docx
《C语言版井字棋文档格式.docx》由会员分享,可在线阅读,更多相关《C语言版井字棋文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
//清空之前的选择框
intJudge(intchoice,charsymbol);
//判断输赢返回值0为无结果,1为获胜,2为平局
intFuncx(intchoice);
//将标号转换为行号
intFuncy(intchoice);
//将标号转换为列号
voidEnd(charsymbol);
//结束
intFound();
//返回第一个没有棋子的位置的编号
chara[31][64];
//用数组存放棋盘和棋子,a[行][列]
intb=0;
//棋子个数
intmain(){
charplayer;
intchoice;
system("
title井字棋"
);
//设置标题
modeconcols=64lines=35"
//设置窗口大小
color70"
//设置颜色
while
(1){
printf("
\n\n\n\n\n\n\t\t\t井\t字\t棋"
\n\n\n\n\n\n\n\n\t\t\t1.玩家先手\n\n\t\t\t2.电脑先手\n\n\t\t\t3.帮助\n\n\t\t\t4.退出\n\n\n\n\n\t\t请输入:
"
player=getch();
if(player=='
1'
){
Init();
Block(5);
choice=5;
Play(player,choice);
}elseif(player=='
2'
3'
Help();
getch();
system("
cls"
continue;
4'
return0;
}else{
printf("
\n\n\t\t输入错误请重新输入!
"
Sleep(1000);
}
}
return0;
}
voidHelp(){
printf("
\n\n\n\n\n\n\n\n\n\t\t\t帮助\n\n\n"
\t'
W'
上移,'
S'
下移,'
A'
左移,'
D'
右移\n\n"
\t\t游戏中按'
退出"
\n\n\n\n\t\t按任意键退出"
intPlay(charplayer,intchoice){//对弈
charget;
charsymbol;
intc=0;
//Judge得出的结果
system("
//每次循环清屏一次
Display();
){//玩家下棋
while
(1){//确定要下的位置
if((get=getch())!
='
'
if(get=='
){
system("
return0;
}elseif((get=='
w'
||get=='
)&
&
choice-3>
=1){
Clear(choice);
choice=choice-3;
}elseif((get=='
s'
)&
choice+3<
=9){
choice=choice+3;
a'
(choice+2)/3==(choice+1)/3){
choice-=1;
d'
(choice-1)/3==choice/3){
choice+=1;
}else{
continue;
}
Block(choice);
system("
Display();
}
else{
if(a[((choice-1)/3)*10+2][((choice-1)%3)*21+4]!
printf("
该位置已有其他棋子!
break;
}//while结束
b++;
Black(choice);
player='
0'
;
symbol='
#'
}//if结束
else{//电脑下棋
choice=Found();
Block(choice);
White(choice);
*'
}
if((c=Judge(choice,symbol))!
=0){//判断输赢
if(c==2)
symbol='
c=0;
End(symbol);
break;
voidInit(){//初始化棋盘
intx=0,y=0;
inti='
for(x=0;
x<
31;
x++)
{
for(y=0;
y<
64;
y++)
{
if((y==Funcy
(1)||y==Funcy
(2)||y==Funcy(3)||y==Funcy
(2)+Funcy(3)))
{
if(x==Funcx
(1)||x==Funcx(4)||x==Funcx(7)||x==Funcx(4)+Funcx(7))
a[x][y]='
+'
else
|'
}
elseif(x==Funcx
(1)||x==Funcx(4)||x==Funcx(7)||x==Funcx(4)+Funcx(7))
a[x][y]='
-'
else
//for(x=1;
=7;
x=x+3)//在每个格子的左上角添加序号,范围1~9
//{
//for(y=1;
=3;
//{
//a[(Funcx(x)+1)][(Funcy(y)+1)]=i;
//i++;
//}
//}
voidDisplay(){//打印棋盘
%c"
a[x][y]);
voidBlock(intchoice){//添加选择框
intx,y;
for(x=Funcx(choice)+1;
Funcx(choice)+10;
for(y=Funcy(choice)+2;
Funcy(choice)+20;
if(x==Funcx(choice)+1||x==Funcx(choice)+9)
if(y==Funcy(choice)+2||y==Funcy(choice)+19)
elseif(y<
Funcy(choice)+7||y>
Funcy(choice)+14)
elseif(x<
Funcx(choice)+4||x>
Funcx(choice)+6)
voidClear(intchoice){//清空选择框
intx,y,i;
for(i=1;
i<
=9;
i++){
if(a[Funcx(choice)+1][Funcy(choice)+2]=='
i!
=choice){
for(x=Funcx(choice)+1;
for(y=Funcy(choice)+2;
if(x==Funcx(choice)+1||x==Funcx(choice)+9)
{
if(y==Funcy(choice)+2||y==Funcy(choice)+19)
a[x][y]='
elseif(y<
elseif(x<
voidBlack(choice){//添加黑棋
for(x=Funcx(choice)+2;
Funcx(choice)+9;
for(y=Funcy(choice)+4;
Funcy(choice)+18;
if(x==Funcx(choice)+2||x==Funcx(choice)+8)
elseif(y==Funcy(choice)+4||y==Funcy(choice)+17)
voidWhite(choice){//添加白棋
intx;
intd=4;
=Funcx(choice)+8;
a[x][Funcy(choice)+d]='
a[x][Funcy(choice)+20-d]='
d=d+2;
intJudge(intchoice,charsymbol){//判断输赢返回值0为无结果,1为获胜,2为平局
if(
(
(a[Funcx(choice)+2][Funcy(choice)+4]==a[Funcx(choice+3)+2][Funcy(choice)+4]
&
a[Funcx(choice+3)+2][Funcy(choice)+4]==a[Funcx(choice+6)+2][Funcy(choice)+4])
||
(a[Funcx(choice)+2][Funcy(choice)+4]==a[Funcx(choice)+2][Funcy(choice+1)+4]
a[Funcx(choice)+2][Funcy(choice+1)+4]==a[Funcx(choice)+2][Funcy(choice+2)+4])
)
a[Funcx(5)+2][Funcy(5)+4]==symbol
(a[Funcx
(1)+2][Funcy
(1)+4]==a[Funcx(5)+2][Funcy(5)+4]
a[Funcx(5)+2][Funcy(5)+4]==a[Funcx(9)+2][Funcy(9)+4])
(a[Funcx(3)+2][Funcy(3)+4]==a[Funcx(5)+2][Funcy(5)+4]
a[Funcx(5)+2][Funcy(5)+4]==a[Funcx(7)+2][Funcy(7)+4])
return1;
if(b==9)
return2;
intFuncx(intchoice){//将标号转换为行号
return(((choice-1)/3)%3)*10;
intFuncy(intchoice){//将标号转换为列号
return((choice-1)%3)*21;
voidEnd(charsymbol){//结束
Display();
if(symbol=='
)
\t\t\t电脑胜利!
\n\n"
elseif(symbol=='
\t\t\t玩家胜利!
else
\t\t\t平局!
b=0;
\t\t\t按任意键返回菜单"
getch();
intFound(){//返回第一个没有棋子的位置的编号
inti;
i++)
if(a[Funcx(i)+2][Funcy(i)+4]=='
returni;