| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2113 人关注过本帖
标题:使用vc6.0(已安装easyx)实现五子棋功能,为什么exe停止运行?(求大神帮忙看 ...
只看楼主 加入收藏
THEONEKING
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-4-30
收藏
 问题点数:0 回复次数:0 
使用vc6.0(已安装easyx)实现五子棋功能,为什么exe停止运行?(求大神帮忙看看)

#include "stdafx.h"
#include "Windows.h"
#include <stdlib.h>
#include <graphics.h>     // 就是需要引用这个图形库
#include <conio.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
#define ENTER 0x1c0d

int ymax=0,xmax=0;
int x=-1,y=0;
int bz[15][15];

 void draw();
 void show_init(int pat);
 void hide();
 void show(int pat);
 void move();
 int is_win(int pat);

void main()
{
    int driver= DETECT,mode;
    int i,j;
    for(i=0;i<15;i++)
        for(j=0;j<15;i++)
        bz[i][j]=0;

        initgraph(&driver,&mode," ");
        draw();
        show_init(0);
        move();
        getch();
        closegraph();
}
void  draw()
{
    int i;
    ymax=getmaxy();
    xmax=getmaxx();
    setfillstyle(1,BLUE);
    bar(0,0,xmax,ymax);
       for(i=0;i<=15;i++)
       {
         line(xmax/2-7*26,ymax/2+i*26,xmax/2+8*26,ymax/2+i*26);
         line(xmax/2-i*26,ymax/2-7*26,xmax/2+i*26,ymax/2+8*26);
       }
}

/*棋子出现的初始位置,交替出现黑白棋子*/

void show_init(int pat)
{
setcolor(BLUE);
    if(pat==0)
    {
    setfillstyle(1,BLACK);/*设置填充颜色为黑色*/
    }
    else
        setfillstyle(1,WHITE);
    x=-1;y=0;
    fillellipse(xmax/2-8*26+13,ymax/2-7*26+13,12,12);/*设棋子为白色*/

}

 void hide()
 {
   int m;
   m=bz[x][y];
   switch(m)
   {
   case 0:setfillstyle(1,BLUE);break;
          case 1:setfillstyle(1,BLACK);break;  
                 case 2:setfillstyle(1,WHITE);break;
                    default:break;
   }
   fillellipse(xmax/2+(x-7)*26+13,ymax/2+(y-7)*26+13,12,12);
 }
  


 void show(int pat)
 {
 switch(pat)
 {
 case 0:setfillstyle(1,BLACK);break;
          case 1:setfillstyle(1,WHITE);break;
          default : break;
 }
  fillellipse(xmax/2+(x-7)*26+13,ymax/2+(y-7)*26+13,12,12);
 }

 void move()
 {
  int key;
  int pat=0;
  for(;;)
  {
    key=getche();
  
   switch(key)
   {
   case LEFT:
       if(x==-1)
           break;
       hide();
       x--;x=x<0?0:x;
       show(pat);
       break;
   case RIGHT:
       if(x==-1)
       {
        setfillstyle(1,BLUE);
         fillellipse(xmax/2+(x-7)*26+13,ymax/2+(y-7)*26+13,12,12);
       }
       else
           hide();
       x++;
       x=x>14?14:x;
       show(pat);
       break;
   case DOWN:
        if(x==-1)
                   break;
               hide();
               y++; y=y>14?14:y;
               show(pat);
               break;
   case UP:    if(x==-1)
                   break;
               hide();
               y--; y=y<0?0:y;
               show(pat);
               break;
   case ENTER:
       if(bz[x][y]!=0)
       {
        break;
       }show(pat);
       bz[x][y]=pat+1;
       if(is_win(pat))
       {
        settextstyle(0,0,_T("宋体"));
        setcolor(RED);
         if(pat==0)
         {
          outtextxy(xmax/2-80,ymax/2,"Black WIN!");

         }else
             outtextxy(xmax/2-80,ymax/2,"WHite WIn!");
         setcolor(BLUE);
         getch();
         exit(1);

       }

      if(pat==0)
       pat=1;
      else
       pat=0;
      show_init(pat);
      break;



      case ESC:
          exit(1);
          break;
      default:
          break;

   }
  }
 }

 int is_win(int pat)

 {
   int i,j;
   int cnt=0;
   cnt=0;
       i=x;
   while(i<15)
   {
    if(bz[i][y]==pat+1)
    {
     cnt++;
    }
   else
    break;
   i++;
   }
   i=x-1;
   while(i>=0)
   {
     if(bz[i][y]==pat+1)
     {cnt++;
     }
     else
     break;
     i--;
   }
   if(cnt>=5)
   {return 1;
   
   }
   cnt=0;
   i=x;j=y;
   while(i<15)
   {
   if(j<0)
   break;
   if(bz[i][j]==pat+1)
   {
    cnt++;
   }
   else
       break;
   i++;j--;
   
   }
   i=x-1;j=y+1;
   while(i>=0)
   {
    if(j>14)
        break;
    if(bz[i][j]==pat+1)
        cnt++;
    else
        break;
    i--;j++;

   }
   if(cnt>=5)
    return 1;
   cnt=0;j=y;
   while(j>=0)
   {
    if(bz[x][j]==pat+1)
    {cnt++;
    }
    else
        break;
    j--;
   }
    j=y+1;
    while(j<15)
    {
     if(bz[x][j]==pat+1)
         cnt++;
     else
         break;
     j++;
    }
     if(cnt>=5)
         return 1;
     cnt=0;
     i=x;j=y;
     while(i>=0)
     {
       if(j<0)break;
       if(bz[i][j]==pat+1)
           cnt++;
       else
           break;
       i--;
       j--;

     
     }
       i=x+1;j=y+1;
       while(i<15)
       {
        if(j>14)
        {
         break;
        }
         if(bz[i][j]==pat+1)
         {
          cnt++;
         }
         else
             break;
         i++;
         j++;
       }
      
       if(cnt>=5)
       {
         return 1;

       }
        return 0;
 }



因为安装了easyx所以在里面使用了getmaxx() getmaxy() settextstyle()等函数(代码系参考教材得之,本人小白,还望各位大神不吝而教,谢谢!)

[此贴子已经被作者于2016-5-13 19:04编辑过]

搜索更多相关主题的帖子: include 五子棋 
2016-05-02 22:05
快速回复:使用vc6.0(已安装easyx)实现五子棋功能,为什么exe停止运行?(求大神 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040600 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved