从起点到终点画个矩形,然后分成若干等分,垂直或水平划线,至于规格你看看五子棋标准棋盘就能画出来了,然后是工具的问题,Directx或者GDI+都可以画图哦。去看看这些API怎么使用,你就能自己画棋盘了,另外,本人不会这些相关技术,请自行百度或问其他人
**************************************************************
C++语言五子棋源程序
*************************************************************
#include
#include
#include
#include
#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
m++;
a++;}
m=0;
while(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
m++;
a++;}
m=0;
while(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;
}
}
#include
int main()
{
puts("┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼●┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼●┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼●┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼○○┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤");
puts("└┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘");
return 0;
}
只能用符号代替
++++++++
||||||||
++++++++
||||||||
++++++++
************************************************************** C++语言五子棋源程序 ************************************************************* #include
#include
#include
#include
#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
{
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
{
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;
}
}