📄 bb010.c
字号:
if(E_FIRE_ATTACK<=90)
{
for(n=0;n<30;n++)
{
if(SB[n].RUN==0)
{
/*初始化一颗星星*/
SB[n].oa=90;
SB[n].PX=Xrand(50,560);
SB[n].PY=20;
SB[n].RUN=1;
break;
}
}
}
}
mx0=mouse.getx;
getmousexy();
if(mouse.getx!=mx0) /* 鼠标动了 x */
{
MAN.a+=mouse.getx-mx0;
if(MAN.a>360) MAN.a=360;
else if(MAN.a<180) MAN.a=180;
if(mouse.getx>=620){ setmousexy(320,240); getmousexy(); }
else if(mouse.getx<=20) { setmousexy(320,240); getmousexy(); }
MAN.move=1;
}
if(getmkeyin(mbLeft)==mbLeft) /*左键按下*/
{
MAN.fire=1;
}
if(getmkeyout(mbLeft)==mbLeft) /*左键鼠标抬起*/
{
MAN.fire=0;
}
/*++++++++++++++++++++++++对按键的响应+++++++++++++++++++++++++++++*/
/*退出*/
if(GetKey(KEY_ESC)) {
END=1;
}
/*左转*/
if(GetKey(KEY_LEFT)) {
MAN.a=MAN.a-3;
if(MAN.a>360) MAN.a=360;
else if(MAN.a<180) MAN.a=180;
MAN.move=1;
}
/*右转*/
if(GetKey(KEY_RIGHT)){
MAN.a=MAN.a+3;
if(MAN.a>360) MAN.a=360;
else if(MAN.a<180) MAN.a=180;
MAN.move=1;
}
/*开火射击*/
if(GetKey(KEY_SPACE)){
if(MAN.reload<=0){ /*装填时间*/
for(n=0;n<30;n++)
{
if(MB[n].RUN==0)
{
/*初始化一颗子弹*/
MB[n].oa=MAN.a;
MB[n].PX=Round(22*cos(MAN.a*PI/180))+MAN.X1;
MB[n].PY=Round(22*sin(MAN.a*PI/180))+MAN.Y1;
MB[n].RUN=1;
break;
}
}
MAN.reload=6;
}
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*++++++++++++++++++++++对玩家的事件处理+++++++++++++++++++++++++++*/
if(MAN.LIVE==1)
{
if(MAN.move==1)
{
GB_PERSON(MAN.X0,MAN.Y0,MAN.a0,0);
GB_PERSON(MAN.X1,MAN.Y1,MAN.a,9);
MAN.X0=MAN.X1;
MAN.Y0=MAN.Y1;
MAN.a0=MAN.a;
MAN.move=0;
}
if(MAN.fire==1) /*开火*/
{
if(MAN.reload<=0){ /*装填时间*/
for(n=0;n<30;n++)
{
if(MB[n].RUN==0)
{
/*初始化一颗子弹*/
MB[n].oa=MAN.a;
MB[n].PX=Round(22*cos(MAN.a*PI/180))+MAN.X1;
MB[n].PY=Round(22*sin(MAN.a*PI/180))+MAN.Y1;
MB[n].RUN=1;
break;
}
}
MAN.reload=6;
}
}
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
MAN.reload--; /*装填时间变化*/
if(MAN.reload<=0) MAN.reload=0;
TimeDelay(10000L); /*游戏延时*/
} /*while大循环末尾*/
GAME_OVER:;
closegraph();
ShutDownKeyboard(); /*恢复键盘中断*/
}
void set_color(int color,int R,int G,int B) /*改变调色板*/
{
static union REGS regs;
switch(color){
case 6:color=20;break;
case 8:color=56;break;
case 9:color=57;break;
case 10:color=58;break;
case 11:color=59;break;
case 12:color=60;break;
case 13:color=61;break;
case 14:color=62;break;
case 15:color=63;break;
default:break;
}
regs.h.ah=0x10;
regs.h.al=0x10;
regs.x.bx=color;
regs.h.ch=G;
regs.h.cl=B;
regs.h.dh=R;
int86(0x10,®s,®s);
return;
}
void VGA_RESET() /*图形模式初始化*/
{
int driver=VGA;
int mode=VGAHI;
registerbgidriver(EGAVGA_driver); /*图形模式独立运行*/
initgraph(&driver,&mode,"");
cleardevice();
setpalette(4,36); /*改变调色板颜色*/
setpalette(10,18);
setpalette(13,45);
setpalette(9,11);
setpalette(1,9);
setpalette(12,32);
set_color(7,112,112,112);
set_color(8,95,95,95);
}
void GB_PERSON(int X1,int Y1,int a,int COLOR) /*绘制*/
{
int X2,Y2;
setcolor(COLOR);
setfillstyle(1,COLOR);
circle(X1,Y1,12);
bar(X1-1,Y1-1,X1+1,Y1+1);
X2=Round(18*cos(a*PI/180))+X1; /*r=10 弧度=角度*PI/180*/
Y2=Round(18*sin(a*PI/180))+Y1;
line(X1,Y1,X2,Y2);
bar(X2-1,Y2-1,X2+1,Y2+1);
}
int Round(float x) /*四舍五入*/
{
return((int)(x+0.5));
}
void TimeDelay(unsigned long microsec) /*延时函数 传入微秒数*/
{
union REGS r;
r.h.ah=0x86;
r.x.cx=microsec>>16;
r.x.dx=microsec;
int86(0x15,&r,&r);
}
void MOVE_TO3(int oa,float *PX,float *PY,int D) /*移动到*/
{
*PX+=D*cos(oa*PI/180);
*PY+=D*sin(oa*PI/180);
}
void TRANSFORM(char filename[],int *NAME) /*把图象文件置入数组*/
{
int i,j;
char C;
FILE *fp;
if((fp=fopen(filename,"r"))==NULL) /*打开一个文件只读*/
{
sound(450);
delay(1200);
nosound();
/*失败画白方块*/
return;
}
for(i=0;i<=29;i++)
{
for(j=0;j<=29;j++)
{
C=fgetc(fp);
*(NAME+(i*30+j))=(int)(C-65); /*还原数字-65*/
}
}
fclose(fp);
}
void GB_TBF(int x,int y,int *NAME) /*显示*/
{ int i,j,X,Y;
X=x;
Y=y;
for(i=0,y=Y;i<=29;i++,y++)
{
for(j=0,x=X;j<=29;j++,x++)
if(*(NAME+(i*30+j))==3){;}
else{putpixel(x,y,*(NAME+(i*30+j)));}
}
}
int TimeDelayUnit(float t) /*计时 t秒*/
{
static clock_t start_time=0,end_time;
if(start_time==0){
start_time=clock();
}
end_time=clock();
if((end_time-start_time)/CLK_TCK>=t){
start_time=0;
return(1);
}
else
return(0);
}
int Xrand(int A,int B) /*随机数发生器A—B*/
{
int i,x;
while(1)
{
x=random(B);
if(x>=A) break;
}
return(x);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -