我来给你发个程序吧:
#include
#include
#include
#include
#define LEFT 0x4B00
#define RIGHT 0x4D00
#define UP 0x4800
#define DOWN 0x5000
#define ENTER 0x1C0D
#define RADIUM 8
char M[21][21]={0};
/*--------------------------------------------------------------*/
void face()
{
int i;
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(0,0,639,479);
setfillstyle(SOLID_FILL,DARKGRAY);
bar(40+5,40+5,440+5,440+5);
setfillstyle(SOLID_FILL,BROWN);
bar(40,40,440,440);
setcolor(BLACK);
for(i=0;i<=20;i++){
line(40,40+i*20,440,40+i*20);
line(40+i*20,40,40+i*20,440);
}
}
/*----------------------------------------------------------------*/
void qizi(int x,int y,int color)
{
setfillstyle(SOLID_FILL,color);
setcolor(color);
fillellipse(x,y,RADIUM,RADIUM);
setfillstyle(SOLID_FILL,WHITE);
setcolor(WHITE);
fillellipse(x-3,y-3,RADIUM-7,RADIUM-7);
}
/*-----------------------------------------------------------------*/
void cursore(int x,int y,int color)
{
setcolor(~color);
line(x-5,y,x+5,y);
line(x,y-5,x,y+5);
}
/*------------------------------------------------------------------*/
void outline()
{
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(40-5,40-5,440+1,40-1);
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(40-5,40-5,40-1,440+1);
}
/*-----------------------------------------------------------------*/
int moveCur(int x,char flag)
{
x=x+flag*20;
if(x<40)x=40;
if(x>440)x=440;
return x;
}
/*------------------------------------------------------------------*/
char Recordqz(int cx,int cy,char flag)
{
if(M[(cy-40)/20][(cx-40)/20]==0){
if(flag==1){
qizi(cx,cy,BLACK);
M[(cy-40)/20][(cx-40)/20]=1;
flag=0;
} else {
qizi(cx,cy,LIGHTGRAY);
M[(cy-40)/20][(cx-40)/20]=2;
flag=1;
}
}else
cursore(cx,cy,getpixel(cx,cy));
return flag;
}
/*-----------------------------------------------------*/
char WinOrFail(int x,int y)
{
char N[9]={0};
int temp_x,temp_y;
int count=0,i,j,p=0;
for(i=-1;i<=1;i++){
for(j=-1;j<=1;j++){
if(i==0 && j==0) {
p++;
continue;
}
temp_x=x;
temp_y=y;
for(;;){
if(M[x][y]==M[temp_x][temp_y]){
temp_y=temp_y+j;
temp_x=temp_x+i;
count++;
}
else break;
}
N[p]=count;
count=0;
p++;
}
}
for(i=0;i<=3;i++){
if((N[i]+N[8-i])>=6)
return M[x][y];
}
return 0;
}
/*------------------------------------------------------*/
main()
{
int driver,mode;
int cx=240,cy=240;
char flag=1,test=0;
driver=VGA;
mode =VGAHI;
initgraph(&driver,&mode,"");
face();
cursore(cx,cy,getpixel(cx,cy));
for(;;){
switch(bioskey(0)){
case LEFT:
cursore(cx,cy,getpixel(cx,cy));
cx=moveCur(cx,-1);
break;
case RIGHT:
cursore(cx,cy,getpixel(cx,cy));
cx=moveCur(cx,1);
break;
case UP:
cursore(cx,cy,getpixel(cx,cy));
cy=moveCur(cy,-1);
break;
case DOWN:
cursore(cx,cy,getpixel(cx,cy));
cy=moveCur(cy,1);
break;
case ENTER:
flag=Recordqz(cx,cy,flag);
test=WinOrFail((cy-40)/20,(cx-40)/20);
if(test==2)
outtextxy(450,50,"White Win!!!");
else if(test==1)
outtextxy(450,50,"BLACK Win!!!");
break;
}
cursore(cx,cy,getpixel(cx,cy));
}
}
这个是双人对战的五子棋游戏,你说的那些功能全都有,还附带落子、判断胜负等的函数。