我的五子棋源程序,还不够厉害,谁能继续完善

     /* By ZhouDahua.  1999,3,30 */
    /*TC2.0*/
      #include  <stdio.h>
      #include  <graphics.h>
      #include  <process.h>
      #include  <stdlib.h>
      #include  <dos.h>
      #include  <ctype.h>
      #define DOWN 80
      #define UP 72
      #define F1 59
      #define LEFT 75
      #define RIGHT 77
      #define Q 16
      #define E 18
      #define X 45
      #define R 19
      #define ESC 1
      #define ENTER 28


      int judge(int);
      int getkey();
      void decide();
      void count(int,int,int);
      void sd();
      int tx,ty;
      int a[16][16]={0}, b[16][16]={0};     /* 全局变量 */

     void main()
      {
       int x,y,m,n,h=0,s=0,done;  int hx=150,sy=80;
       int ch;
       void *buf_curse;
       unsigned size;


       int graphdriver=DETECT;
       int graphmode;
       registerbgidriver(EGAVGA_driver);
       initgraph(&graphdriver,&graphmode," ");
 begin:sd();
       for(x=0;x<16;x++)
       for(y=0;y<16;y++) a[x][y]=0;
       setfillstyle(1,13);
       bar(0,0,12,12);
       size=imagesize(0,0,12,12);
       buf_curse=malloc(size);
       getimage(0,0,12,12,buf_curse); /* save imag 保存图象 */
       putimage(0,0,buf_curse,XOR_PUT);

       tx=1000,ty=1000;
       cleardevice();
       setcolor(WHITE);
       h=0;s=0;hx=154;sy=84;
       setfillstyle(1,CYAN);
       bar(0,0,639,510);
       setfillstyle(1,BLACK);
       bar(157,87,483,413);
    /*   setfillstyle(1,DARKGRAY);
       bar(157,87,483,413);
   */    setfillstyle(1,4);/*BROWN); */
       bar(147,77,473,403);
       setfillstyle(1,LIGHTGRAY);
       bar(151,81,469,399);

       for(x=160;x<=460;x+=20)
  line(x,90,x,390);
       for(y=90;y<=390;y+=20)
  line(160,y,460,y);   /* SETUP FACE */
      putimage(154,84,buf_curse,XOR_PUT); /* xor option*/
      setfillstyle(1,13);
      bar(150,420,470,460);  /* */
      setfillstyle(1,BLACK);
      bar(153,460,475,467);
      bar(470,424,475,467);
      setfillstyle(1,13);
      setcolor(YELLOW);
      outtextxy(160,430,"WZQ program  By ZhouDahua 1999-5-1.");
      outtextxy(160,448,"V1.3A");
      setcolor(10);
      outtextxy(500,100,"R to restar ");
      outtextxy(500,120,"Esc to quit");
      outtextxy(500,140,"Q or Enter to put");
      outtextxy(500,160,"Enter to put down");

   /*   outtextxy(50,110,"Please:"); */
wait: do{ done=1;
  ch=getkey();
  switch(ch)
   {  case 76 :
      case DOWN:
   {putimage(hx,sy,buf_curse,XOR_PUT);
    if(s==15) s=0;
    else s+=1;
    sy=84+s*20;
    putimage(hx,sy,buf_curse,XOR_PUT);
    break;
   }

       case UP:
   {putimage(hx,sy,buf_curse,XOR_PUT);
    if(s==0) s=15;
    else s-=1;
    sy=84+s*20;
    putimage(hx,sy,buf_curse,XOR_PUT);
    break;
   }

       case LEFT:
   {putimage(hx,sy,buf_curse,XOR_PUT);
    if(h==0) h=15;
    else h-=1;
    hx=154+h*20;
    putimage(hx,sy,buf_curse,XOR_PUT);
    break;
   }

       case RIGHT:
   {putimage(hx,sy,buf_curse,XOR_PUT);
    if(h==15) h=0;
    else h+=1;
    hx=154+h*20;
    putimage(hx,sy,buf_curse,XOR_PUT);
    break;}
       case R:
       {putimage(hx,sy,buf_curse,XOR_PUT);
        setcolor(WHITE);  goto begin;  }
       case X:
       case E:
       case ESC: goto end;

       case Q:
       case ENTER: done=0;break;
   }

 } while(done);
 if(a[h][s]!=0) {  bar(150,420,470,460);setcolor(10);
 outtextxy(160,430,"You do not put it here!");sd(); goto wait;}

      a[h][s]=1;
      for(x=6;x>0;x--)
      { setcolor(13);
      circle(160+h*20,90+s*20,x);}

      if(judge(1)) {  bar(150,420,470,460);setcolor(YELLOW);
      outtextxy(160,430,"Wokao  You Win ! ");
      outtextxy(160,445,"Press R to again"); sd();
      aa: if(getch()!='r') {sd();goto aa;}
      putimage(hx,sy,buf_curse,XOR_PUT);    setcolor(WHITE);
      goto begin;  }

      decide(a);
      if(judge(2)) {  bar(150,420,470,460);setcolor(YELLOW);
      outtextxy(160,430,"Sorry, You Fail ");
      outtextxy(160,445,"Press R to again "); sd();
      bb: if(getch()!='r') {sd();goto bb;}
      putimage(hx,sy,buf_curse,XOR_PUT);   setcolor(WHITE);
      goto begin;  }
     goto wait;


end:
      closegraph(); free(buf_curse);
      for(h=0;h<1;h++) {sd();delay(800);}

}

/***********************************/
void  decide(arr)
      int arr[16][16];
   {
       int i,j,x,y,l,l1,l2,l3,l4;
       int max_1,max_2,n=1,m=2;
       int  x_1=0,y_1=0; int x_2=0,y_2=0;
   for(i=6;i>0;i--)
   {setcolor(15);
    circle(tx,ty,i);}

 see:    for(i=0;i<16;i++)
  for(j=0;j<16;j++) b[i][j]=0;

  for(i=0;i<16;i++)
  for(j=0;j<16;j++)
   if(arr[i][j]==0)
    {  for(x=i,y=j,l1=0;arr[x][y+1]==n&&y<15;y++)l1+=2;
       if(arr[x][y+1]==m) l1--;
       for(x=i,y=j;     arr[x][y-1]==n&&y>0;y--) l1+=2;
       if(arr[x][y-1]==m) l1--;
        count(l1,i,j);
       for(x=i,y=j,l2=0;arr[x+1][y-1]==n&&x<15&&y>0;x++,y--) l2+=2;
       if(arr[x+1][y-1]==m)l2--;
       for(x=i,y=j;     arr[x-1][y+1]==n&&x>0&&y<15;x--,y++) l2+=2;
       if(arr[x-1][y+1]==m)l2--;
        count(l2,i,j);
       for(x=i,y=j,l3=0;arr[x+1][y+1]==n&&x<15&&y<15;x++,y++) l3+=2;
       if(arr[x+1][y+1]==m)l3--;
       for(x=i,y=j;     arr[x-1][y-1]==n&&x>0&&y>0;x--,y--) l3+=2;
       if(arr[x-1][y-1]==m)l3--;
        count(l3,i,j);
       for(x=i,y=j,l4=0;arr[x+1][y]==n&&x<15;x++) l4+=2;
       if(arr[x+1][y]==m)l4--;
       for(x=i,y=j;     arr[x-1][y]==n&&x>0;x--) l4+=2;
       if(arr[x-1][y]==m)l4--;
        count(l4,i,j);

     }

     if(n==1)
       { max_1=b[0][0];
  for(i=0;i<16;i++)
  for(j=0;j<16;j++)
  if(b[i][j]>=max_1)
     {max_1=b[i][j];
      x_1=i;
      y_1=j;
     }
 n++; m--;
 goto see;
      }

    if(n==2)
      { max_2=b[0][0];
 for(i=0;i<16;i++)
 for(j=0;j<16;j++)
 if(b[i][j]>=max_2) {max_2=b[i][j]; x_2=i;y_2=j;} n++;m--;  }

   if(max_2>=90||(max_1<90&&max_2>=50)||max_2>=max_1)
 {x_1=x_2; y_1=y_2;}

   tx=160+x_1*20;ty=90+y_1*20;
   for(i=6;i>0;i--)
   {setcolor(15);if(i<3)setcolor(BLACK);
    circle(tx,ty,i);}

   arr[x_1][y_1]=2;

  }

void count(int l,int i,int j)
   {
     switch(l)
     {
     case -1:
     case 0:  break;
     case 1:  b[i][j]+=2;   break;  /*2*/
     case 2:  b[i][j]+=4;   break;  /*4*/
     case 3:  b[i][j]+=7;   break;
     case 4:  b[i][j]+=10;  break;
     case 5:  b[i][j]+=13;  break;
     case 6:  b[i][j]+=50;  break;
     case 7:
     case 8:  b[i][j]+=95;  break;
     case 9:
     case 10:
     case 11:
     case 13:
     case 14:
     case 15:
     case 16:
     case 17:
     case 18: b[i][j]+=150;
     default: b[i][j]+=0; break;
     }
   }

int judge(int n)
  {
   int i,j,x,y,ju=0,l1,l2,l3,l4;
   for(i=0;i<16;i++)
   for(j=0;j<16;j++)
   if(a[i][j]==n)
   {for(x=i,y=j,l1=1;a[x][y+1]==n&&y<15;y++) l1++;
 if(l1>=5) {ju=1;goto re;}
    for(x=i,y=j,l2=1;a[x+1][y-1]==n&&x<15&&y>0;x++,y--) l2++;
 if(l2>=5) {ju=1;goto re;}
    for(x=i,y=j,l3=1;a[x+1][y+1]==n&&x<15&&y<15;x++,y++) l3++;
 if(l3>=5) {ju=1;goto re;}
    for(x=i,y=j,l4=1;a[x+1][y]==n&&x<15;x++) l4++;
 if(l4>=5) {ju=1;goto re;}
   }
re: if(i!=16&&j!=16) {setcolor(WHITE);circle(160+i*20,90+j*20,10);}
   return(ju);
 }

int getkey()
{union REGS rg;
 rg.h.ah=0;
 int86(0x16,&rg,&rg);
 return rg.h.ah;
}
void sd()
{sound(720);delay(3500);nosound();}

  • 0
    点赞
  • 3
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
<p> <span style="font-size:14px;color:#337FE5;">【为什么学爬虫?】</span> </p> <p> <span style="font-size:14px;">       1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!</span> </p> <p> <span style="font-size:14px;">       2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站</span> </p> <p> <br /> </p> <span style="font-size:14px;color:#337FE5;">【课程设计】</span> <p class="ql-long-10663260"> <span> </span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: </p> <ol> <li class="" style="font-size:11pt;color:#494949;"> 网络请求:模拟浏览器的行为从网上抓取数据。 </li> <li class="" style="font-size:11pt;color:#494949;"> 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 </li> <li class="" style="font-size:11pt;color:#494949;"> 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 </li> </ol> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: </p> <ol> <li class="" style="font-size:11pt;color:#494949;"> 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 </li> <li class="" style="font-size:11pt;color:#494949;"> Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 </li> </ol> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 </p> <p style="font-size:11pt;color:#494949;">   </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <br /> </p> <p> <br /> </p> <p> <span style="font-size:14px;background-color:#FFFFFF;color:#337FE5;">【课程服务】</span> </p> <p> <span style="font-size:14px;">专属付费社群+定期答疑</span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <span style="font-size:16px;"><br /> </span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <span style="font-size:16px;"></span> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

ELine

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值