五子棋的原代码(3) - 第八基地

软件开发的家园,编程爱好者的天地.

现在是:北京时间 2016/4/14 上午11:50:51 星期四

设为首页  |  加入收藏  |  网站地图

当前位置: 第八基地首页 > 游戏开发 >
五子棋的原代码(3)
发布于:第八基地 来源:互联网 作者:天堂路上 时间:2016-04-24 点击:294
if(y==0)
{
putch(CROSSU);
return;
}

/*下边界交叉点*/
if(y==18)
{
putch(CROSSD);
return;
}

/*棋盘中间的交叉点*/
putch(CROSS);
}

/*交换行棋方*/
intChangeOrder(void)
{
if(gPlayOrder==CHESS1)
gPlayOrder=CHESS2;
else
gPlayOrder=CHESS1;

return(gPlayOrder);
}

/*获取按键值*/
intGetKey(void)
{
charlowbyte;
intpress;

while(bioskey(1)==0)
; /*如果用户没有按键,空循环*/

press=bioskey(0);
lowbyte=press&0xff;
press=press&0xff00 toupper(lowbyte);
return(press);
}

/*落子错误处理*/
voidDoError(void)
{
sound(1200);
delay(50);
nosound();
}

/*赢棋处理*/
voidDoWin(intOrder)
{
sound(1500);delay(100);
sound(0); delay(50);
sound(800);delay(100);
sound(0); delay(50);
sound(1500);delay(100);
sound(0); delay(50);
sound(800);delay(100);
sound(0); delay(50);
nosound();

textcolor(RED BLINK);
gotoxy(25,20);
if(Order==CHESS1)
cputs("PLAYER1WIN!");
else
cputs("PLAYER2WIN!");
gotoxy(25,21);
cputs(" \\<^ ^>/");
getch();
}

/*走棋*/
int ChessGo(intOrder,structpointCursor)
{
/*判断交叉点上有无棋子*/
if(gChessBoard[Cursor.x][Cursor.y]==CHESSNULL)
{
/*若没有棋子,则可以落子*/
gotoxy(Cursor.x MAPXOFT,Cursor.y MAPYOFT);
textcolor(LIGHTBLUE);
putch(Order);
gotoxy(Cursor.x MAPXOFT,Cursor.y MAPYOFT);
gChessBoard[Cursor.x][Cursor.y]=Order;
returnTRUE;
}
else
returnFALSE;
}

/*判断当前行棋方落子后是否赢棋*/
int JudgeWin(intOrder,structpointCursor)
{
inti;
for(i=0;i<4;i )
/*判断在指定方向上是否有连续5个行棋方的棋子*/
if(JudgeWinLine(Order,Cursor,i))
returnTRUE;
returnFALSE;
}

/*判断在指定方向上是否有连续5个行棋方的棋子*/
int JudgeWinLine(intOrder,structpointCursor,intdirection)
{
inti;
structpointpos,dpos;
constinttestnum=5;
intcount;

switch(direction)
{
case0:/*在水平方向*/
pos.x=Cursor.x-(testnum-1);
pos.y=Cursor.y;
dpos.x=1;
dpos.y=0;
break;
case1:/*在垂直方向*/
pos.x=Cursor.x;
pos.y=Cursor.y-(testnum-1);
dpos.x=0;
dpos.y=1;
break;
case2:/*在左下至右上的斜方向*/
pos.x=Cursor.x-(testnum-1);
pos.y=Cursor.y (testnum-1);
dpos.x=1;
dpos.y=-1;
break;
case3:/*在左上至右下的斜方向*/
pos.x=Cursor.x-(testnum-1);
pos.y=Cursor.y-(testnum-1);
dpos.x=1;
dpos.y=1;
break;
}

count=0;
for(i=0;i<testnum*2 1;i )
{
if(pos.x>=0&&pos.x<=18&&pos.y>=0&&pos.y<=18)
{
if(gChessBoard[pos.x][pos.y]==Order)
{
count ;
if(count>=testnum)
returnTRUE;
}
else
count=0;
}
pos.x =dpos.x;
pos.y =dpos.y;
}

returnFALSE;
}

/*移动光标*/
voidMoveCursor(intOrder,intpress)
对我有帮助
(0)
0%
对我没帮助
(0)
0%
返回顶部
在线反馈
在线反馈