C语言编写象棋程序代码.docx

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

C语言编写象棋程序代码.docx

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

C语言编写象棋程序代码.docx

C语言编写象棋程序代码

/**/

#include""

#include""

/*----------------------------------------------------*/

#defineRED7

#defineBLACK14

#definetrue1

#definefalse0

#defineSELECT0

#defineMOVE1

#defineRED_UP0x1100

#defineRED_DOWN0x1f00

#defineRED_LEFT0x1e00

#defineRED_RIGHT0x2000

#defineRED_DO0x3900

#defineRED_UNDO0x1000

#defineBLACK_UP0x4800

#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\\","bmp\\","bmp\\","bmp\\",

"bmp\\","bmp\\","bmp\\",

"bmp\\","bmp\\","bmp\\","bmp\\",

"bmp\\","bmp\\","bmp\\"

};

char*boardfile[10][9]={

{"bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\"},

{"bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\"},

{"bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\"},

{"bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\"},

{"bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\"},

{"bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\"},

{"bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\"},

{"bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\"},

{"bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\"},

{"bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\","bmp\\"}

};

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,0,0,1,1,1,1,1,

0,255,255,255,255,255,255,255,0,0,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屏幕模式*/

{

unionREGSr;

int86(0x10,&r,&r);

returnintget_SVGA_mode()/*获取当前SVGA屏幕模式*/

{

unionREGSr;

int86(0x10,&r,&r);

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("Error!

Can'tfindbitmap!

");

fclose(fp);

getch();

exit(0);

}

fseek(fp,18,SEEK_SET);

fread(&width,4,1,fp);

fread(&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>>2);

outportb(0x3c9,b>>2);

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;i

{

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);/*每行绘制完后修正宽度*/

}

fclose(fp);

}

init()

{

savemode=get_SVGA_mode();/*先保存原来的屏幕模式*/

set_SVGA_mode(0x101);/*硬件无关性初始化屏幕为640*480256色模式*/

}

end()

{

set_SVGA_mode(savemode);/*恢复屏幕*/

}

/*----------------------------------------------------*/

initpos()

{

inti,j;

for(i=0;i<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