#include \"Conio.h\"
#include \"graphics.h\"
#include \"bios.h\"
#include \"stdlib.h\"
#include \"math.h\"
#define closegr closegraph
#define VK_LEFT 0x4B00
#define VK_RIGHT 0x4D00
#define VK_UP 0x4800
#define VK_DOWN 0x5000
#define VK_SPACE 0x3920
#define VK_ESC 0x011B
typedef struct
{
int x1,y1,x2,y2;
int length;
int jiaodu;
int n;
}Line;
typedef struct
{
int wux[10];
int wuy[10];
int sum;
}wu;
/***********************************/
void kaishiye(int s);
void caozuoye(int jian,int* s,int* zhuangtai);
/************************************/
void chushiline(Line* l,int x1,int y1,int length,int jiaodu,int n);
void youxiye();
void hualine(Line* l);
void zhuangline(Line* l);
void kongzhiline(Line* l,int key);
void chushiwu(wu* w);
void huawu(wu* w);
void panduan(Line* l,wu* w,int* zhuangtai);
void y3hua();
void go();
void initgr(void)
{
int gd = EGA, gm = EGAHI;
registerbgidriver(EGAVGA_driver);
initgraph(&gd, &gm, \"\");
}
int main(void)
{
initgr();
go();
getch();
closegr();
return 0;
}
void youxiye() /* 游戏页 */
{
setfillstyle(SOLID_FILL,15);
bar(0,0,639,49);
setfillstyle(SOLID_FILL,6);
bar(0,49,639,349);
setcolor(BLUE);
line(0,49,638,49);
setcolor(BLUE);
circle(320,25,7);
setcolor(BLUE);
circle(320,38,12);
setcolor(BLUE);
}
void go()
{
int page=0;
int jian;
int Y1_s=1;
int zhuangtai=1;
Line l;
wu w;
chushiline(&l,320,50,60,-27,2);
chushiwu(&w);
while(1)
{
delay(10);
page=(page+1)%2;
if(bioskey(1))
jian=bioskey(0);
else
jian=0;
if(jian==VK_ESC)
break;
switch(zhuangtai)
{
case 1:
caozuoye(jian,&Y1_s,&zhuangtai);
break;
case 2:
zhuangline(&l);
kongzhiline(&l,jian);
panduan(&l,&w,&zhuangtai);
break;
case 3:
break;
}
setactivepage(page);
switch(zhuangtai)
{
case 1:
kaishiye(Y1_s);
break;
case 2:
youxiye();
hualine(&l);
huawu(&w);
break;
case 3:
y3hua();
break;
}
setvisualpage(page);
}
}
void kaishiye(int s) /* 开始页 */
{
setfillstyle(SOLID_FILL,0);
bar(0,0,639,349);
setbkcolor(RED);
setcolor(YELLOW);
settextstyle(0,0,7);
outtextxy(30,45,\"GOLD miner\");
setcolor(GREEN);
settextstyle(0,0,3);
outtextxy(380,320,\"start\");
outtextxy(540,320,\"exit\");
setcolor(BLUE);
settextstyle(0,0,2);
outtextxy(400,250,\"by_libby\");
setcolor(BLUE);
setfillstyle(SOLID_FILL,BLUE);
if(s==1)
fillellipse(370,330,12,12);
else if(s==2)
fillellipse(530,330,12,12);
}
void caozuoye(int jian,int* s,int* zhuangtai) /* 操作页 */
{
switch(jian)
{
case VK_LEFT:
*s=1;
break;
case VK_RIGHT:
*s=2;
break;
case VK_SPACE:
if(*s==1)
*zhuangtai=2;
else
*zhuangtai=0;
break;
case VK_ESC:
*zhuangtai=0;
break;
}
}
void chushiline(Line* l,int x1,int y1,int length,int jiaodu,int n)
{
l->x1=x1;
l->y1=y1;
l->length=length;
l->jiaodu=jiaodu;
l->n=n;
l->x2=320;
l->y2=110;
}
void hualine(Line* l)
{
setlinestyle(3,USERBIT_LINE,3);
line(l->x1,l->y1,l->x2,l->y2);
}
void zhuangline(Line* l)
{
l->x2=l->x1+l->length*cos(((1.0*l->jiaodu)/18)*M_PI);
l->y2=l->y1+l->length*sin(((1.0*l->jiaodu)/18)*M_PI);
if(l->jiaodu==-19)
{
l->n=2;
}
if(l->jiaodu==-35)
{
l->n=1;
}
if(l->n==2)
{
l->jiaodu--;
}
if(l->n==1)
{
l->jiaodu++;
}
if(l->n==3)
{
if(l->x2<=640&&l->x2>=0&&l->y2<=350)
{
l->length=l->length+20;
}
else
l->n=4;
}
if(l->n==4)
{
l->length=l->length-20;
if(l->length<=60)
l->n=2;
}
}
void kongzhiline(Line* l,int key)
{
switch(key)
{
case VK_DOWN :
{
if(l->n!=4)
l->n=3;
}
break;
case VK_UP :
{
l->n=4;
}
}
}
void chushiwu(wu* w)
{
int n;
for(n=0;n<10;n++)
{
w->wux[n]=rand()%620+10;
w->wuy[n]=rand()%220+110;
}
}
void huawu(wu* w)
{
int n;
for(n=0;n<10;n++)
{
setcolor(3);
setfillstyle(SOLID_FILL,YELLOW);
setlinestyle(0,USERBIT_LINE,1);
fillellipse(w->wux[n],w->wuy[n],20,20);
}
}
void panduan(Line* l,wu* w,int* zhuangtai)
{
int n;
if(w->sum<=10)
{
for(n=0;n<10;n++)
{
if(sqrt(1.0*(l->x2-w->wux[n])*(l->x2-w->wux[n])+1.0*(l->y2-w->wuy[n])*(l->y2-w->wuy[n]))<=23)
{
l->n=4;
if(l->length>80)
{
w->wux[n]=l->x2;
w->wuy[n]=l->y2;
}
} }
}
else
else
{
w->wux[n]=15+25*n;
w->wuy[n]=25;
w->sum++;
}
{
*zhuangtai=3;
}
}
void y3hua()
{
setfillstyle(SOLID_FILL,3);
bar(0,0,639,349);
setbkcolor(BLUE);
setcolor(YELLOW);
settextstyle(0,0,7);
outtextxy(130,50,\"You Won\");
}
因篇幅问题不能全部显示,请点此查看更多更全内容