该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
sor.yes[i][j]==sor.yes[i+1][j+1]&&
sor.yes[i+1][j+1]==sor.yes[i+2][j+2]&&
sor.yes[i+2][j+2]==sor.yes[i+3][j+3]&&
sor.yes[i+3][j+3]==sor.yes[i+4][j+4])||
((i+4)4&&sor.yes[i][j]!=0&&
sor.yes[i][j]==sor.yes[i+1][j-1]&&
sor.yes[i+1][j-1]==sor.yes[i+2][j-2]&&
sor.yes[i+2][j-2]==sor.yes[i+3][j-3]&&
sor.yes[i+3][j-3]==sor.yes[i+4][j-4]))
{
if(sor.yes[i][j]==1)
sor.ok=1;
else
sor.ok=2;
break;
}
}
if(sor.ok!=0)
break;
}
}
void gameover(void)
{
if(sor.ok==1)
{
drawmat(bai64H,64,488,119,0);
drawmat(bai64H,64,490,120,RED);
}
else
{
drawmat(hong64H,64,488,119,0);
drawmat(hong64H,64,490,120,RED);
}
drawmat(fang64H,64,488,189,0);
drawmat(huo64H,64,488,259,0);
drawmat(sheng64H,64,488,329,0);
drawmat(fang64H,64,490,190,RED);
drawmat(huo64H,64,490,260,RED);
drawmat(sheng64H,64,490,330,RED);
}
void xandy(void)/*显示光标的横纵坐标*/
{
char str1[10],str2[10];
setfillstyle(SOLID_FILL,7);
bar(50,440,205,470);
setcolor(RGB(128,255,255));
sprintf(str1,"X:%d",(sor.x-30)/20);
sprintf(str2,"Y:%d",(sor.y-30)/20);
outtextxy(60,450,str1);
outtextxy(135,450,str2);
}
void gameplay(void)
{
for(i=1;i
for(j=1;j
sor.yes[i][j]=0;
sor.kao=1; /*白棋先走*/
sor.ok=0;/*双方胜负未分*/
sor.x=(N-1)*10+40;
sor.y=(N-1)*10+40;/*初始化光标,将光标定位在棋盘的中心*/
setcolor(WHITE);
place();
while(1)
{
xandy();
key=getch();
if(key==esc)
break;
/*白棋键盘移动*/
else if(key==up&&sor.y>50&&sor.kao==1)
{
setcolor(0);place();
sor.y-=20;
}
else if(key==down&&sor.y
{
setcolor(0);place();
sor.y+=20;
}
else if(key==left&&sor.x>50&&sor.kao==1)
{
setcolor(0);place();
sor.x-=20;
}
else if(key==right&&sor.x
{
setcolor(0);place();
sor.x+=20;
}
/*红方键盘移动*/
else if(key==W&&sor.y>50&&sor.kao==2)
{
setcolor(0);place();
sor.y-=20;
}
else if(key==S&&sor.y
{
setcolor(0);place();
sor.y+=20;
}
else if(key==A&&sor.x>50&&sor.kao==2)
{
setcolor(0);place();
sor.x-=20;
}
else if(key==D&&sor.x
{
setcolor(0);place();
sor.x+=20;
}
else if(key==space&&sor.yes[(sor.x-30)/20][(sor.y-30)/20]==0&&sor.kao==2)
{
setcolor(RGB(255,128,255));
for(i=1;i<=9;i++)
{
circle(sor.x,sor.y,i);
Sleep(10);
}
sor.yes[(sor.x-30)/20][(sor.y-30)/20]=2;
sor.kao=1;
win();
if(sor.ok!=0)
{
gameover();
break;
}
}
else if(key==enter&&sor.yes[(sor.x-30)/20][(sor.y-30)/20]==0&&sor.kao==1)
{
setcolor(WHITE);
for(i=1;i<=9;i++)
{
circle(sor.x,sor.y,i);
Sleep(10);
}
sor.yes[(sor.x-30)/20][(sor.y-30)/20]=1;
sor.kao=2;
win();
if(sor.ok!=0)
{
gameover();
break;
}
}
else
continue;
if(sor.ok!=0)
break;
if(sor.kao==1)
setcolor(WHITE);
else
setcolor(RGB(255,128,255));
place();
}/*endwhile(1)*/
}
void main()
{
while(1)
{
init();
cleardevice();
clew();
drawqp();
setfillstyle(SOLID_FILL,7);
bar(430,50,620,410);
show();
gameplay();
setcolor(WHITE);
outtextxy(230,450,"继续吗(Y/N)?");
while(1)
{
key=getch();
if(key==Y||key==n||key==esc)
break;
}
if(key==n||key==esc)
break;
}
closegraph();
}