温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用C语言怎么实现一个弹跳的小球

发布时间:2021-04-16 16:57:16 来源:亿速云 阅读:181 作者:Leah 栏目:编程语言

使用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<bally[i])
 if(x<ballx[i])
 {t1=-1;t2=-1;}
 else
 {t1=1;t2=-1;}
 else
 if(x<ballx[i])
 {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<y1)
 {t1=1;t2=-1;}
 else
 {t1=1;t2=1;}
 }
 else if(y==11)
 {
 if(x<x1)
 {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<(keyx+keylong/4))
  {t1=-1;t2=-1;}
  else if(x>=(keyx+keylong/4)&&x<(keyx+keylong/2))
  {t1=-1;t2=-2;}
  else if(x>=(keyx+keylong/2)&&x<(keyx+keylong/4*3))
  {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();
}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI