下面这个小游戏是我小时候玩的六籽弹(方言),希望有朋友为我修改修改.
小弟不才,急需此程序来交差.
程序是这样实现的,在一条线上,只有三粒籽是相邻的情况下,若有两粒相邻且相同颜色的棋子,第三籽就被吃丢,否则,换色走棋.若一方棋子数为一后,在一条线上的相邻的三粒籽,在中间的棋颜色与相邻棋子颜色不同,则相同颜色的棋子被吃丢.
下面是此程序的代码(我未能将它运行成功,望哪位朋友给予帮助,谢谢!):
#include "graphics.h" /*图形系统头文件*/
#include<stdlib.h>
#include<dos.h>
#define LEFT 0x4b00 /*光标左键值*/
#define S 0x1f73
#define RIGHT 0x4d00 /*光标右键值*/
#define F 0x2166
#define DOWN 0x5000 /*光标下键值*/
#define D 0x2064
#define UP 0x4800 /*光标上键值*/
#define E 0x1265
#define ESC 0x011b /* ESC键值*/
#define ENTER 0x1c0d /* 回车键值*/
#define SPACE 0x3920
int key,a[4][4]={0},m=6,n=6,x,y;
void DrawkQP(void);
void QPchang(int x,int y,int t);
void noplay(int x,int y,int t);
void Mcolor(int x,int y);
void playtoplay();
void playwin(int m,int n);
void choosezi(int xx,int yy);
void Rrectangle(int x,int y,int t);
void Rfillellipse(int x,int y,int t);
/******主函数*********/
void main(void)
{ int gd=DETECT,gr;
initgraph(&gd,&gr,"e:\\turboc2"); /*初始化图形系统*/
DrawkQP();/*画棋盘*/
playtoplay();/*人人对战*/
getch();
closegraph();/*关闭图形系统*/
}
/*画图*/
void DrawkQP(void)
{ int i,j;
setbkcolor(BLUE);
for(i=150;i<=300;i+=50)
{ line(i,150,i,300);
line(150,i,300,i);
}
Rfillellipse(340,175,1);
Rfillellipse(340,225,2);
a[0][0]=a[0][1]=a[0][2]=a[0][3]=a[1][0]=a[1][3]=1;
a[2][0]=a[2][3]=a[3][0]=a[3][1]=a[3][2]=a[3][3]=2;
for(i=150;i<=300;i+=50)
Rfillellipse(i,150,1);
Rfillellipse(200,150,1);
Rfillellipse(200,300,1);
for(j=150;j<=300;j+=50)
Rfillellipse(j,300,2);
Rfillellipse(150,250,2);
Rfillellipse(300,250,2);
}
void playtoplay(void)
{ int xx,yy,i,j,t;
while(1)
{ xx=100;
yy=100;
while(1)
{ Rrectangle(xx,yy,RED);
key=bioskey(0);
if(key==ESC) break;
else if(key==ENTER)
{ choosezi(xx,yy);
if(a[(x-150)/50][(y-150)/50]==1) t=1;
if(a[(x-150)/50][(y-150)/50]==2) t=2;}
noplay(x,y,t);
QPchang(m,n,t);
}
t=t%2+1;
break;
}
}
void noplay(int x,int y,int t)
{ int i,j;
i=(x-150)/50;
j=(y-150)/50;
if(key==RIGHT||key==F&&a[i+1][j]==0)
{ a[i][j]=0;
Rfillellipse(x,y,BLUE);
Mcolor(x,y,t);
x+=50;
Rfillellipse(x,y,t);
}
else if(key==DOWN||key==D&&a[i][j+1]==0)
{ a[i][j]=0;
Rfillellipse(x,y,BLUE);
Mcolor(x,y,t);
y+=50;
Rfillellipse(x,y,t);
}
else if(key==LEFT||key==S&&a[i-1][j]==0)
{ a[i][j]=0;
Rfillellipse(x,y,BLUE);
Mcolor(x,y,t);
x-=50;
Rfilleillpse(x,y,t);
}
else if(key==UP||key==E&&a[i][j-1]==0)
{
a[i][j]=0;
Rfillellipse(x,y,BLUE);
Mcolor(x,y,t);
y-=50;
Rfillellipse(x,y,t);
}
}
void QPchang(int m,int n,int t)
{ int i;
for(i=0;i<4;i++)
{ if(a[i][0]==0)
{ if(a[i][1]==a[i][2]!=a[i][3]&&a[i][3]!=0)
小弟不才,急需此程序来交差.
程序是这样实现的,在一条线上,只有三粒籽是相邻的情况下,若有两粒相邻且相同颜色的棋子,第三籽就被吃丢,否则,换色走棋.若一方棋子数为一后,在一条线上的相邻的三粒籽,在中间的棋颜色与相邻棋子颜色不同,则相同颜色的棋子被吃丢.
下面是此程序的代码(我未能将它运行成功,望哪位朋友给予帮助,谢谢!):
#include "graphics.h" /*图形系统头文件*/
#include<stdlib.h>
#include<dos.h>
#define LEFT 0x4b00 /*光标左键值*/
#define S 0x1f73
#define RIGHT 0x4d00 /*光标右键值*/
#define F 0x2166
#define DOWN 0x5000 /*光标下键值*/
#define D 0x2064
#define UP 0x4800 /*光标上键值*/
#define E 0x1265
#define ESC 0x011b /* ESC键值*/
#define ENTER 0x1c0d /* 回车键值*/
#define SPACE 0x3920
int key,a[4][4]={0},m=6,n=6,x,y;
void DrawkQP(void);
void QPchang(int x,int y,int t);
void noplay(int x,int y,int t);
void Mcolor(int x,int y);
void playtoplay();
void playwin(int m,int n);
void choosezi(int xx,int yy);
void Rrectangle(int x,int y,int t);
void Rfillellipse(int x,int y,int t);
/******主函数*********/
void main(void)
{ int gd=DETECT,gr;
initgraph(&gd,&gr,"e:\\turboc2"); /*初始化图形系统*/
DrawkQP();/*画棋盘*/
playtoplay();/*人人对战*/
getch();
closegraph();/*关闭图形系统*/
}
/*画图*/
void DrawkQP(void)
{ int i,j;
setbkcolor(BLUE);
for(i=150;i<=300;i+=50)
{ line(i,150,i,300);
line(150,i,300,i);
}
Rfillellipse(340,175,1);
Rfillellipse(340,225,2);
a[0][0]=a[0][1]=a[0][2]=a[0][3]=a[1][0]=a[1][3]=1;
a[2][0]=a[2][3]=a[3][0]=a[3][1]=a[3][2]=a[3][3]=2;
for(i=150;i<=300;i+=50)
Rfillellipse(i,150,1);
Rfillellipse(200,150,1);
Rfillellipse(200,300,1);
for(j=150;j<=300;j+=50)
Rfillellipse(j,300,2);
Rfillellipse(150,250,2);
Rfillellipse(300,250,2);
}
void playtoplay(void)
{ int xx,yy,i,j,t;
while(1)
{ xx=100;
yy=100;
while(1)
{ Rrectangle(xx,yy,RED);
key=bioskey(0);
if(key==ESC) break;
else if(key==ENTER)
{ choosezi(xx,yy);
if(a[(x-150)/50][(y-150)/50]==1) t=1;
if(a[(x-150)/50][(y-150)/50]==2) t=2;}
noplay(x,y,t);
QPchang(m,n,t);
}
t=t%2+1;
break;
}
}
void noplay(int x,int y,int t)
{ int i,j;
i=(x-150)/50;
j=(y-150)/50;
if(key==RIGHT||key==F&&a[i+1][j]==0)
{ a[i][j]=0;
Rfillellipse(x,y,BLUE);
Mcolor(x,y,t);
x+=50;
Rfillellipse(x,y,t);
}
else if(key==DOWN||key==D&&a[i][j+1]==0)
{ a[i][j]=0;
Rfillellipse(x,y,BLUE);
Mcolor(x,y,t);
y+=50;
Rfillellipse(x,y,t);
}
else if(key==LEFT||key==S&&a[i-1][j]==0)
{ a[i][j]=0;
Rfillellipse(x,y,BLUE);
Mcolor(x,y,t);
x-=50;
Rfilleillpse(x,y,t);
}
else if(key==UP||key==E&&a[i][j-1]==0)
{
a[i][j]=0;
Rfillellipse(x,y,BLUE);
Mcolor(x,y,t);
y-=50;
Rfillellipse(x,y,t);
}
}
void QPchang(int m,int n,int t)
{ int i;
for(i=0;i<4;i++)
{ if(a[i][0]==0)
{ if(a[i][1]==a[i][2]!=a[i][3]&&a[i][3]!=0)