C语言编写象棋程序代码Word文档格式.docx

上传人:b****5 文档编号:15995598 上传时间:2022-11-17 格式:DOCX 页数:32 大小:19.89KB
下载 相关 举报
C语言编写象棋程序代码Word文档格式.docx_第1页
第1页 / 共32页
C语言编写象棋程序代码Word文档格式.docx_第2页
第2页 / 共32页
C语言编写象棋程序代码Word文档格式.docx_第3页
第3页 / 共32页
C语言编写象棋程序代码Word文档格式.docx_第4页
第4页 / 共32页
C语言编写象棋程序代码Word文档格式.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

C语言编写象棋程序代码Word文档格式.docx

《C语言编写象棋程序代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言编写象棋程序代码Word文档格式.docx(32页珍藏版)》请在冰豆网上搜索。

C语言编写象棋程序代码Word文档格式.docx

#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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1