房地产微信推广:可不可以帮我注释这段源代码

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/01 22:55:11
这是一个五子棋的部分源代码,如果译得好,我会追加100分,我说到做到!
#include <stdio.h>
#include <bios.h>
#include <ctype.h>
#include <conio.h>
#include <dos.h>
#define CROSSRU 0xbf
#define CROSSLU 0xda
#define CROSSLD 0xc0
#define CROSSRD 0xd9
#define CROSSL 0xc3
#define CROSSR 0xb4
#define CROSSU 0xc2
#define CROSSD 0xc1
#define CROSS 0xc5
#define MAPXOFT 5
#define MAPYOFT 2
#define PLAY1UP 0x1157
#define PLAY1DOWN 0x1f53
#define PLAY1LEFT 0x1e41
#define PLAY1RIGHT 0x2044
#define PLAY1DO 0x3920
#define PLAY2UP 0x4800
#define PLAY2DOWN 0x5000
#define PLAY2LEFT 0x4b00
#define PLAY2RIGHT 0x4d00
#define PLAY2DO 0x1c0d
#define ESCAPE 0x011b
#define CHESSNULL 0
#define CHESS1 'O'
#define CHESS2 'X'
#define KEYEXIT 0
#define KEYFALLCHESS 1
#define KEYMOVECURSOR 2
#define KEYINVALID 3
#define TRUE 1
#define FALSE 0
struct point
{
int x,y;
};

void Init(void);
int GetKey(void);
int CheckKey(int press);
int ChangeOrder(void);
int ChessGo(int Order,struct point Cursor);
void DoError(void);
void DoOK(void);
void DoWin(int Order);
void MoveCursor(int Order,int press);
void DrawCross(int x,int y);
void DrawMap(void);
int JudgeWin(int Order,struct point Cursor);
int JudgeWinLine(int Order,struct point Cursor,int direction);
void ShowOrderMsg(int Order);
void EndGame(void);

int gPlayOrder;
struct point gCursor;
char gChessBoard[19][19];

void main()
{
int press;
int bOutWhile=FALSE;

Init();

while(1)
{
press=GetKey();
switch(CheckKey(press))
{

case KEYEXIT:
clrscr();
bOutWhile = TRUE;
break;

case KEYFALLCHESS:
if(ChessGo(gPlayOrder,gCursor)==FALSE)
DoError();
else
{
DoOK();

if(JudgeWin(gPlayOrder,gCursor)==TRUE)
{
DoWin(gPlayOrder);
bOutWhile = TRUE;
}
else
ChangeOrder();
}
break;

case KEYMOVECURSOR:
MoveCursor(gPlayOrder,press);
break;

case KEYINVALID:
break;
}

if(bOutWhile==TRUE)
break;
}

EndGame();
}

接口就不细说了,用到的再细说
int gPlayOrder; //全局变量,其值代表当前轮到哪一方的玩家下子
struct point gCursor; //棋盘光标/焦点 位置信息
char gChessBoard[19][19]; /*存储19乘19的棋盘信息(即棋盘相应位置是被哪一方占据或还未被占据,judgeWin()依据这结信息判断是否有一方五子连线...)*/
void main()
{
int press; //保存按键结果
int bOutWhile=FALSE; //用于标记是否退出while

Init(); //初始化界面、全局变量,等待游戏开始...

while(1)
{
press=GetKey(); //处理玩家按键操作
switch(CheckKey(press)) //CheckKey()对press进行归类,返回按键类别
{
case KEYEXIT: //如果press是定义的退出操作键类型,则退出
clrscr(); //清屏
bOutWhile = TRUE;
break;

/*如果press是下棋操作,做下棋操作,如果操作合法(所在位置可以下子...)就依据gPlayOrder和gCursor在相应位置画上'X' 或 'O' ,否则做出错处理(如提示该位置不能下子、请等待对方下子等...)*/
case KEYFALLCHESS:
if(ChessGo(gPlayOrder,gCursor)==FALSE) ;
DoError();
else
{
DoOK();

if(JudgeWin(gPlayOrder,gCursor)==TRUE) //判断是否赢棋(五子连心)
{
DoWin(gPlayOrder); //赢棋处理(如显示gPlayOrder赢棋信息)
bOutWhile = TRUE;
}
else //未赢棋
ChangeOrder(); //改变玩家顺序(即修改gPlayOrder,表示轮到另一方下棋了)
}
break;

case KEYMOVECURSOR: //方向键操作类型
MoveCursor(gPlayOrder,press); //方向键操作处理(包括更新gCursor、界面显示当前位置...)
break;

case KEYINVALID: //按键操作无效
break;
}

if(bOutWhile==TRUE) //如果TRUE则结束while循环
break;
}

EndGame(); //游戏结束处理(想做啥比较随意)
}