DownChessData[3][0].data[0][2]=1; DownChessData[3][0].data[1][2]=1; DownChessData[3][0].data[1][3]=1;
DownChessData[3][2]= DownChessData[3][0];
//□ //□□ // □
DownChessData[3][1].xy.X=CHESS_X+4; DownChessData[3][1].xy.Y=CHESS_Y+0; DownChessData[3][1].data[0][0]=1; DownChessData[3][1].data[1][0]=1; DownChessData[3][1].data[1][1]=1; DownChessData[3][1].data[2][1]=1;
DownChessData[3][3]= DownChessData[3][1]; // □ // □ // □□
DownChessData[4][0].xy.X=CHESS_X+4; DownChessData[4][0].xy.Y=CHESS_Y+0; DownChessData[4][0].data[1][0]=1; DownChessData[4][0].data[1][1]=1; DownChessData[4][0].data[1][2]=1; DownChessData[4][0].data[2][2]=1; // □□□ // □
DownChessData[4][1].xy.X=CHESS_X+4; DownChessData[4][1].xy.Y=CHESS_Y+0;
26
}
DownChessData[4][1].data[0][2]=1; DownChessData[4][1].data[1][2]=1; DownChessData[4][1].data[2][2]=1; DownChessData[4][1].data[0][3]=1; //□□ // □ // □
DownChessData[4][2].xy.X=CHESS_X+4; DownChessData[4][2].xy.Y=CHESS_Y+0; DownChessData[4][2].data[0][0]=1; DownChessData[4][2].data[1][0]=1; DownChessData[4][2].data[1][1]=1; DownChessData[4][2].data[1][2]=1; // □ // □□□
DownChessData[4][3].xy.X=CHESS_X+4; DownChessData[4][3].xy.Y=CHESS_Y+0; DownChessData[4][3].data[3][1]=1; DownChessData[4][3].data[1][2]=1; DownChessData[4][3].data[2][2]=1; DownChessData[4][3].data[3][2]=1;
//显示某个下落的棋子
void ShowChess(chess_data chess) {
int x,y;
for (x=0;x<=3;x++) {
for(y=0;y<=3;y++)
27
if (chess.data[x][y]) {
gotoxy(chess.xy.X+x*2,chess.xy.Y+y); }
prt(\□\
} }
//隐藏棋子
void ClearChess(chess_data chess) {
int x,y;
for (x=0;x<=3;x++) {
for(y=0;y<=3;y++)
if (chess.data[x][y]) // {
gotoxy(chess.xy.X+x*2,chess.xy.Y+y); prt(\ \ } } }
void MoveUp(chess_data* Chess) {
chess_data bakChess;
//隐藏
ClearChess(*Chess); //ry+1
Chess->ry++; //1,2,3,4,5 Chess->ry%=4;//0..3 //data
28
bakChess=DownChessData[Chess->rx][Chess->ry]; bakChess.xy=Chess->xy; bakChess.rx=Chess->rx; bakChess.ry=Chess->ry; //
*Chess=bakChess; ShowChess(*Chess); }
void MoveDown(chess_data* Chess) {
//隐藏
ClearChess(*Chess); Chess->xy.Y+=1; ShowChess(*Chess); }
void MoveLeft(chess_data* Chess) {
//隐藏
ClearChess(*Chess); Chess->xy.X-=2; ShowChess(*Chess); }
void MoveRight(chess_data* Chess) {
//隐藏
ClearChess(*Chess); Chess->xy.X+=2; ShowChess(*Chess); }
//检测左边界是否到达,到达则返回1 否则返回0 int CheckLeftBorder(chess_data Chess) {
int x,y;
29
for (x=0;x<=3;x++) for (y=0;y<=3;y++) {
if (Chess.data[x][y]) {
if (Chess.xy.X+x*2<=CHESS_X+2) {
return 1; } } } return 0; }
//检测左边界是否到达,到达则返回1 否则返回0 int CheckRightBorder(chess_data Chess) {
int x,y;
for (x=3;x>=0;x--) for (y=3;y>=0;y--) {
if (Chess.data[x][y]) { }
if (Chess.xy.X+x*2>=CHESS_X+CHESS_WIDTH-2)//左
边界│占2字符宽度+右边界│占的2个字符宽度所以得减4
{
return 1; } } }
return 0;
//检测下边界
30