C语言编写象棋程序代码Word文档格式.docx
- 文档编号:15995598
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:32
- 大小:19.89KB
C语言编写象棋程序代码Word文档格式.docx
《C语言编写象棋程序代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言编写象棋程序代码Word文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
#defineBLACK_DOWN0x5000
#defineBLACK_LEFT0x4b00
#defineBLACK_RIGHT0x4d00
#defineBLACK_DO0x1c00
#defineBLACK_UNDO0x2b00
#defineESCAPE0x0100
#defineRED_JU1
#defineRED_MA2
#defineRED_XIANG3
#defineRED_SHI4
#defineRED_JIANG5
#defineRED_PAO6
#defineRED_BIN7
#defineBLACK_JU8
#defineBLACK_MA9
#defineBLACK_XIANG10
#defineBLACK_SHI11
#defineBLACK_JIANG12
#defineBLACK_PAO13
#defineBLACK_BIN14
intfirsttime=1;
intsavemode;
charpage_new=0,page_old=0;
intfinish=false,turn=BLACK,winner=0;
intkey;
intredstate=SELECT,blackstate=SELECT;
intboard[10][9];
char*chessfile[15]={"
"
bmp\\"
"
"
};
char*boardfile[10][9]={
{"
},
}
charcursor[14][14]={
0,0,0,0,0,0,0,0,0,0,0,0,1,1,
0,0,0,0,0,0,0,0,0,0,0,1,1,1,
0,255,255,255,255,255,255,255,0,0,1,1,1,1,
0,255,255,255,255,255,255,0,0,1,1,1,1,1,
0,255,255,255,255,255,255,255,255,0,0,1,1,1,
0,255,255,255,255,255,255,255,255,255,0,0,1,1,
0,255,255,0,255,255,255,255,255,255,255,0,0,1,
0,255,0,1,1,0,255,255,255,255,255,255,255,0,
0,0,1,1,1,1,0,255,255,255,255,255,0,1,
0,1,1,1,1,1,1,0,255,255,255,0,1,1,
1,1,1,1,1,1,1,1,0,255,0,1,1,1,
1,1,1,1,1,1,1,1,1,0,1,1,1,1
structpos{
intx;
inty;
}position[10][9],redcurpos,redtemppos,redoldpos,blackcurpos,blacktemppos,blackoldpos;
selectpage(registercharpage)/*换页函数*/
{
unionREGSr;
/*选择页面*/
int86(0x10,&
r,&
r);
unsignedcharset_SVGA_mode(intvmode)/*设置SVGA屏幕模式*/
returnintget_SVGA_mode()/*获取当前SVGA屏幕模式*/
returnstart_x,intstart_y,charfilename[])
charbuffer[640];
inti,j,k,n,r,g,b,width,length;
longposition;
FILE*fp;
if((fp=fopen(filename,"
rb"
))==NULL)
{
printf("
Error!
Can'
topenfile!
);
getch();
return;
}
fseek(fp,28,SEEK_SET);
fread(&
i,2,1,fp);
if(i!
=8)/*检查是否为256色位图*/
puts("
Can'
tfindbitmap!
fclose(fp);
exit(0);
fseek(fp,18,SEEK_SET);
width,4,1,fp);
length,4,1,fp);
if(firsttime)
fseek(fp,54,SEEK_SET);
for(i=0;
i<
256;
i++)/*按照该图片的DAC色表设置色彩寄存器*/
b=fgetc(fp);
g=fgetc(fp);
r=fgetc(fp);
/*获取R、G、B分量*/
outportb(0x3c8,i);
outportb(0x3c9,r>
>
2);
/*右移是要转化为VGA的6位寄存器形式*/
outportb(0x3c9,g>
outportb(0x3c9,b>
fgetc(fp);
else
fseek(fp,300,SEEK_SET);
k=(width%4)(4-width%4):
0;
/*宽度修正值*/
for(j=length-1+start_x;
j>
=start_x;
j--)
fread(buffer,width,1,fp);
for(i=start_y,n=0;
width+start_y;
i++,n++)
position=j*640l+i;
/*计算要显示点的显存位置*/
page_new=position/65536;
/*计算显示页*/
if(page_new!
=page_old)/*当显示页不同时更换页面,提高一定的输出速度*/
{selectpage(page_new);
page_old=page_new;
pokeb(0xa000,position%65536,buffer[n]);
/*写到显存位置*/
fseek(fp,k,SEEK_CUR);
/*每行绘制完后修正宽度*/
init()
savemode=get_SVGA_mode();
/*先保存原来的屏幕模式*/
set_SVGA_mode(0x101);
/*硬件无关性初始化屏幕为640*480256色模式*/
end()
set_SVGA_mode(savemode);
/*恢复屏幕*/
initpos()
inti,j;
10;
i++)
for(j=0;
j<
9;
j++)
position[i][j].x=35+i*39;
position[i][j].y=43+j*40;
initchessmap()
board[0][0]=BLACK_JU;
board[0][1]=BLACK_MA;
board[0][2]=BLACK_XIANG;
board[0][3]=BLACK_SHI;
board[0][4]=BLACK_JIANG;
board[0][5]=BLACK_SHI;
board[0][6]=BLACK_XIANG;
board[0][7]=BLACK_MA;
board[0][8]=BLACK_JU;
board[2][1]=BLACK_PAO;
board[2][7]=BLACK_PAO;
board[3][0]=BL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编写 象棋 程序代码