哪位大侠能给个五子棋的程序(VC++) 哪位大侠能给个五子棋的程序(VC++)只要能下,什么功能都不要,谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ************************************************************** C++语言五子棋源程序 * 南阳理工学院计算机系01612班大鹏课程设计作品 * 运行环境:TC3.0 (vc6.0不支持画图函数,无法画出棋盘和棋子) * Email:[email protected] ************************************************************* #include <graphics.h> #include <stdio.h> #include <stdlib.h> #include <dos.h> #define backcolor CYAN #define defaultcolor BLACK #define linecolor MAGENTA #define player1_color RED #define player2_color WHITE #define error_color RED #define winner_color RED const int left=40; const int top=390; const int d=30; const int line_num=9; const int turn=0; const int r=d/3; const int j=10; int x,y,k=1,step=(line_num+1)*(line_num+1); union REGS regs1,regs2; class player1; class player2; class qipan{ public: qipan(); ~qipan(){}; void init_qipan(); friend void fall(player1 &num1,player2 &num2,qipan &num); friend void input(player1 &num1,player2 &num2,qipan &num); private: int point[line_num+1][line_num+1]; }; class player1{ public: player1(); ~player1(){}; friend void fall(player1 &num1,player2 &num2,qipan &num); friend void input(player1 &num1,player2 &num2); friend int judge_winner(player1 &num1,player2 &num2); private: int point1[line_num+1][line_num+1]; }; class player2{ public: player2(); ~player2(){}; friend void fall(player1 &num1,player2 &num2,qipan &num); friend void input(player1 &num1,player2 &num2,qipan &num); friend int judge_winner(player1 &num1,player2 &num2); private: int point2[line_num+1][line_num+1]; }; void input(player1 &num1,player2 &num2); void fall(player1 &num1,player2 &num2,qipan &num); int judge_winner(qipan &num,player1 &num1,player2 &num2); void inputerror(); void display_winner(int); void main() { int driver=DETECT,mode; initgraph(&driver,&mode,"e:\tc30\bgi"); qipan num; player1 num1; player2 num2; while(step--) { input(num1,num2,num); fall(num1,num2,num); if(judge_winner(num1,num2)) { display_winner(k); } } // getchar(); } qipan::qipan(void) { int j,i; char ch[2]="0"; setbkcolor(backcolor); setcolor(linecolor); for(i=0;i<=line_num;i++) { line(left,top-i*d,left+line_num*d,top-i*d); } for(i=0;i<=line_num;i++) { line(left+i*d,top,left+i*d,top-line_num*d); } for(i=0;i<=line_num;i++) { if(*ch=='9'+1) *ch='a'; settextstyle(DEFAULT_FONT,HORIZ_DIR,1); outtextxy(left+i*d-2,top+r+3,ch); (*ch)=(*ch)+1; } *ch='0'; for(i=0;i<=line_num;i++) {if(*ch=='9'+1) *ch='a'; settextstyle(DEFAULT_FONT,HORIZ_DIR,1); outtextxy(left-r-10,top-d*i-3,ch); (*ch)=(*ch)+1; } setcolor(defaultcolor); for(i=0;i<=line_num;i++) { for(j=0;j<=line_num;j++) point[i][j]=0; } } void fall(player1 &num1,player2 &num2,qipan &num) { int flag=k%2; if(flag) { setcolor(player2_color); num2.point2[x][y]=1; num.point[x][y]=2; circle(left+d*x,top-d*y,r); setfillstyle(1,player2_color); floodfill(left+d*x,top-d*y,player2_color); } else { num1.point1[x][y]=1; num.point[x][y]=1; setcolor(player1_color); circle(left+d*x,top-d*y,r); setfillstyle(1,player1_color); floodfill(left+d*x,top-d*y,player1_color); } setcolor(defaultcolor); } void input(player1 &num1,player2 &num2,qipan &num) { char xx,yy; k++; while(1) { regs1.h.ah=0; xx=int86(22,®s1,®s1)-'0'; if(xx==('q'-'0')||xx==('Q'-'0')) { step=0; return; } regs1.h.ah=0; yy=int86(22,®s1,®s1)-'0'; if(yy==('q'-'0')||yy==('Q'-'0')) { step=0; return ; } if(xx<0||xx>line_num) { inputerror(); continue; } if(yy<0||yy>line_num) {inputerror(); continue; } if(num.point[xx][yy]==0) { break; } else { inputerror(); continue; } } x=(int)xx; y=(int)yy; setcolor(backcolor); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); outtextxy(left+d*line_num/3,top+d*2,"Input error"); setcolor(defaultcolor); } player1::player1() { int i,j; for(i=0;i<=line_num;i++) { for(j=0;j<=line_num;j++) point1[i][j]=0; } } player2::player2() { int i,j; for(i=0;i<=line_num;i++) { for(j=0;j<=line_num;j++) point2[i][j]=0; } } void inputerror(void) { setcolor(error_color); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); outtextxy(left+d*line_num/3,top+d*2,"Input error"); setcolor(defaultcolor); } int judge_winner(player1 &num1,player2 &num2) { int count=0,m=0,n=0,a=0,b=0,xx0,yy0; int flag=k%2; xx0=x; yy0=y; if(!flag) { //left <-------> right while(xx0>=1&&m<4) {xx0--;m++;} while(n<9&&xx0<=line_num) { if(num1.point1[xx0][y]==1) { count++; if(count==5) return 1; } else { count=0; } n++; xx0++; } //up <------> down count=0; xx0=x; m=0; n=0; while(yy0>=1&&m<4){yy0--;m++;} while(n<9&&yy0<=line_num) { if(num1.point1[x][yy0]==1) { count++; if(count==5) return 1; } else { count=0; } n++; yy0++; } //left up ----- right down xx0=x; yy0=y; m=0; n=0; count=0; while(xx0>=1&&m<4){ xx0--; a++; m++;} m=0; while(yy0<=line_num&&m<4){ yy0++; b++; m++;} if(a<=b) { xx0=x-a; yy0=y+a; } else { xx0=x-b; yy0=y+b; } while(xx0<=line_num&&yy0>=0&&n<9) { if(num1.point1[xx0][yy0]==1) { count++; if(count==5) return 1; } else { count=0; } xx0++; yy0--; n++; } //right up <-----> left down count=0; a=0; b=0; n=0; m=0; xx0=x; yy0=y; while(xx0<line_num&&m<4){ xx0++; m++; a++;} m=0; while(yy0<line_num&&m<4){ yy0--; m++; b++; } if(a<=b) { xx0=x+a; yy0=y+a; } else { xx0=x+b; yy0=y+b; } while(xx0>=0&&yy0>=0&&n<9) { if(num1.point1[xx0][yy0]==1) { count++; if(count==5) return 1; } else count=0; xx0--; yy0--; n++; } //no winer return 0; } else { //left <-------> right while(xx0>=1&&m<4) {xx0--;m++;} while(n<9&&xx0<=line_num) { if(num1.point1[xx0][y]==1) { count++; if(count==5) return 1; } else { count=0; } n++; xx0++; } //up <------> down count=0; xx0=x; m=0; n=0; while(yy0>=1&&m<4){yy0--;m++;} while(n<9&&yy0<=line_num) { if(num2.point2[x][yy0]==1) { count++; if(count==5) return 1; } else { count=0; } n++; yy0++; } //left up ----- right down xx0=x; yy0=y; m=0; n=0; count=0; while(xx0>=1&&m<4){ xx0--; a++; m++;} m=0; while(yy0<=line_num&&m<4){ yy0++; b++; m++;} if(a<=b) { xx0=x-a; yy0=y+a; } else { xx0=x-b; yy0=y+b; } while(xx0<=line_num&&yy0>=0&&n<9) { if(num2.point2[xx0][yy0]==1) { count++; if(count==5) return 1; } else { count=0; } xx0++; yy0--; n++; } //right up <-----> left down count=0; a=0; b=0; n=0; m=0; xx0=x; yy0=y; while(xx0<line_num&&m<4){ xx0++; m++; a++;} m=0; while(yy0<line_num&&m<4){ yy0--; m++; b++; } if(a<=b) { xx0=x+a; yy0=y+a; } else { xx0=x+b; yy0=y+b; } while(xx0>=0&&yy0>=0&&n<9) { if(num2.point2[xx0][yy0]==1) { count++; if(count==5) return 1; } else count=0; xx0--; yy0--; n++; } //no winer return 0; } } void display_winner(int k) { int flag=k%2; if(!flag) { setcolor(winner_color); settextstyle(DEFAULT_FONT,HORIZ_DIR,2); outtextxy(left+d*2,top+40,"Red is winner"); setcolor(defaultcolor); step=0; getchar(); } else { setcolor(winner_color); settextstyle(DEFAULT_FONT,HORIZ_DIR,2); outtextxy(left+2*d,top+40,"White is winner"); setcolor(defaultcolor); step=0; } } 改成windows的绘图函数和界面不就可以了么 到www.vckbase.com里应有的,或www.vchelp.net找一找, 我做了一个,不过太简单了,想要得留下email 我以前做过一个TC的,带AI的,呵呵自我感觉不是那么好赢电脑的 我贴的这个程序怎么改成windows的绘图函数和界面 我这里有个vc的,是ai的想要的话就说[email protected] 我这里也有[email protected]<VC++动感设计> 中讲得实现清楚.并且还有源代码,不防下载一下 帮帮忙呀各位,不要AI的有吗?还有我为什么不能发短消息在CSDN? 一个非常棘手的问题 kad是用UDP还是TCP通信的? CEdit如何设置行间距?GDI+绘制文本可以设置行间距吗? 我刚装了VS2003.net,却发现连一个控制台程序也不会写 我的机器疯掉了? 这都是些什么问题,请大家看看 关于坐标的问题 怎么选中一条线 我在VC++编程中,在编译的时候显示如下 超难:取得当前窗口的“当前”编辑框(也可能是其他控件)的文本? 寻 visual assist 6.0.0.1090??? 怎样传递一个HBITMAP参数?(100分急求)
* 南阳理工学院计算机系01612班大鹏课程设计作品
* 运行环境:TC3.0 (vc6.0不支持画图函数,无法画出棋盘和棋子)
* Email:[email protected]
*************************************************************
#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#define backcolor CYAN
#define defaultcolor BLACK
#define linecolor MAGENTA
#define player1_color RED
#define player2_color WHITE
#define error_color RED
#define winner_color RED const int left=40;
const int top=390;
const int d=30;
const int line_num=9;
const int turn=0;
const int r=d/3;
const int j=10;
int x,y,k=1,step=(line_num+1)*(line_num+1);
union REGS regs1,regs2;
class player1;
class player2;
class qipan{
public:
qipan();
~qipan(){};
void init_qipan();
friend void fall(player1 &num1,player2 &num2,qipan &num);
friend void input(player1 &num1,player2 &num2,qipan &num); private:
int point[line_num+1][line_num+1]; };
class player1{
public:
player1();
~player1(){};
friend void fall(player1 &num1,player2 &num2,qipan &num);
friend void input(player1 &num1,player2 &num2);
friend int judge_winner(player1 &num1,player2 &num2);
private:
int point1[line_num+1][line_num+1];
};
class player2{
public:
player2();
~player2(){};
friend void fall(player1 &num1,player2 &num2,qipan &num);
friend void input(player1 &num1,player2 &num2,qipan &num);
friend int judge_winner(player1 &num1,player2 &num2);
private:
int point2[line_num+1][line_num+1];
};
void input(player1 &num1,player2 &num2);
void fall(player1 &num1,player2 &num2,qipan &num);
int judge_winner(qipan &num,player1 &num1,player2 &num2);
void inputerror();
void display_winner(int);
void main()
{
int driver=DETECT,mode;
initgraph(&driver,&mode,"e:\tc30\bgi"); qipan num;
player1 num1;
player2 num2;
while(step--)
{
input(num1,num2,num);
fall(num1,num2,num);
if(judge_winner(num1,num2))
{
display_winner(k);
}
} // getchar();
}
qipan::qipan(void)
{ int j,i;
char ch[2]="0";
setbkcolor(backcolor);
setcolor(linecolor);
for(i=0;i<=line_num;i++)
{
line(left,top-i*d,left+line_num*d,top-i*d);
}
for(i=0;i<=line_num;i++)
{
line(left+i*d,top,left+i*d,top-line_num*d);
}
for(i=0;i<=line_num;i++)
{ if(*ch=='9'+1) *ch='a';
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(left+i*d-2,top+r+3,ch);
(*ch)=(*ch)+1;
}
*ch='0';
for(i=0;i<=line_num;i++)
{if(*ch=='9'+1) *ch='a';
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(left-r-10,top-d*i-3,ch);
(*ch)=(*ch)+1;
} setcolor(defaultcolor); for(i=0;i<=line_num;i++)
{
for(j=0;j<=line_num;j++)
point[i][j]=0;
}
} void fall(player1 &num1,player2 &num2,qipan &num)
{
int flag=k%2;
if(flag)
{ setcolor(player2_color);
num2.point2[x][y]=1;
num.point[x][y]=2;
circle(left+d*x,top-d*y,r);
setfillstyle(1,player2_color);
floodfill(left+d*x,top-d*y,player2_color);
}
else
{ num1.point1[x][y]=1;
num.point[x][y]=1;
setcolor(player1_color);
circle(left+d*x,top-d*y,r);
setfillstyle(1,player1_color);
floodfill(left+d*x,top-d*y,player1_color);
} setcolor(defaultcolor);
} void input(player1 &num1,player2 &num2,qipan &num)
{ char xx,yy; k++;
while(1)
{
regs1.h.ah=0;
xx=int86(22,®s1,®s1)-'0';
if(xx==('q'-'0')||xx==('Q'-'0'))
{ step=0;
return;
}
regs1.h.ah=0;
yy=int86(22,®s1,®s1)-'0'; if(yy==('q'-'0')||yy==('Q'-'0'))
{
step=0;
return ;
}
if(xx<0||xx>line_num)
{ inputerror();
continue;
}
if(yy<0||yy>line_num)
{inputerror();
continue;
} if(num.point[xx][yy]==0)
{
break;
}
else
{
inputerror();
continue;
}
} x=(int)xx;
y=(int)yy; setcolor(backcolor);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(left+d*line_num/3,top+d*2,"Input error");
setcolor(defaultcolor);
} player1::player1()
{
int i,j;
for(i=0;i<=line_num;i++)
{
for(j=0;j<=line_num;j++)
point1[i][j]=0;
}
} player2::player2()
{ int i,j;
for(i=0;i<=line_num;i++)
{
for(j=0;j<=line_num;j++)
point2[i][j]=0;
}
}
void inputerror(void)
{ setcolor(error_color);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(left+d*line_num/3,top+d*2,"Input error");
setcolor(defaultcolor);
} int judge_winner(player1 &num1,player2 &num2)
{
int count=0,m=0,n=0,a=0,b=0,xx0,yy0;
int flag=k%2;
xx0=x; yy0=y;
if(!flag)
{ //left <-------> right
while(xx0>=1&&m<4) {xx0--;m++;}
while(n<9&&xx0<=line_num)
{
if(num1.point1[xx0][y]==1)
{
count++;
if(count==5) return 1;
}
else
{
count=0;
}
n++;
xx0++;
}
//up <------> down
count=0; xx0=x; m=0; n=0;
while(yy0>=1&&m<4){yy0--;m++;}
while(n<9&&yy0<=line_num)
{
if(num1.point1[x][yy0]==1)
{
count++;
if(count==5)
return 1;
}
else
{
count=0;
}
n++;
yy0++;
}
//left up ----- right down
xx0=x;
yy0=y;
m=0;
n=0;
count=0;
while(xx0>=1&&m<4){ xx0--; a++; m++;} m=0;
while(yy0<=line_num&&m<4){ yy0++; b++; m++;}
if(a<=b)
{
xx0=x-a; yy0=y+a;
}
else
{
xx0=x-b; yy0=y+b;
}
while(xx0<=line_num&&yy0>=0&&n<9)
{
if(num1.point1[xx0][yy0]==1)
{
count++;
if(count==5)
return 1;
}
else
{
count=0;
}
xx0++;
yy0--;
n++;
}
//right up <-----> left down
count=0;
a=0;
b=0;
n=0;
m=0;
xx0=x;
yy0=y;
while(xx0<line_num&&m<4){ xx0++; m++; a++;} m=0;
while(yy0<line_num&&m<4){ yy0--; m++; b++; }
if(a<=b)
{
xx0=x+a;
yy0=y+a;
}
else
{
xx0=x+b;
yy0=y+b;
}
while(xx0>=0&&yy0>=0&&n<9)
{
if(num1.point1[xx0][yy0]==1)
{
count++;
if(count==5)
return 1;
}
else
count=0;
xx0--;
yy0--;
n++;
}
//no winer
return 0;
}
else
{
//left <-------> right
while(xx0>=1&&m<4) {xx0--;m++;}
while(n<9&&xx0<=line_num)
{
if(num1.point1[xx0][y]==1)
{
count++;
if(count==5) return 1;
}
else
{
count=0;
}
n++;
xx0++;
}
//up <------> down
count=0; xx0=x; m=0; n=0;
while(yy0>=1&&m<4){yy0--;m++;}
while(n<9&&yy0<=line_num)
{
if(num2.point2[x][yy0]==1)
{
count++;
if(count==5)
return 1;
}
else
{
count=0;
}
n++;
yy0++;
}
//left up ----- right down
xx0=x;
yy0=y;
m=0;
n=0;
count=0;
while(xx0>=1&&m<4){ xx0--; a++; m++;} m=0;
while(yy0<=line_num&&m<4){ yy0++; b++; m++;}
if(a<=b)
{
xx0=x-a; yy0=y+a;
}
else
{
xx0=x-b; yy0=y+b;
}
while(xx0<=line_num&&yy0>=0&&n<9)
{
if(num2.point2[xx0][yy0]==1)
{
count++;
if(count==5)
return 1;
}
else
{
count=0;
}
xx0++;
yy0--;
n++;
}
//right up <-----> left down
count=0;
a=0;
b=0;
n=0;
m=0;
xx0=x;
yy0=y;
while(xx0<line_num&&m<4){ xx0++; m++; a++;} m=0;
while(yy0<line_num&&m<4){ yy0--; m++; b++; }
if(a<=b)
{
xx0=x+a;
yy0=y+a;
}
else
{
xx0=x+b;
yy0=y+b;
}
while(xx0>=0&&yy0>=0&&n<9)
{
if(num2.point2[xx0][yy0]==1)
{
count++;
if(count==5)
return 1;
}
else
count=0;
xx0--;
yy0--;
n++;
}
//no winer
return 0; }
} void display_winner(int k)
{
int flag=k%2;
if(!flag)
{ setcolor(winner_color);
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
outtextxy(left+d*2,top+40,"Red is winner");
setcolor(defaultcolor);
step=0;
getchar();
}
else
{ setcolor(winner_color);
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
outtextxy(left+2*d,top+40,"White is winner");
setcolor(defaultcolor);
step=0; }
}
或www.vchelp.net找一找,
想要的话就说
[email protected]
<VC++动感设计> 中讲得实现清楚.并且还有源代码,不防下载一下
不要AI的有吗?
还有我为什么不能发短消息在CSDN?