⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 playface.h

📁 代码+论文 (一篇很好的毕业论文
💻 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 + -