Ubuntu下codeblocks的气泡球程序(二)

来源:互联网 发布:淘宝首页psd模板下载 编辑:程序博客网 时间:2024/05/21 22:33

//***********************************************************

版本04

程序功能:实现两个球的随机运动

显示方式:实时打印球的坐标和速度

增加内容:软件延时代码

修改说明:利用随机数函数创建一个双精度比率,来设置ySpeed用以控制小球的运动方向

说明   :该程序仅在一个球的基础上增加一个球,然后对输出做一下修改

//***********************************************************

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

Int main()

{

//定义边框的宽

Int TableWidth = 100;

//定义边框的高

int TableHight = 100;

//定义球的尺寸

int BallSize = 10;

//定义球纵坐标的速度

Int ySpeed01 = 5;

Int ySpeed02 = 5;

 

//使用time(0)作为随机数种子

Srand((int) time(0));

 

//定义球横坐标的速度

//这里用到了drand48()函数,用以产生一个正的浮点随机数

Int xSpeed01 =(int) ySpeed01*(drand48()-0.5)*2;

Int xSpeed02 = (int)ySpeed02*(drand48()-0.5)*2;

 

//定义球的横坐标

Int BallX01 = 1+(int)(20.0*rand()/(RAND_MAX+1.0));

Int BallX02 =  50+(int)(20.0*rand()/(RAND_MAX+1.0));

//定义球的纵坐标

Int BallY01=  50+(int)(20.0*rand()/(RAND_MAX+1.0));

Int BallY02= 1+(int)(20.0*rand()/(RAND_MAX+1.0));

 

Unsigned Int t;

Unsigned int flag =0;

While(1){

 for(t=0;t<600000000;t++);//软件延时

 

if(((BallX01-BallX02)*(Ball01-BallX02)+(BallY01-BallY02)*(BallY01-BallY02)<400))

{

     xSpeed01 = -xSpeed01;

     ySpeed01=-ySpeed01;

     xSpeed02 =-xSpeed02;

     ySpeed02 =-ySpeed02;

     flag++;

}

else

{

If(BallX01<0|| BallX01 >= TableWidth - BallSize)

  xSpeed01 =-xSpeed01;

if(BallY01<0|| BallX01 >=TableHight - BallSize)

  ySpeed01 = -ySpeed01;

If(BallX02<0|| BallX02 >= TableWidth - BallSize)

  xSpeed02 =-xSpeed02;

if(BallY02<0|| BallX02 >=TableHight - BallSize)

  ySpeed02 = -ySpeed02;

}

BallX01 += xSpeed01;

BallY01 +=ySpeed01;

BallX02 +=xSpeed02;

BallY02+=ySpeed02;

 

Printf(“The stateof Ball01 is %d,%d,%d,%d\n”,BallX01,BallY01,xSpeed01,ySpeed01);

Printf(“The stateof Ball02 is %d,%d,%d,%d\n”,BallX02,BallY02,xSpeed02,ySpeed02);

Printf(“flag=%d\n”,flag);

Printf(“\n”);

t=0;

}

}

 

 

程序存在的缺陷:

可能是小球的判断那里写的不好,导致一个球的运动已经越界,另一个球在原地转圈,程序还需进一步优化。

 

0 0