五子棋游戏.docx
- 文档编号:11961860
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:20
- 大小:16.78KB
五子棋游戏.docx
《五子棋游戏.docx》由会员分享,可在线阅读,更多相关《五子棋游戏.docx(20页珍藏版)》请在冰豆网上搜索。
五子棋游戏
#include
#include
#include
#include
#include
intq[28][28];
intx,y;
intspace,choice;
intgotoxy(intx,inty)
{
COORDcd;
cd.X=x;cd.Y=y;
returnSetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),cd);
}
inttextcolor(shortiColor)
{
HANDLEhd=GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFOcsbInfo;
GetConsoleScreenBufferInfo(hd,&csbInfo);
returnSetConsoleTextAttribute(hd,iColor|(csbInfo.wAttributes&~0xF));
}
intGameover()
{
gotoxy(3,22);
printf("是否继续(y/n),Yes/No?
");
choice=_getch();
if(choice=='y'||choice=='Y')
return1;
elseif(choice=='n'||choice=='N')
return0;
return-1;
}
voidDelay()
{
inti,j;
for(i=0;i<3000;i++)
for(j=0;j<9000;j++);
}
intStartpicture()
{
inti,j,k;
system("cls");
for(i=0,k=100;i<=100,k>=0;i++,k--)
{
textcolor(4);
gotoxy(15,6);
printf("五子棋游戏");
gotoxy(18,10);
printf("%%%d",i);
gotoxy(10,12);
for(j=1;j<=i/10;j++)
printf("■");
for(j=k/10;j>=1;j--)
printf("□");
Delay();
}
return0;
}
intHumanstep()
{
intch;
space=0;
ch=_getch();
if(ch=='w'||ch=='W')
{
if(y-1<4)
y=23;
else
--y;
}
if(ch=='s'||ch=='S')
{
if(y+1>23)
y=4;
else
++y;
}
if(ch=='a'||ch=='A')
{
if(x-1<4)
x=23;
else
--x;
}
if(ch=='d'||ch=='D')
{
if(x+1>23)
x=4;
else
++x;
}
if(ch==''&&q[x][y]==0)
{
q[y][x]=1;
space=1;
}
return0;
}
voidInitialize()
{
inti,j;
for(i=0;i<27;i++)
for(j=0;j<27;j++)
q[i][j]=0;
x=y=13;
}
voidDrawpicture()
{
inti,j;
for(i=4;i<24;i++)
{
for(j=4;j<24;j++)
{
if(i==y&&j==x)
{
textcolor(15);
if(q[i][j]==1)
printf("■");
elseif(q[i][j]==2)
printf("□");
else
printf("◎");
}
elseif(q[i][j]==2)
{
textcolor(12);
printf("●");
}
elseif(q[i][j]==1)
{
textcolor(10);
printf("●");
}
else
{
textcolor
(2);
if(i==4&&j==4)
printf("┏");
elseif(i==4&&j==23)
printf("┓");
elseif(i==23&&j==4)
printf("┗");
elseif(i==23&&j==23)
printf("┛");
elseif(i==4)
printf("┳");
elseif(j==4)
printf("┣");
elseif(j==23)
printf("┫");
elseif(i==23)
printf("┻");
else
printf("╋");
}
}
printf("\n");
}
gotoxy(45,1);
printf("五子棋游戏之人机对战");
gotoxy(45,4);
printf("w:
向上s:
向下a:
向左d:
向右");
gotoxy(45,6);
printf("空格键下棋");
gotoxy(45,10);
printf("天子门客制作");
}
intIswin(intw,inti,intj)
{
intm,n;
intflag=1;
for(n=0;n<5;n++)///shangxia
{
flag=1;
for(m=4;m>=0;m--)
{
if(q[i-m+n][j]!
=w)
flag=0;
}
if(flag)
return1;
}
/////////////////////////////////////
for(n=0;n<5;n++)
{
flag=1;
for(m=4;m>=0;m--)
{
if(q[i][j-m+n]!
=w)
flag=0;
}
if(flag)
return1;
}
///////////////////////////////////////////
for(n=0;n<5;n++)///shangxia
{
flag=1;
for(m=4;m>=0;m--)
{
if(q[i-m+n][j-m+n]!
=w)
flag=0;
}
if(flag)
return1;
}
/////////////////////////////////////////////
for(n=0;n<5;n++)
{
flag=1;
for(m=4;m>=0;m--)
{
if(q[i-m+n][j+m-n]!
=w)
flag=0;
}
if(flag)
return1;
}
return0;
////////////////////////////////////////
}
intComputerthink()
{
inti,j;
for(i=4;i<=23;i++)
for(j=4;j<=23;j++)
{
///////////////gongji/////////////////////////////////////////自己四字了,攻击
if(q[i][j]==2&&q[i][j+1]==2&&q[i][j+2]==2&&q[i][j+3]==2&&q[i][j+4]==0)
{
q[i][j+4]=2;
x=j+4;
y=i;
return0;
}
elseif(q[i][j]==2&&q[i+1][j]==2&&q[i+2][j]==2&&q[i+3][j]==2&&q[i+4][j]==0)
{
q[i+4][j]=2;
x=j;
y=i+4;
return0;
}
elseif(q[i][j]==2&&q[i+1][j+1]==2&&q[i+2][j+2]==2&&q[i+3][j+3]==2&&q[i+4][j+4]==0)
{
q[i+4][j+4]=2;
x=j+4;
y=i+4;
return0;
}
elseif(q[i][j]==2&&q[i+1][j-1]==2&&q[i+2][j-2]==2&&q[i+3][j-3]==2&&q[i+4][j-4]==0)
{
q[i+4][j-4]=2;
x=j-4;
y=i+4;
return0;
}
}
////////////////duifang3////////////////////////////////////对方3子了,防御
for(i=4;i<=23;i++)
for(j=4;j<=23;j++)
{
if(q[i][j]==1&&q[i][j+1]==1&&q[i][j+2]==1&&q[i][j+3]==0)
{
q[i][j+3]=2;
x=j+3;
y=i;
return0;
}
elseif(q[i][j]==0&&q[i][j+1]==1&&q[i][j+2]==1&&q[i][j+3]==1)
{
q[i][j]=2;
x=j;
y=i;
return0;
}
elseif(q[i][j]==1&&q[i+1][j]==1&&q[i+2][j]==1&&q[i+3][j]==0)
{
q[i+3][j]=2;
x=j;
y=i+3;
return0;
}
elseif(q[i][j]==0&&q[i+1][j]==1&&q[i+2][j]==1&&q[i+3][j]==1)
{
q[i][j]=2;
x=j;
y=i;
return0;
}
elseif(q[i][j]==1&&q[i+1][j+1]==1&&q[i+2][j+2]==1&&q[i+3][j+3]==0)
{
q[i+3][j+3]=2;
x=j+3;
y=i+3;
return0;
}
elseif(q[i][j]==0&&q[i+1][j+1]==1&&q[i+2][j+2]==1&&q[i+3][j+3]==1)
{
q[i][j]=2;
x=j;
y=i;
return0;
}
elseif(q[i][j]==1&&q[i+1][j-1]==1&&q[i+2][j-2]==1&&q[i+3][j-3]==0)
{
q[i+3][j-3]=2;
x=j-3;
y=i+3;
return0;
}
elseif(q[i][j]==0&&q[i+1][j-1]==1&&q[i+2][j-2]==1&&q[i+3][j-3]==1)
{
q[i][j]=2;
x=j;
y=i;
return0;
}
elseif(q[i][j]==1&&q[i-1][j-1]==1&&q[i-2][j-2]==1&&q[i-3][j-3]==0)
{
q[i-3][j-3]=2;
x=j-3;
y=i-3;
return0;
}
elseif(q[i][j]==0&&q[i-1][j-1]==1&&q[i-2][j-2]==1&&q[i-3][j-3]==1)
{
q[i][j]=2;
x=j;
y=i;
return0;
}
}
///////////////////////////////////////////////////自己三字了,使之变四字
for(i=4;i<=23;i++)
for(j=4;j<=23;j++)
{
if(q[i][j]==2&&q[i][j+1]==2&&q[i][j+2]==2&&q[i][j+3]==0)
{
q[i][j+3]=2;
x=j+3;
y=i;
return0;
}
elseif(q[i][j]==2&&q[i+1][j]==2&&q[i+2][j]==2&&q[i+3][j]==0)
{
q[i+3][j]=2;
x=j;
y=i+3;
return0;
}
elseif(q[i][j]==2&&q[i+1][j+1]==2&&q[i+2][j+2]==2&&q[i+3][j+3]==0)
{
q[i+3][j+3]=2;
x=j+3;
y=i+3;
return0;
}
elseif(q[i][j]==2&&q[i+1][j-1]==2&&q[i+2][j-2]==2&&q[i+3][j-3]==0)
{
q[i+3][j-3]=2;
x=j-3;
y=i+3;
return0;
}
elseif(q[i][j]==0&&q[i+1][j-1]==2&&q[i+2][j-2]==2&&q[i+3][j-3]==2)
{
q[i][j]=2;
x=j;
y=i;
return0;
}
}
///////////ziji/2222/////////////////////////////////////////////自己二字了使之变三字
for(i=4;i<=23;i++)
for(j=4;j<=23;j++)
{
if(q[i][j]==2&&q[i][j+1]==2&&q[i][j+2]==0)
{
q[i][j+2]=2;
x=j+2;
y=i;
return0;
}
elseif(q[i][j]==2&&q[i+1][j]==2&&q[i+2][j]==0)
{
q[i+2][j]=2;
x=j;
y=i+2;
return0;
}
elseif(q[i][j]==2&&q[i+1][j+1]==2&&q[i+2][j+2]==0)
{
q[i+2][j+2]=2;
x=j+2;
y=i+2;
return0;
}
elseif(q[i][j]==2&&q[i+1][j-1]==2&&q[i+2][j-2]==0)
{
q[i+2][j-2]=2;
x=j-2;
y=i+2;
return0;
}
elseif(q[i][j]==2&&q[i+1][j+1]==0&&q[i+2][j+2]==2)
{
q[i+1][j+1]=2;
x=j+1;
y=i+1;
return0;
}
}
//////////11111/zijidezi////////////////////////////////自己一字使之二字
for(i=4;i<=23;i++)
for(j=4;j<=23;j++)
{
if(q[i][j]==2&&q[i+1][j]==0)
{
q[i+1][j]=2;
x=j;
y=i+1;
return0;
}
elseif(q[i][j]==2&&q[i][j+1]==0)
{
q[i][j+1]=2;
x=j+1;
y=i;
return0;
}
elseif(q[i][j]==2&&q[i+1][j+1]==0)
{
q[i+1][j+1]=2;
x=j+1;
y=i+1;
return0;
}
}
////////////////////////////////////////////只有一字是下棋
for(i=4;i<=23;i++)
for(j=4;j<=23;j++)
{
if(q[i][j]==1&&q[i+1][j]==0)
{
q[i+1][j]=2;
x=j;
y=i+1;
return0;
}
elseif(q[i][j]==1&&q[i][j+1]==0)
{
q[i][j+1]=2;
x=j+1;
y=i;
return0;
}
}
return0;
}
voidComputerstep()
{
Computerthink();
system("cls");
Drawpicture();
}
intmain()
{
loop:
Startpicture();
Initialize();
while
(1)
{
system("cls");
Drawpicture();
/////////////////////////////////////////
Humanstep();
if(Iswin(1,y,x))
{
textcolor(11);
gotoxy(3,21);
printf("\\(^o^)/你赢了,好棒!
!
\n");
if(Gameover())
gotoloop;
else
exit(0);
}
//////////////////////////
if(space)
{
Computerstep();
if(Iswin(2,y,x))
{
textcolor(11);
gotoxy(3,21);
printf("O(∩_∩)O哈哈!
!
你输了诶!
\n");
if(Gameover())
gotoloop;
else
exit(0);
}
}
}
return0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 游戏