TC水果忍者MAIN函数部分.docx

上传人:b****5 文档编号:3247856 上传时间:2022-11-21 格式:DOCX 页数:17 大小:19.48KB
下载 相关 举报
TC水果忍者MAIN函数部分.docx_第1页
第1页 / 共17页
TC水果忍者MAIN函数部分.docx_第2页
第2页 / 共17页
TC水果忍者MAIN函数部分.docx_第3页
第3页 / 共17页
TC水果忍者MAIN函数部分.docx_第4页
第4页 / 共17页
TC水果忍者MAIN函数部分.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

TC水果忍者MAIN函数部分.docx

《TC水果忍者MAIN函数部分.docx》由会员分享,可在线阅读,更多相关《TC水果忍者MAIN函数部分.docx(17页珍藏版)》请在冰豆网上搜索。

TC水果忍者MAIN函数部分.docx

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()

{

inti=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;

intactivate=0,hactivate=0,score=0,combo=0,perfect=0,fru_frq=2,sc2_quit=0;

inttimer_p=0,timer_c=0,px,py,cx,cy;

intkey;

intcombostr[3],scorestr[5],ref=1;

intscene=1,sce_del,sce_tri=0,sce_jump=0;/*scene:

1.开始画面2.游戏界面3.游戏简介4.高分榜5.作者名单*/

floatk1,b1,k2,b2,k3,b3,ptl1,ptl2,ptl3,ltl,x1,x2,y1,y2;

doubletana=0,sina,cosa,line;

intgdriver=VGA,gmode=VGAHI;

initgraph(&gdriver,&gmode,"C:

\\TC20\\BGI");

srand(time(NULL));

mou_on();

setbkcolor(bkc);

while(exit==0)

{

/*--------------------------------SCENE1------------------------------*/

while(scene==1)

{

setbkcolor(bkc);

if(highscore>10)

{

scorestr[0]=(highscore%10)+'0';

scorestr[1]=(highscore%100)/10+'0';

scorestr[2]=highscore/100+'0';

setcolor(RED);

outtextxy(420,230,"HIGHSCORE");

outtextxy(440,255,&scorestr[0]);

outtextxy(430,255,&scorestr[1]);

outtextxy(420,255,&scorestr[2]);

}

setcolor(BLUE);

outtextxy(275,90,"FRUITNINJA");

outtextxy(175,150,"STARTTRAINING!

");

outtextxy(190,225,"HOWTOPLAY?

");

outtextxy(205,300,"ABOUTUS");

outtextxy(220,375,"BYEBYE...");

if(ref==1)

{

fruit[2].exi=1;

fruit[2].type=2;

fruit[2].y=HIG-150;

fruit[2].x=125;

fruit[3].exi=1;

fruit[3].type=3;

fruit[3].y=HIG-225;

fruit[3].x=140;

fruit[4].exi=1;

fruit[4].type=4;

fruit[4].y=HIG-300;

fruit[4].x=155;

fruit[5].exi=1;

fruit[5].type=1;

fruit[5].y=HIG-375;

fruit[5].x=170;

ref=0;

}

mou_read();

mou_spe();

mou_act();

activate=((mou_k==1)&&((mou_x-hmx)*(mou_x-hmx)+(mou_y-hmy)*(mou_y-hmy))>act_spe);

/*当鼠标左键按下并且有运动时设定鼠标激活activate=1*/

if(activate)

/*在鼠标激活情况下激活刀刃光影的刷新*/

{

blade[bla_tag].exi=1;

blade[bla_tag].hx=hmx;

blade[bla_tag].hy=hmy;

blade[bla_tag].x=mou_x;

blade[bla_tag].y=mou_y;

tana=(mou_y-hmy)/(double)(mou_x-hmx);

line=sqrt(1+tana*tana);

sina=tana/line;

cosa=1/line;

blade[bla_tag].x+=bla_tra*cosa;

blade[bla_tag].y+=bla_tra*sina;

blade[bla_tag].hx-=bla_tra*cosa;

blade[bla_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;i

for(i=0;i

{

if(light[i].exi==1)light[i].time--;

if(light[i].time<=0)light[i].exi=0;

}

for(i=0;i

{

if(patch[i].exi==1)

{

patch[i].x+=patch[i].dx;

patch[i].y+=patch[i].dy;

patch[i].dy-=phy_g;

if(patch[i].y<0||patch[i].y>HIG||patch[i].x<0||patch[i].x>WID)patch[i].exi=0;

}

}

/*刀刃初始位置hmx,hmy末位置mou_x,mou_y切割水果判定*/

for(i=0;i

{

if(activate==1&&fruit[i].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,fruit[i].x,fruit[i].y);

ptl2=ptl(k2,b2,fruit[i].x,fruit[i].y);

ptl3=ptl(k3,b3,fruit[i].x,fruit[i].y);

x1=10;

y1=k2*x1+b2;

ltl=ptl(k3,b3,x1,y1);

if((ptl1

{

if(bla_tag==0)temp=B_AMOUNT-1;

elsetemp=bla_tag-1;

light[lig_tag].exi=1;

light[lig_tag].time=light_time;

light[lig_tag].x1=blade[temp].x+light_len*cosa;

light[lig_tag].y1=blade[temp].y+light_len*sina;

light[lig_tag].x2=blade[temp].x-light_len*cosa;

light[lig_tag].y2=blade[temp].y-light_len*sina;

lig_tag++;

if(lig_tag==L_AMOUNT-1)lig_tag=0;

fruit[i].exi=0;

temp=ran_int(pat_amt/2,pat_amt);

for(j=0;j

{

for(k=0;k

patch[pat_tag].exi=1;

patch[pat_tag].type=fruit[i].type;

patch[pat_tag].x=fruit[i].x;

patch[pat_tag].y=fruit[i].y;

patch[pat_tag].dx=mou_dx/4+fruit[i].dx+ran_int(-pat_arr,pat_arr);

patch[pat_tag].dy=mou_dy/4+fruit[i].dy+ran_int(-pat_arr,pat_arr);

}

}

}

}

for(i=2;i<=5;i++)

if(fruit[i].exi==0)

{

if(i==5)

{

exit=1;

scene=-1;

}

else

{

scene=i;

ref=1;

}

}/*场景切换*/

if(ref==1)

for(j=2;j<=5;j++)fruit[j].exi=0;

cleardevice();

setcolor(bla_c);

circle(mou_x,HIG-mou_y,3);

vis_light(light);

vis_fruit(fruit);

vis_blade(blade);

vis_patch(patch);

hmx=mou_x;

hmy=mou_y;

hmk=mou_k;

hactivate=activate;

delay(DELAY);

}

/*--------------------------------SCENE2------------------------------*/

while(scene==2)

{

mou_read();

mou_spe();

mou_act();

activate=((mou_k==1)&&((mou_x-hmx)*(mou_x-hmx)+(mou_y-hmy)*(mou_y-hmy))>act_spe);

if(activate)

/*如果鼠标为激活状态生成并刷新刀刃光影*/

{

blade[bla_tag].exi=1;

blade[bla_tag].hx=hmx;

blade[bla_tag].hy=hmy;

blade[bla_tag].x=mou_x;

blade[bla_tag].y=mou_y;

tana=(mou_y-hmy)/(double)(mou_x-hmx);

line=sqrt(1+tana*tana);

sina=tana/line;

cosa=1/line;

blade[bla_tag].x+=bla_tra*cosa;

blade[bla_tag].y+=bla_tra*sina;

blade[bla_tag].hx-=bla_tra*cosa;

blade[bla_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;i

if(ran_int(1,100)<=fru_frq)/*水果随机生成*/

{

for(i=0;i

{if(fruit[i].exi==0)fru_tag=i;}

fruit[fru_tag].exi=1;

fruit[fru_tag].type=ran_int(1,fru_tottype);

fruit[fru_tag].y=0;

fruit[fru_tag].x=ran_int(1,WID);

fruit[fru_tag].dy=ran_int(fru_max_spe_y/2,fru_max_spe_y);

fruit[fru_tag].dx=ran_int(fru_max_spe_x/2,fru_max_spe_x);

if(fruit[fru_tag].x>(WID/2))fruit[fru_tag].dx=-fruit[fru_tag].dx;

fruit[fru_tag].w=ran_int(fru_max_spe_w/2,fru_max_spe_w);

}

for(i=0;i

{

if(light[i].exi==1)light[i].time--;

if(light[i].time<=0)light[i].exi=0;

}

for(i=0;i

{

if(patch[i].exi==1)

{

patch[i].x+=patch[i].dx;

patch[i].y+=patch[i].dy;

patch[i].dy-=phy_g;

if(patch[i].y<0||patch[i].y>HIG||patch[i].x<0||patch[i].x>WID)patch[i].exi=0;

}

}

for(i=0;i

{

if(fruit[i].exi==1)

{

fruit[i].x+=fruit[i].dx;

fruit[i].y+=fruit[i].dy;

fruit[i].dy-=phy_g;

if(fruit[i].x<0||fruit[i].y<0||fruit[i].x>WID||fruit[i].y>HIG)/*水果出界处理*/

{

fruit[i].exi=0;

}

}

}

/*刀刃初始位置hmx,hmy末位置mou_x,mou_y切割水果判定*/

for(i=0;i

{

if(activate==1&&fruit[i].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,fruit[i].x,fruit[i].y);

ptl2=ptl(k2,b2,fruit[i].x,fruit[i].y);

ptl3=ptl(k3,b3,fruit[i].x,fruit[i].y);

x1=10;

y1=k2*x1+b2;

ltl=ptl(k3,b3,x1,y1);

if((ptl1

{

if(fruit[i].type==1)

{

cleardevice();

scene=5;

}

else

{

score++;

combo++;

if(bla_tag==0)temp=B_AMOUNT-1;

elsetemp=bla_tag-1;

/*切到水果生成光影效果*/

light[lig_tag].exi=1;

light[lig_tag].time=light_time;

light[lig_tag].x1=blade[temp].x+light_len*cosa;

light[lig_tag].y1=blade[temp].y+light_len*sina;

light[lig_tag].x2=blade[temp].x-light_len*cosa;

light[lig_tag].y2=blade[temp].y-light_len*sina;

lig_tag++;

if(lig_tag==L_AMOUNT-1)lig_tag=0;

fruit[i].exi=0;

temp=ran_int(pat_amt/2,pat_amt);

/*切到水果生成碎片*/

for(j=0;j

{

for(k=0;k

patch[pat_tag].exi=1;

patch[pat_tag].type=fruit[i].type;

patch[pat_tag].x=fruit[i].x;

patch[pat_tag].y=fruit[i].y;

patch[pat_tag].dx=mou_dx/4+fruit[i].dx+ran_int(-pat_arr,pat_arr);

patch[pat_tag].dy=mou_dy/4+fruit[i].dy+ran_int(-pat_arr,pat_arr);

}

if(ptl1

{

score+=9;

timer_p=time_perfect;

px=fruit[i].x;

py=fruit[i].y;

}

}

}

}

}

if(hactivate==1&&activate==0)

{

if(combo>=c_least)

{

combostr[0]=combo%10+'0';

combostr[1]=combo/10+'0';

combostr[2]='!

';

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_p>0)

{

setcolor(RED);

outtextxy(px,HIG-py,"Perfect!

");/*完美切割*/

setcolor(WHITE);

timer_p--;

}

if(timer_c>0)

{

setcolor(RED);

outtextxy(WID-50,20,"COMBO!

!

!

");/*连击*/

outtextxy(WID-50,50,combostr);

setcolor(WHITE);

timer_c--;

}

scorestr[0]=(score%10)+'0';

scorestr[1]=(score%100)/10+'0';

scorestr[2]=score/100+'0';

setcolor(BLUE);

outtextxy(0,20,"SCORE:

");/*分数*/

outtextxy(20,50,&scorestr[0]);

outtextxy(10,50,&scorestr[1]);

outtextxy(00,50,&scorestr[2]);

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++;

}

/*--------------------------------SCENE3------------------------------*/

while(scene==3)

{

/*游戏介绍部分*/

cleardevice();

cleardevice();

setcolor(BLUE);

setbkcolor(LIGHTCYAN);

vis_watermelon(50,20);

vis_apple(150,20);

vis_coconut(250,20);

vis_orange(350,20);

vis_mango(450,20);

outtextxy(100,100,"WelcometotheworldofFruitNinja!

");

delay(500);

outtextxy(100,125,"InthisworldyouareanexcellentNinja.");

delay(500);

outtextxy(100,150,"NowyouhaveanurgentMISSIONtoaccomplish!

");

delay(500);

outtextxy(100,175,"ThatIs:

");

delay(500);

outtextxy(100,200,"CuttingFruits!

!

!

!

!

");

delay(500);

setcolor(RED);

outtextxy(100,250,"RememberThis:

");

delay(500);

outtextxy(100,275,"Cutasmanyfruitsasyoucan!

");

delay(500);

outtextxy(100,300,"ButnevertouchtheREDonescausetheyareBOMBS!

");

delay(500);

setcolor(BLUE);

outtextxy(100,400,"Press'Q'tocontinue.");

vis_bomb(30,370);

while(bioskey(0)!

=4209);

scene=1;

}

/*--------------------------------SCE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1