c语言程序设计小球弹跳,C语言实现弹跳小球

这是一个简单的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();

}

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

时间: 2020-03-19

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值