使用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编辑过]