用c语言编的射箭游戏代码18.docx
- 文档编号:9295449
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:38
- 大小:22KB
用c语言编的射箭游戏代码18.docx
《用c语言编的射箭游戏代码18.docx》由会员分享,可在线阅读,更多相关《用c语言编的射箭游戏代码18.docx(38页珍藏版)》请在冰豆网上搜索。
用c语言编的射箭游戏代码18
ÓÃcÓïÑÔ±àµÄÉä¼ýÓÎÏ·´úÂë18.txtÀÏ×ÓºöÓƺ¢×ӽнÌÓý£¬º¢×ÓºöÓÆÀÏ×Ó½ÐÆÛÆ£¬»¥ÏàºöÓƽдú¹µ¡£¡øÄÐÈËÕ⻨»¨ÊÀ½ç£¬ÎÒÒªÓÃʲôÑÕÉ«À´ÎüÒýÄã¡£
#include
#include
#include
#include
#include
#include
#defineG9.8/*ÖØÁ¦¼ÓËÙ¶È*/
#definePI3.141593/*Ô²ÖÜÂÊ*/
#defineL160/*СÎÝÔ˶¯µÄ·¶Î§*/
#defineT1100
#defineR1200
#defineB1450
#defineAMD17.8/*ÐÞ¶©Êý7.8*/
#defineAMD21.78/*ÐÞ¶©Êý*/
/*Êó±êÐÅÏ¢ºê¶¨Òå*/
#defineWAITING0xff00
#defineLEFTPRESS0xff01
#defineLEFTCLICK0xff10
#defineLEFTDRAG0xff19
#defineRIGHTPRESS0xff02
#defineRIGHTCLICK0xff20
#defineRIGHTDRAG0xff2a
#defineMIDDLEPRESS0xff04
#defineMIDDLECLICK0xff40
#defineMIDDLEDRAG0xff4c
#defineMOUSEMOVE0xff08
intKeystate;
intMouseExist;
intMouseButton;
intMouseX;
intMouseY;
intup[16][16],down[16][16],mouse_draw[16][16],pixel_save[16][16];
voidMouseMath()/*¼ÆËãÊó±êµÄÑù×Ó*/
{
inti,j,jj,k;
longUpNum[16]={
0x3fff,0x1fff,0x0fff,0x07ff,
0x03ff,0x01ff,0x00ff,0x007f,
0x003f,0x00ff,0x01ff,0x10ff,
0x30ff,0xf87f,0xf87f,0xfc3f
};
longDownNum[16]={
0x0000,0x7c00,0x6000,0x7000,
0x7800,0x7c00,0x7e00,0x7f00,
0x7f80,0x7e00,0x7c00,0x4600,
0x0600,0x0300,0x0300,0x0180
};
for(i=0;i<16;i++)
{
j=jj=15;
while(UpNum[i]!
=0)
{
up[i][j]=UpNum[i]%2;
j--;
UpNum[i]/=2;
}
while(DownNum[i]!
=0)
{
down[i][jj--]=DownNum[i]%2;
DownNum[i]/=2;
}
for(k=j;k>=0;k--)
up[i][k]=0;
for(k=jj;k>=0;k--)
down[i][k]=0;
for(k=0;k<16;k++)/*ËÄÖÖ×éºÏ·½Ê½*/
{
if(up[i][k]==0&&down[i][k]==0)
mouse_draw[i][k]=1;
elseif(up[i][k]==0&&down[i][k]==1)
mouse_draw[i][k]=2;
elseif(up[i][k]==1&&down[i][k]==0)
mouse_draw[i][k]=3;
else
mouse_draw[i][k]=4;
}
}
mouse_draw[1][2]=4;/*ÌØÊâµã*/
}
/*Êó±ê¹â±êÏÔʾ*/
voidMouseOn()
{
intx=MouseX,y=MouseY;
inti,j;
intcolor;
for(i=0;i<16;i++)/*»Êó±ê*/
{
for(j=0;j<16;j++)
{
pixel_save[i][j]=getpixel(x+j,y+i);/*±£´æÔÀ´µÄÑÕÉ«*/
if(mouse_draw[i][j]==1)
putpixel(x+j,y+i,0);
elseif(mouse_draw[i][j]==2)
putpixel(x+j,y+i,15);
}
}
}
/*Òþ²ØÊó±ê*/
voidMouseOff()
{
inti,j,x,y,color;
x=MouseX;
y=MouseY;
for(i=0;i<16;i++)/*ÔλÖÃÒì»òÏûÈ¥*/
for(j=0;j<16;j++)
{
if(mouse_draw[i][j]==3||mouse_draw[i][j]==4)
continue;
color=getpixel(x+j,y+i);
putpixel(x+j,y+i,color^color);
putpixel(x+j,y+i,pixel_save[i][j]);
}
}
/*Êó±ê״ֵ̬³õʼ»¯*/
voidMouseReset()
{
_AX=0x00;
geninterrupt(0x33);
}
/*ÉèÖÃÊó±ê×óÓұ߽ç
lx:
×ó±ß½ç
rx:
Óұ߽ç*/
voidMouseSetX(intlx,intrx)
{
_CX=lx;
_DX=rx;
_AX=0x07;
geninterrupt(0x33);
}
/*ÉèÖÃÊó±êÉÏϱ߽ç
uy:
Éϱ߽ç
dy:
ϱ߽ç*/
voidMouseSetY(intuy,intdy)
{
_CX=uy;
_DX=dy;
_AX=0x08;
geninterrupt(0x33);
}
/*ÉèÖÃÊó±êµ±Ç°Î»ÖÃ
x:
ºáÏò×ø±ê
y:
×ÝÏò×ø±ê*/
voidMouseSetXY(intx,inty)
{
_CX=x;
_DX=y;
_AX=0x04;
geninterrupt(0x33);
}
/*»ñÈ¡Êó±ê°´Ï¼üµÄÐÅÏ¢*/
/*ÊÇ·ñ°´ÏÂ×ó¼ü
·µ»ØÖµ:
1=°´ÏÂ0=ÊÍ·Å*/
intLeftPress()
{
_AX=0x03;
geninterrupt(0x33);
return(_BX&1);
}
/*ÊÇ·ñ°´ÏÂÖмü
·µ»ØֵͬÉÏ*/
intMiddlePress()
{
_AX=0x03;
geninterrupt(0x33);
return(_BX&4);
}
/*ÊÇ·ñ°´ÏÂÓÒ¼ü
·µ»ØֵͬÉÏ*/
intRightPress()
{
_AX=0x03;
geninterrupt(0x33);
return(_BX&2);
}
/*»ñÈ¡Êó±êµ±Ç°Î»ÖÃ*/
voidMouseGetXY()
{
_AX=0x03;
geninterrupt(0x33);
MouseX=_CX;
MouseY=_DX;
}
/*Êó±ê°´¼üÇé¿ö,·µ»Ø0±íʾֻÒƶ¯£¬·µ»Ø1±íʾ×óÓÒ¼üͬʱ°´Ï£¬2±íʾֻ°´ÁË×ó¼ü£¬3±íʾֻ°´ÁËÓÒ¼ü*/
intMouseStatus()
{
intx,y;
intstatus;
intpress=0;
inti,j,color;
status=0;/*ĬÈÏÊó±êûÓÐÒƶ¯*/
x=MouseX;
y=MouseY;
while(x==MouseX&&y==MouseY&&status==0&&press==0)
{
if(LeftPress()&&RightPress())
press=1;
elseif(LeftPress())
press=2;
elseif(RightPress())
press=3;
MouseGetXY();
if(MouseX!
=x||MouseY!
=y)
status=1;
}
if(status)/*Òƶ¯Çé¿ö²ÅÖØÐÂÏÔʾÊó±ê*/
{
for(i=0;i<16;i++)/*ÔλÖÃÒì»òÏûÈ¥*/
for(j=0;j<16;j++)
{
if(mouse_draw[i][j]==3||mouse_draw[i][j]==4)
continue;
color=getpixel(x+j,y+i);
putpixel(x+j,y+i,color^color);
putpixel(x+j,y+i,pixel_save[i][j]);
}
MouseOn();/*ÐÂλÖÃÏÔʾ*/
}
if(press!
=0)/*Óа´¼üµÄÇé¿ö*/
returnpress;
return0;/*Ö»Òƶ¯µÄÇé¿ö*/
}
/*¶¨ÒåÍæ¼ÒµÄ½á¹¹Ìå*/
structRen{
intx,y;
intlife;
intcolor;
intlr;/*1±íʾ×ó£¬2±íʾÓÒ¡£*/
};
/*»æÖÆÓÎÏ·½çÃæ*/
voidDesktop()
{
setcolor(14);
line(320,0,320,480);
rectangle(L1-20,T1-40,R1+20,B1+10);
rectangle(640-(R1+20),(T1-40),640-(L1-20),B1+10);
outtextxy(25,20,"P1");
outtextxy(345,20,"P2");
}
/*Åжϵã(x,y)ÊÇ·ñÔÚÒÔ(cx,cy)ΪԲÐÄ£¬ÒÔrΪ°ë¾¶µÄÔ²ÄÚ*/
/*intPointCircle(intcx,intcy,intr,int*x,int*y)
{
doubleg;
if((cx-(*x))*(cx-(*x))+(cy-(*y))*(cy-(*y))<=r*r)
return1;
else
{
g=sqrt((double)((*x-cx)*(*x-cx)+(*y-cy)*(*y-cy)))/(double)(r);
*x=(int)((double)(*x-cx)/g)+cx;
*y=(int)((double)(*y-cy)/g)+cy;
return0;
}
}*/
/*°ÑÒ»¸öÊý×Önת»»³É×Ö·û´®£¬²¢´æ´¢ÔÚaÖУ¬´ø·ûºÅ+-*/
voidnumtostr(intn,chara[5])
{
intw,e;
e=n;
n=abs(n);
a[3]=(n%10)+'0';
w=n/10;
a[2]=(w%10)+'0';
w=w/10;
a[1]=(w%10)+'0';
a[4]='\0';
if(e<0)
a[0]='-';
else
a[0]='+';
}
/*°ÑËٶȺͽǶÈ×°»»³É×Ö·û´®Êä³ö*/
voidAngleSpeed(doubles,doubleangle)
{
intss,aa;
charzzs[5],zza[5];
intleft,top,right,bottom;
left=275;
top=50;
right=left+90;
bottom=top+10;
ss=(int)(s);
aa=(int)((angle)*180/PI);
numtostr(ss,zzs);
numtostr(aa,zza);
setfillstyle(1,15);
setcolor(10);
bar(left,top,right,bottom);
outtextxy(left+5,top+3,zzs);
outtextxy((left+right)/2+5,top+3,zza);
circle(right-6,top+3,2);
}
/*ʵÏÖÈË»ú¶Ô¿¹µÄº¯Êý*/
voidFire(inta[4],double*v,double*angle,intn)/*aÊý×é´æ·Å¶ÔÉäµÄÁ½µã£¬vºÍangle´æ·Å»úÆ÷Éä»÷µÄ½Ç¶ÈºÍËٶȣ¬n±íʽ»úÆ÷Éä»÷µÄ׼ȷ¶È*/
{
intt;
doublevx,vy;
doublesx,sy;
intm;
m=12*4/n;
randomize();
m=random(m)-m/2;
t=20;
sx=(double)(a[2]-a[0]);
sy=(double)(a[3]-a[1]);
vx=sx/(double)(t);
vy=(sy-0.5*PI*(double)(t*t))/(double)(t);
*angle=atan((-vy)/vx);
*v=sqrt(vx*vx+vy*vy);
*v=(*v)*(AMD2+0.01*(double)(m));
AngleSpeed(*v,*angle);
}
/*»æÖÆÉúÃüÏߵĺ¯Êý*/
voidLifePicture(intlife,intcolor,intlocation)
{
charlm[5];
intl,t,r,b;
l=50;
t=20;
r=l+200;
b=t+10;
numtostr(life,lm);
setfillstyle(1,color);
setcolor(15);
if(location==1||location==3)
{
bar(l,t,r,b);
setfillstyle(1,4);
bar(l,t+(b-t)/4,l+life,t+3*(b-t)/4);
setfillstyle(1,color);
bar(r+10,t,r+50,b);
outtextxy(r+10+5,t+2,lm);
}
else
{l=320+50;
r=l+200;
bar(l,t,r,b);
setfillstyle(1,4);
bar(l,t+(b-t)/4,l+life,t+3*(b-t)/4);
setfillstyle(1,color);
bar(r+10,t,r+50,b);
outtextxy(r+10+5,t+2,lm);
}
}
/*»æÖÆСÎݵĺ¯Êý*/
voidRenPicture(intx,inty,intcolor)
{
setcolor(color);
setwritemode
(1);
line(x,y-40,x-10,y-30);/*»Í·*/
line(x,y-40,x+10,y-30);
line(x-10,y-30,x+10,y-30);
line(x-5,y-30,x-5,y-10);/*»²±×Ó*/
line(x+5,y-30,x+5,y-10);
line(x-20,y-10,x+20,y-10);/*»Éí×Ó*/
line(x-20,y+10,x+20,y+10);
line(x-20,y-10,x-20,y+10);
line(x+20,y-10,x+20,y+10);
}
/*»æÖƼýµÄº¯Êý*/
voidPictureBullets(intwx,intwy,inttx,intty)
{
setcolor(RED);
line(wx,wy,tx,ty);
line(wx-1,wy-1,tx,ty);
line(wx+1,wy+1,tx,ty);
}
/*»æÖÆСÎÝÉϼýµÄº¯Êý*/
voidInitialArrow(intx,inty,intc[4])
{
intaddx=0,addy=0;
inta[2],b[2];
intbowb=7;
intbowx=2;
doublebow=80.0;
bow=bow/2;
a[0]=x;
a[1]=y;
b[0]=x;
b[1]=y;
if((c[0]==c[2])&&(c[1]==c[3]))
{
addx=(c[2]-c[0])/6;
addy=(c[3]-c[1])/6;
PictureBullets(x+addx,y+addy,x-addx/4,y-addy/4);
setcolor(bowb);
line(a[0],a[1],b[0],b[1]);
setcolor(bowx);
line(a[0],a[1],x+addx,y+addy);
line(b[0],b[1],x+addx,y+addy);
}
else
{
addx=(c[2]-c[0])/6;
addy=(c[3]-c[1])/6;
PictureBullets(x+addx,y+addy,x-addx/4,y-addy/4);
if(addx==0&&addy!
=0)
{
a[0]=b[0]=x;
a[1]=y-(int)(bow);
b[1]=y+(int)(bow);
}
if(addx!
=0&&addy==0)
{
a[1]=b[1]=y;
a[0]=x-(int)(bow);
b[0]=x+(int)(bow);
}
if(addx!
=0&&addy!
=0)
{
a[0]=x+(int)(bow*sqrt((double)(addy)*(double)(addy)/((double)(addx)*(double)(addx)+(double)(addy)*(double)(addy))));
a[1]=y-(a[0]-x)*(addx)/addy;
b[0]=x-(int)(bow*sqrt((double)(addy)*(double)(addy)/((double)(addx)*(double)(addx)+(double)(addy)*(double)(addy))));
b[1]=y-(b[0]-x)*(addx)/addy;
}
setcolor(bowb);
line(a[0],a[1],b[0],b[1]);
setcolor(bowx);
line(a[0],a[1],x+addx,y+addy);
line(b[0],b[1],x+addx,y+addy);
}
}
/*Åжϵãqx£¬qyÔÚÖ±ÏßµÄʲôλÖÃ*/
intPointPlace(intqx,intqy,intx1,inty1,intx2,inty2)/*·µ»Ø0±íʾÔÚÖ±ÏßÉÏ£¬µ±Ð±ÂÊ´æÔÚʱ£º1±íʾÔÚÖ±ÏßµÄÉÏÃ棬2±íʾÔÚÖ±ÏßµÄÏÂÃ棬µ±Ð±Âʲ»´æÔÚʱ£º3±íʾÔÚ×óÃ棬4±íʾÔÚÓÒÃæ*/
{
ints;
if(x1==x2)
{
if(qx return3; elseif(qx>x1) return4; else return0; } else { s=(int)(((double)(y1-y2))/((double)(x1-x2))*((double)(qx-x1))+(double)(y1)); if(qy return1; elseif(qy>s) return2; else return0; } } /*¸ù¾ÝÁ½µã×ø±ê¼ÆËã³öÁ½µã¾àÀëºÍÏòÁ¿(twoxy[0]-twoxy[2],twoxy[1]-twoxy[3])Óë(vectorx,vectory)µÄ¼Ð½Ç¡£*/ voidDistanceAngle(inttwoxy[4],intvectorx,intvectory,double*distance,double*angle) { doublea,b; doubles; if((twoxy[0]==twoxy[2])&&twoxy[1]==twoxy[3]) { *distance=0; *angle=0; } else { b=(double)((double)(twoxy[3]-twoxy[1])*(double)(twoxy[3]-twoxy[1])+(double)(twoxy[2]-twoxy[0])*(double)(twoxy[2]-twoxy[0])); b=sqrt(b); *distance=b; s=(double)((double)(vectorx)*(double)(vectorx)+(double)(vectory)*(double)(vectory)); s=sqrt(s); a=(double)(((double)(twoxy[0]-twoxy[2])*(double)(vect
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 射箭 游戏 代码 18