ebb0cd79d49cf6d02b168bc4f5dda777.png

这是一个简单的c语言源代码,C语言实现弹跳小球,设置了小球的分数及过关的难度。

#include "graphics.h"

#include "math.h"

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define ESC 0x011b

int x,y,x1,y1,key,t1,t2,keyx,keylong,keymove,over=0,i,tt=0,fast;

int ballx[9]={53,103,263,120,236,390,410,450,600};

int bally[9]={158,239,120,113,30,313,120,263,231},ballz[9]={0};

float ls;

win()

{float lx,ly,ll;

for(i=0;i<9;i++)

{

if(ballz[i]==1)/*假如球体已经消失就不判定*/

continue;

lx=(float)(ballx[i]-x);

ly=(float)bally[i]-y;

ll=lx*lx+ly*ly;

ls=sqrt(ll);

if((int)ls<17)/*判定两球是否碰到*/

{tt++;/*记录消失几个球*/

fast-=50;/*速度加快*/

if(i%2==0)/*移动加快*/

keymove+=5;

else

{

setcolor(0);

rectangle(keyx,460,keyx+keylong,470);

keylong-=10;/*长条变短*/

setcolor(YELLOW);

rectangle(keyx,460,keyx+keylong,470);

}

ballz[i]=1;

setcolor(0);

circle(ballx[i],bally[i],10);

if(y

if(x

{t1=-1;t2=-1;}

else

{t1=1;t2=-1;}

else

if(x

{t1=-1;t2=1;}

else

{t1=1;t2=1;}

}

}

}

fungo()

{ x=100,y=50,keyx=200,keylong=100,keymove=15,fast=5000;

for(i=0;i<9;i++)

{

setcolor(i+1);

circle(ballx[i],bally[i],10);

}

sleep(1);

t1=t2=1;

while(1)

{

while(!kbhit())

{

setcolor(YELLOW);

rectangle(keyx,460,keyx+keylong,470);

x1=x;

y1=y;

x+=t1;

y+=t2;

setcolor(4);

circle(x,y,6);

delay(fast);

setcolor(0);

circle(x,y,6);

win();

if(tt==9)/*胜利*/

{

cleardevice();

over=1;

setcolor(RED);

settextstyle(0,0,4);

setusercharsize(3,1,3,1);

outtextxy(200,200," YOU WIN! ");

break;

}

if(y>480)/*失败*/

{

cleardevice();

over=1;

setcolor(RED);

settextstyle(0,0,4);

setusercharsize(3,1,3,1);

outtextxy(200,200,"GAME OVER");

break;

}

else if(x==11&&y==11)/*判定碰到东西*/

{t1=1;t2=1;}

else if(x==629&&y==11)

{t1=-1;t2=1;}

else if(x==11)

{

if(y

{t1=1;t2=-1;}

else

{t1=1;t2=1;}

}

else if(y==11)

{

if(x

{t1=-1;t2=1;}

else

{t1=1;t2=1;}

}

else if(x==629)

{

if(y1>y)

{t1=-1;t2=-1;}

else

{t1=-1;t2=1;}

}

else if(y==449)

{

if(x>=keyx&&x<=keyx+keylong)

{

if(x

{t1=-1;t2=-1;}

else if(x>=(keyx+keylong/4)&&x

{t1=-1;t2=-2;}

else if(x>=(keyx+keylong/2)&&x

{t1=1;t2=-2;}

else

{t1=1;t2=-1;}

}

}

}

if(over)

break;

key=bioskey(0);

setcolor(0);

rectangle(keyx,460,keyx+keylong,470);

if(key==ESC)

{cleardevice();break;}

else if(key==LEFT)

keyx-=keymove;

else if(key==RIGHT)

keyx+=keymove;

}

}

main()

{int gd=DETECT,gr;

initgraph(&gd,&gr,"c:\tc");

fungo();

getch();

sleep(1);

closegraph();

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持云海天教程。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐