1、TC水果忍者MAIN函数部分#include #include #include #include #include #include #include f_gra.c#include f_math.c#include f_mou.c#include f_def.c/*-MAIN 函数在这里-*/main()int i=0,j=0,k=0,keep=1,temp,fru_tag=0,bla_tag=0,lig_tag=0,pat_tag=0,hmx=0,hmy=0,hmk=0,refresh=0,exit=0,highscore=0;int activate=0,hactivate=0,sco
2、re=0,combo=0,perfect=0,fru_frq=2,sc2_quit=0;int timer_p=0,timer_c=0,px,py,cx,cy;int key;int combostr3,scorestr5,ref=1;int scene=1,sce_del,sce_tri=0,sce_jump=0; /*scene: 1.开始画面 2.游戏界面 3.游戏简介 4.高分榜 5.作者名单*/float k1,b1,k2,b2,k3,b3,ptl1,ptl2,ptl3,ltl,x1,x2,y1,y2;double tana=0,sina,cosa,line;int gdriver=
3、VGA,gmode=VGAHI;initgraph(&gdriver,&gmode,C:TC20BGI);srand(time(NULL);mou_on();setbkcolor(bkc);while(exit=0)/*-S C E N E 1-*/while(scene=1) setbkcolor(bkc); if(highscore10) scorestr0=(highscore%10)+0; scorestr1=(highscore%100)/10+0; scorestr2=highscore/100+0; setcolor(RED); outtextxy(420,230,HIGHSCO
4、RE); outtextxy(440,255,&scorestr0); outtextxy(430,255,&scorestr1); outtextxy(420,255,&scorestr2); setcolor(BLUE); outtextxy(275,90,FRUIT NINJA); outtextxy(175,150,START TRAINING !); outtextxy(190,225,HOW TO PLAY ?); outtextxy(205,300,ABOUT US); outtextxy(220,375,BYE BYE .); if(ref=1) fruit2.exi=1; f
5、ruit2.type=2; fruit2.y=HIG-150; fruit2.x=125; fruit3.exi=1; fruit3.type=3; fruit3.y=HIG-225; fruit3.x=140; fruit4.exi=1; fruit4.type=4; fruit4.y=HIG-300; fruit4.x=155; fruit5.exi=1; fruit5.type=1; fruit5.y=HIG-375; fruit5.x=170; ref=0; mou_read(); mou_spe(); mou_act(); activate=( (mou_k=1) & (mou_x-
6、hmx)*(mou_x-hmx)+(mou_y-hmy)*(mou_y-hmy)act_spe ); /* 当鼠标左键按下并且有运动时设定鼠标激活activate=1 */ if(activate) /*在鼠标激活情况下激活刀刃光影的刷新*/ bladebla_tag.exi=1; bladebla_tag.hx=hmx; bladebla_tag.hy=hmy; bladebla_tag.x=mou_x; bladebla_tag.y=mou_y; tana=(mou_y-hmy)/(double)(mou_x-hmx); line=sqrt(1+tana*tana); sina=tana/
7、line; cosa=1/line; bladebla_tag.x+=bla_tra*cosa; bladebla_tag.y+=bla_tra*sina; bladebla_tag.hx-=bla_tra*cosa; bladebla_tag.hy-=bla_tra*sina; bla_tag+; if(bla_tag=B_AMOUNT-1) bla_tag=0; if(hmk=1&mou_k=0|(!activate) for(i=0;iB_AMOUNT;i+) bladei.exi=0;for(i=0;iL_AMOUNT;i+) if(lighti.exi=1) lighti.time-
8、; if(lighti.time=0) lighti.exi=0; for(i=0;iP_AMOUNT;i+) if(patchi.exi=1) patchi.x+=patchi.dx; patchi.y+=patchi.dy; patchi.dy-=phy_g; if(patchi.yHIG|patchi.xWID) patchi.exi=0; /*刀刃初始位置hmx,hmy末位置mou_x,mou_y 切割水果判定*/for(i=0;iF_AMOUNT;i+) if(activate=1&fruiti.exi=1) x1=hmx; y1=hmy; x2=mou_x; y2=mou_y; k
9、1=(y2-y1)/(x2-x1); b1=y1-x1*k1; k2=k3=-1/k1; b2=y1-x1*k2; b3=y2-x2*k3; ptl1=ptl(k1,b1,fruiti.x,fruiti.y); ptl2=ptl(k2,b2,fruiti.x,fruiti.y); ptl3=ptl(k3,b3,fruiti.x,fruiti.y); x1=10; y1=k2*x1+b2; ltl=ptl(k3,b3,x1,y1); if( (ptl1fru_r)&(ptl2+ptl3)(ltl+0.1) ) /*如果切到水果*/ if(bla_tag=0) temp=B_AMOUNT-1; e
10、lse temp=bla_tag-1; lightlig_tag.exi=1; lightlig_tag.time=light_time; lightlig_tag.x1=bladetemp.x+light_len*cosa; lightlig_tag.y1=bladetemp.y+light_len*sina; lightlig_tag.x2=bladetemp.x-light_len*cosa; lightlig_tag.y2=bladetemp.y-light_len*sina; lig_tag+; if(lig_tag=L_AMOUNT-1) lig_tag=0; fruiti.exi
11、=0; temp=ran_int(pat_amt/2,pat_amt); for(j=0;jtemp;j+) /*碎片的生成效果运算*/ for(k=0;kP_AMOUNT;k+) if(patchk.exi=0) pat_tag=k;break; patchpat_tag.exi=1; patchpat_tag.type=fruiti.type; patchpat_tag.x=fruiti.x; patchpat_tag.y=fruiti.y; patchpat_tag.dx=mou_dx/4+fruiti.dx+ran_int(-pat_arr,pat_arr); patchpat_tag
12、.dy=mou_dy/4+fruiti.dy+ran_int(-pat_arr,pat_arr); for(i=2;i=5;i+) if(fruiti.exi=0) if(i=5) exit=1; scene=-1; else scene=i; ref=1; /*场景切换*/ if(ref=1) for(j=2;jact_spe );if(activate)/*如果鼠标为激活状态生成并刷新刀刃光影*/ bladebla_tag.exi=1; bladebla_tag.hx=hmx; bladebla_tag.hy=hmy; bladebla_tag.x=mou_x; bladebla_tag.
13、y=mou_y; tana=(mou_y-hmy)/(double)(mou_x-hmx); line=sqrt(1+tana*tana); sina=tana/line; cosa=1/line; bladebla_tag.x+=bla_tra*cosa; bladebla_tag.y+=bla_tra*sina; bladebla_tag.hx-=bla_tra*cosa; bladebla_tag.hy-=bla_tra*sina; bla_tag+; if(bla_tag=B_AMOUNT-1) bla_tag=0; if(hmk=1&mou_k=0|(!activate) for(i
14、=0;iB_AMOUNT;i+) bladei.exi=0;if(ran_int(1,100)=fru_frq) /*水果随机生成*/ for(i=0;i(WID/2) fruitfru_tag.dx=-fruitfru_tag.dx; fruitfru_tag.w=ran_int(fru_max_spe_w/2,fru_max_spe_w); for(i=0;iL_AMOUNT;i+)/*水果在重力的影响下下落,速度dv=dv+g*/ if(lighti.exi=1) lighti.time-; if(lighti.time=0) lighti.exi=0; for(i=0;iP_AMOUN
15、T;i+)/*碎片在重力影响下下落,速度dv=dv+g*/ if(patchi.exi=1) patchi.x+=patchi.dx; patchi.y+=patchi.dy; patchi.dy-=phy_g; if(patchi.yHIG|patchi.xWID) patchi.exi=0; for(i=0;iF_AMOUNT;i+) if(fruiti.exi=1) fruiti.x+=fruiti.dx; fruiti.y+=fruiti.dy; fruiti.dy-=phy_g; if(fruiti.x0|fruiti.yWID|fruiti.yHIG) /*水果出界处理*/ fru
16、iti.exi=0; /*刀刃初始位置hmx,hmy末位置mou_x,mou_y 切割水果判定*/for(i=0;iF_AMOUNT;i+) if(activate=1&fruiti.exi=1) x1=hmx; y1=hmy; x2=mou_x; y2=mou_y; k1=(y2-y1)/(x2-x1); b1=y1-x1*k1; k2=k3=-1/k1; b2=y1-x1*k2; b3=y2-x2*k3; ptl1=ptl(k1,b1,fruiti.x,fruiti.y); ptl2=ptl(k2,b2,fruiti.x,fruiti.y); ptl3=ptl(k3,b3,fruiti.x
17、,fruiti.y); x1=10; y1=k2*x1+b2; ltl=ptl(k3,b3,x1,y1); if( (ptl1fru_r)&(ptl2+ptl3)(ltl+0.1) ) /*如果切到水果*/ if(fruiti.type=1) cleardevice() ; scene=5; else score+; combo+; if(bla_tag=0) temp=B_AMOUNT-1; else temp=bla_tag-1; /*切到水果生成光影效果*/ lightlig_tag.exi=1; lightlig_tag.time=light_time; lightlig_tag.x1
18、=bladetemp.x+light_len*cosa; lightlig_tag.y1=bladetemp.y+light_len*sina; lightlig_tag.x2=bladetemp.x-light_len*cosa; lightlig_tag.y2=bladetemp.y-light_len*sina; lig_tag+; if(lig_tag=L_AMOUNT-1) lig_tag=0; fruiti.exi=0; temp=ran_int(pat_amt/2,pat_amt); /*切到水果生成碎片*/ for(j=0;jtemp;j+) for(k=0;kP_AMOUNT
19、;k+) if(patchk.exi=0) pat_tag=k;break; patchpat_tag.exi=1; patchpat_tag.type=fruiti.type; patchpat_tag.x=fruiti.x; patchpat_tag.y=fruiti.y; patchpat_tag.dx=mou_dx/4+fruiti.dx+ran_int(-pat_arr,pat_arr); patchpat_tag.dy=mou_dy/4+fruiti.dy+ran_int(-pat_arr,pat_arr); if(ptl1=c_least) combostr0=combo%10+
20、0; combostr1=combo/10+0; combostr2=!; score+=combo; timer_c=time_combo; combo=0; if(refresh=REFRESH)cleardevice() ;setcolor(bla_c);circle(mou_x,HIG-mou_y,3);vis_light(light);vis_fruit(fruit);vis_blade(blade);vis_patch(patch);if(timer_p0) setcolor(RED); outtextxy(px,HIG-py,Perfect!); /*完美切割*/ setcolo
21、r(WHITE); timer_p-; if(timer_c0) setcolor(RED); outtextxy(WID-50,20,COMBO!); /*连击*/ outtextxy(WID-50,50,combostr); setcolor(WHITE); timer_c-; scorestr0=(score%10)+0;scorestr1=(score%100)/10+0;scorestr2=score/100+0;setcolor(BLUE);outtextxy(0,20,SCORE:); /*分数*/outtextxy(20,50,&scorestr0);outtextxy(10,
22、50,&scorestr1);outtextxy(00,50,&scorestr2);setcolor(WHITE);fru_frq=score/50+2;refresh=0;if(mou_k=2) scene=1;hmx=mou_x;hmy=mou_y;hmk=mou_k;hactivate=activate;delay(DELAY) ;refresh+;/*-S C E N E 3-*/while(scene=3) /*游戏介绍部分*/ cleardevice() ; cleardevice() ; setcolor(BLUE); setbkcolor(LIGHTCYAN); vis_wa
23、termelon(50,20); vis_apple(150,20); vis_coconut(250,20); vis_orange(350,20); vis_mango(450,20); outtextxy(100,100,Welcome to the world of Fruit Ninja !); delay(500); outtextxy(100,125,In this world you are an excellent Ninja.); delay(500); outtextxy(100,150,Now you have an urgent MISSION to accompli
24、sh! ); delay(500); outtextxy(100,175,That Is :); delay(500); outtextxy(100,200,Cutting Fruits !); delay(500); setcolor(RED); outtextxy(100,250,Remember This:); delay(500); outtextxy(100,275,Cut as many fruits as you can!); delay(500); outtextxy(100,300,But never touch the RED ones cause they are BOMBS!); delay(500); setcolor(BLUE); outtextxy(100,400,Press Q to continue.); vis_bomb(30,370); while(bioskey(0)!=4209) ; scene=1; /*-S C E
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1