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

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

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

当前位置: 第八基地首页 > 游戏开发 >
五子棋的原代码(2)
发布于:第八基地 来源:互联网 作者:天堂路上 时间:2016-04-24 点击:313
while(1)
{
press=GetKey(); /*获取用户的按键值*/
switch(CheckKey(press))/*判断按键类别*/
{
/*是退出键*/
caseKEYEXIT:
clrscr(); /*清屏*/
bOutWhile=TRUE;
break;

/*是落子键*/
caseKEYFALLCHESS:
if(ChessGo(gPlayOrder,gCursor)==FALSE)/*走棋*/
DoError(); /*落子错误*/
else
{
DoOK(); /*落子正确*/

/*如果当前行棋方赢棋*/
if(JudgeWin(gPlayOrder,gCursor)==TRUE)
{
DoWin(gPlayOrder);
bOutWhile=TRUE; /*退出循环标志置为真*/
}
/*否则*/
else
/*交换行棋方*/
ChangeOrder();
}
break;

/*是光标移动键*/
caseKEYMOVECURSOR:
MoveCursor(gPlayOrder,press);
break;

/*是无效键*/
caseKEYINVALID:
break;
}

if(bOutWhile==TRUE)
break;
}

/*游戏结束*/
EndGame();
}
/**********************************************************/

/*界面初始化,数据初始化*/
voidInit(void)
{
inti,j;
char*Msg[]=
{
"Player1key:",
" UP----w",
" DOWN--s",
" LEFT--a",
" RIGHT-d",
" DO----space",
"",
"Player2key:",
" UP----up",
" DOWN--down",
" LEFT--left",
" RIGHT-right",
" DO----ENTER",
"",
"exitgame:",
" ESC",
NULL,
};

/*先手方为1号玩家*/
gPlayOrder=CHESS1;
/*棋盘数据清零,即棋盘上各点开始的时候都没有棋子*/
for(i=0;i<19;i )
for(j=0;j<19;j )
gChessBoard[i][j]=CHESSNULL;
/*光标初始位置*/
gCursor.x=gCursor.y=0;

/*画棋盘*/
textmode(C40);
DrawMap();

/*显示操作键说明*/
i=0;
textcolor(BROWN);
while(Msg[i]!=NULL)
{
gotoxy(25,3 i);
CPUts(Msg[i]);
i ;
}

/*显示当前行棋方*/
ShowOrderMsg(gPlayOrder);
/*光标移至棋盘的左上角点处*/
gotoxy(gCursor.x MAPXOFT,gCursor.y MAPYOFT);
}

/*画棋盘*/
voidDrawMap(void)
{
inti,j;

clrscr();

for(i=0;i<19;i )
for(j=0;j<19;j )
DrawCross(i,j);

}

/*画棋盘上的交叉点*/
voidDrawCross(intx,inty)
{
gotoxy(x MAPXOFT,y MAPYOFT);
/*交叉点上是一号玩家的棋子*/
if(gChessBoard[x][y]==CHESS1)
{
textcolor(LIGHTBLUE);
putch(CHESS1);
return;
}
/*交叉点上是二号玩家的棋子*/
if(gChessBoard[x][y]==CHESS2)
{
textcolor(LIGHTBLUE);
putch(CHESS2);
return;
}

textcolor(GREEN);

/*左上角交叉点*/
if(x==0&&y==0)
{
putch(CROSSLU);
return;
}

/*左下角交叉点*/
if(x==0&&y==18)
{
putch(CROSSLD);
return;
}

/*右上角交叉点*/
if(x==18&&y==0)
{
putch(CROSSRU);
return;
}

/*右下角交叉点*/
if(x==18&&y==18)
{
putch(CROSSRD);
return;
}

/*左边界交叉点*/
if(x==0)
{
putch(CROSSL);
return;
}

/*右边界交叉点*/
if(x==18)
{
putch(CROSSR);
return;
}

/*上边界交叉点*/
上一篇:五子棋的原代码
对我有帮助
(0)
0%
对我没帮助
(0)
0%
返回顶部
在线反馈
在线反馈