📄 playface.h
字号:
#include "head.h"
/*头文件、常量定义*/
struct HB
{
int a[8][8];/* 0表示无棋子、1表示黑子、2表示白子 */
int read;/* 8表示该黑子下棋、 15表示该白子下棋*/
int x,y;/* 表示当前光标的位置 */
int x1,y1;/* 表示电脑光标的位置或玩家2的光标 */
int s1,s2;/* s1表示白棋分数,s2表示黑棋分数 */
}hb;
int aa[4][2]={{0,0},{0,7},{7,0},{7,7}};/* 四角坐标 */
int bb[12][2]={{0,1},{1,0},{1,1},{0,6},{6,0},{1,6},{1,7},{7,1},{6,1},{6,6},{6,7},{7,6}};/* 存储四角的相邻格 */
int getX(int num)
{
return 83+45*num;
}
int getY(int num)
{
return 83+45*num;
}
void drawQP(void)/*画棋盘函数*/
{
int i,j;
for(i=0;i<=SIZE*45/2;i++)
{
for(j=0;j<=SIZE*45;j+=45)
{
putpixel(60+j,60+i,3);/*棋盘距离边框60个像素*/
putpixel(420-j,420-i,3);
putpixel(60+i,60+j,3);
putpixel(420-i,420-j,3);
delay(100);
}
}
}
void borderBack(void)/*初始化边框背景*/
{
int i,j;
setcolor(7);
for(i=j=240;i>=20;i--,j++)
{
line(424,i,620,i);
line(424,j,620,j);
line(20,i,56,i);
line(20,j,56,j);
}
for(i=j=240;i>=56;i--,j++)
{
line(i,20,i,56);
line(j,20,j,56);
line(i,424,i,460);
line(j,424,j,460);
}
}
void rightTitle(void)/*初始化右侧标题*/
{
int x=450,y=40;
drawmat(huan64Z,64,x,y,8);
drawmat(le64Z,64,x+80,y,8);
drawmat(huan64Z,64,x+3,y+3,14);
drawmat(le64Z,64,x+80+3,y+3,14);
x=440,y=120;
setfillstyle(1,8);
fillellipse(x+22,y+22,30,30);
setfillstyle(1,15);
fillellipse(x+25,y+25,30,30);
setfillstyle(1,8);
fillellipse(x+83,y+22,30,30);
setfillstyle(1,0);
fillellipse(x+86,y+25,30,30);
drawmat(hei48Z,48,x,y,8);
drawmat(bai48Z,48,x+60,y,8);
drawmat(qi48Z,48,x+120,y,8);
drawmat(hei48Z,48,x+2,y+2,0);
drawmat(bai48Z,48,x+60+2,y+2,15);
drawmat(qi48Z,48,x+120+2,y+2,4);
drawmat(hei32H,32,450,200,8); /* 黑棋得分 */
drawmat(qi32H,32,480,200,8);
drawmat(dian32H,32,510,200,8);
drawmat(hei32H,32,451,201,0);
drawmat(qi32H,32,481,201,0);
drawmat(dian32H,32,511,201,0);
drawmat(bai32H,32,450,240,8); /* 白棋得分 */
drawmat(qi32H,32,480,240,8);
drawmat(dian32H,32,510,240,8);
drawmat(bai32H,32,451,241,15);
drawmat(qi32H,32,481,241,15);
drawmat(dian32H,32,511,241,15);
}
void printScore(void) /* 显示分数 */
{
char str1[5],str2[5];
sprintf(str1,"%d",hb.s1);
sprintf(str2,"%d",hb.s2);
settextstyle(0,0,2);
setcolor(6);
setfillstyle(SOLID_FILL,7);
bar(525,200,570,250);
bar(525,240,570,310);
outtextxy(530,208,str1);
outtextxy(530,248,str2);
}
int judgeGameover(void)/* 如果黑棋胜出返回1,白棋胜出返回2,胜负未分返回0,平手返回3 */
{
if(moveTimes(1)==0&&moveTimes(2)==0)/* 如果双方都没有行动力了,则游戏结束 */
if(hb.s1>hb.s2)
return 1;
else if(hb.s1<hb.s2)
return 2;
else
return 3;
return 0;
}
void Gameover(int n)/* 游戏结束 */
{
int color;
if(n==1||n==2)
{
if(n==1)
{
color=0;
drawmat(hei48Z,48,430,300,8); /* 黑棋胜利 */
drawmat(hei48Z,48,431,301,color);
}
else if(n==2)
{
color=15;
drawmat(bai48Z,48,430,300,8); /* 白棋胜利 */
drawmat(bai48Z,48,431,301,color);
}
drawmat(qi48Z,48,475,300,8);
drawmat(sheng48Z,48,520,300,8);
drawmat(li48Z,48,565,300,8);
drawmat(qi48Z,48,476,301,color);
drawmat(sheng48Z,48,521,301,color);
drawmat(li48Z,48,566,301,color);
}
else if(n==3) /* 握手言和 */
{
drawmat(wo48Z,48,430,300,8);
drawmat(shou48Z,48,475,300,8);
drawmat(yan48Z,48,520,300,8);
drawmat(he48Z,48,565,300,8);
drawmat(wo48Z,48,431,301,14);
drawmat(shou48Z,48,476,301,14);
drawmat(yan48Z,48,521,301,14);
drawmat(he48Z,48,566,301,14);
}
}
void showYorN(int color)/* 显示按键是Y还是N */
{
int x=200,y=435;
drawmat(shi16S,16,x,y,color);
drawmat(fou16S,16,x+20,y,color);
drawmat(ji16S,16,x+40,y,color);
drawmat(xu16S,16,x+60,y,color);
drawmat(you16S,16,x+80,y,color);
drawmat(xi16S,16,x+100,y,color);
drawmat(lblank16S,16,x+115,y,color);
drawmat(char_y16S,16,x+130,y,color);
drawmat(xiexian16S,16,x+145,y,color);
drawmat(char_n16S,16,x+160,y,color);
drawmat(rblank16S,16,x+175,y,color);
}
int judgeYorN(void)/* 判断按键是y还是n */
{
int key;
showYorN(4);
while(1)
{
key = bioskey(0);
if(key==N1 || key==N2)
{
showYorN(7);
return 0;
}
if(key==Y1||key==Y2||key==ENTER||key==SPACE||key==ESC)
{
showYorN(7);
return 1;
}
}
}
void dispMouse(int x,int y,int color)/*显示光标函数*/
{
setcolor(color);
line(x-21,y-21,x-12,y-21);
line(x-21,y-21,x-21,y-12);
line(x-21,y+20,x-21,y+12);
line(x-21,y+20,x-12,y+20);
line(x+20,y-21,x+20,y-12);
line(x+20,y-21,x+12,y-21);
line(x+20,y+20,x+12,y+20);
line(x+20,y+20,x+20,y+12);
}
void drawQZ(int x,int y,int color)/* 画棋子函数 */
{
int i;
for(i=1;i<=20;i++)
{
if(color==15)
{
setcolor(8);
setfillstyle(1,8);
}
else if(color==8)
{
setcolor(7);
setfillstyle(1,7);
}
fillellipse(x-1,y-1,i,i);
setcolor(color);
setfillstyle(1,color);
fillellipse(x,y,i,i);
delay(500);
}
}
int judge1(int x,int y,int color,int op)/* 判断方向左斜上 */
{
int i=1;
if(hb.a[x-1][y-1]==0 || x==0 || y==0 || hb.a[x-1][y-1]==color)
return 0;
while(hb.a[x-i][y-i]!=0&&hb.a[x-i][y-i]!=color&&x-i>=0&&y-i>=0)
{
if(op==1)
{
drawQZ(getX(x-i),getY(y-i),hb.read);
hb.a[x-i][y-i] = color;
}
i++;
}
if(x-i>=0&&y-i>=0)
return (hb.a[x-i][y-i]==color)?i-1:0;
else
return 0;
}
int judge2(int x,int y,int color,int op)/* 判断方向正上 */
{
int i=1;
if(hb.a[x][y-1]==0 || y==0 || hb.a[x][y-1]==color)
return 0;
while(hb.a[x][y-i]!=0&&hb.a[x][y-i]!=color&&y-i>=0)
{
if(op)
{
drawQZ(getX(x),getY(y-i),hb.read);
hb.a[x][y-i] = color;
}
i++;
}
if(y-i>=0)
return (hb.a[x][y-i]==color)?i-1:0;
else
return 0;
}
int judge3(int x,int y,int color,int op)/* 判断方向右斜上 */
{
int i=1;
if(hb.a[x-1][y+1]==0 || x==0 || y==7 || hb.a[x-1][y+1]==color)
return 0;
while(hb.a[x-i][y+i]!=0&&hb.a[x-i][y+i]!=color&x-i>=0&&y+i<=7)
{
if(op)
{
drawQZ(getX(x-i),getY(y+i),hb.read);
hb.a[x-i][y+i] = color;
}
i++;
}
if(x-i>=0&&y+i<=7)
return (hb.a[x-i][y+i]==color)?i-1:0;
else
return 0;
}
int judge4(int x,int y,int color,int op)/* 判断方向右方 */
{
int i=1;
if(hb.a[x-1][y]==0 || x==0 || hb.a[x-1][y]==color)
return 0;
while(hb.a[x-i][y]!=0&&hb.a[x-i][y]!=color&x-i>=0)
{
if(op)
{
drawQZ(getX(x-i),getY(y),hb.read);
hb.a[x-i][y] = color;
}
i++;
}
if(x-i>=0)
return (hb.a[x-i][y]==color)?i-1:0;
else
return 0;
}
int judge5(int x,int y,int color,int op)/* 判断方向右斜下 */
{
int i=1;
if(hb.a[x+1][y+1]==0 || x==7 || y==7 || hb.a[x+1][y+1]==color)
return 0;
while(hb.a[x+i][y+i]!=0&&hb.a[x+i][y+i]!=color&x+i<=7&&y+i<=7)
{
if(op)
{
drawQZ(getX(x+i),getY(y+i),hb.read);
hb.a[x+i][y+i] = color;
}
i++;
}
if(x+i<=7&&y+i<=7)
return (hb.a[x+i][y+i]==color)?i-1:0;
else
return 0;
}
int judge6(int x,int y,int color,int op)/* 判断方向正下 */
{
int i=1;
if(hb.a[x][y+1]==0 || y==7 || hb.a[x][y+1]==color)
return 0;
while(hb.a[x][y+i]!=0&&hb.a[x][y+i]!=color&y+i<=7)
{
if(op)
{
drawQZ(getX(x),getY(y+i),hb.read);
hb.a[x][y+i] = color;
}
i++;
}
if(y+i<=7)
return (hb.a[x][y+i]==color)?i-1:0;
else
return 0;
}
int judge7(int x,int y,int color,int op)/* 判断方向左斜下 */
{
int i=1;
if(hb.a[x+1][y-1]==0 || x==7 || y==0 || hb.a[x+1][y-1]==color)
return 0;
while(hb.a[x+i][y-i]!=0&&hb.a[x+i][y-i]!=color&x+i<=7&&y-i>=0)
{
if(op)
{
drawQZ(getX(x+i),getY(y-i),hb.read);
hb.a[x+i][y-i] = color;
}
i++;
}
if(x+i<=7&&y-i>=0)
return (hb.a[x+i][y-i]==color)?i-1:0;
else
return 0;
}
int judge8(int x,int y,int color,int op)/* 判断方向左方 */
{
int i=1;
if(hb.a[x+1][y]==0 || x==7 || hb.a[x+1][y]==color)
return 0;
while(hb.a[x+i][y]!=0&&hb.a[x+i][y]!=color&x+i<=7)
{
if(op)
{
drawQZ(getX(x+i),getY(y),hb.read);
hb.a[x+i][y] = color;
}
i++;
}
if(x+i<=7)
return (hb.a[x+i][y]==color)?i-1:0;
else
return 0;
}
void playFace(void)/*初始化游戏界面*/
{
showStar();/*星空效果*/
showBorder(); /*边框*/
borderBack();/*初始化边框背景*/
rightTitle();/*初始化右侧标题*/
printScore();
showAuthor();
delay(60000);
drawQP();/*画棋盘函数*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -