codeblocks学习初步

本文介绍如何在Ubuntu的CodeBlocks中编写一个基于命令行的气泡排序模拟程序,无需图形界面,通过命令参数设定界面大小、球的坐标和速度。程序支持帮助选项,定时更新并打印球的状态,包括位置、速度和碰撞次数。文章详细阐述了如何利用C++的rand()函数生成随机数来决定球的运动,并展示了如何处理球与边框的碰撞。


在Ubuntu环境下的CodeBlocks上进行气泡球序的初步和探讨。

要求:

       1) 不需要图形界面(可预留接口,以后扩展);

2) 命令参数:界面大小,球的初始坐标,初始速度(大小和方向);

3) 支持—help;

4) 定时打印小球的状态,球的位置,速度,已碰撞次数等;

5) 更新文档(分工明确)。

 

由java开发程序可以先进行如下定义:

1) 边框的宽和高 TableWidth  TableHight

2) 球的尺寸 BallSize

3) 球纵坐标的速度 ySpeed

4) Random()产生一个随机数

5) 利用这个随机数定义球的水平速度

6) 球的横坐标和纵坐标 BallX  BallY

 

球的运动原理就是:坐标的数值加上一个数值,比如相应的速度值

BallY += ySpeed;

BallX +=xSpeed;

这样球就能够动起来,但需要给球添加一个动的条件,比如当球碰到边框时让球的竖直速度和水平速度取反。

 

关键在于随机数产生这个地方。

提出一个问题:C++怎么利用随机数来移动一个图片或绘制的球?

下面先来写一个简单的程序让rand函数或random函数产生随机数:

1、  产生固定的随机数

#include<stdlib.h>

#include<stdio.h>

Int main()

{

  Int I,j;

  For(i=0;i<10;i++){

        J=1+(int)(10.0*rand()/(RAND_MAX+1.0));

    Printf(“%d\n”,j);

  }

}

Rand()函数会返回一个随机数值,范围在0-RAND_MAX之间,在调用这个函数前必须使用srand()设好随机数种子,否则rand()会自动设为1

返回值是0-RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,其值为2147483647.

2、产生不固定的随机数

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

Int main()

{

        IntI,j;

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

For(i=0;i<10;i++){

   J=1+(int)(10.0*rand()/(RAND_MAX+1.0));

   Printf(“%d ”,j)

}

   }

 

版本01(一个球在定义边框里随机移动)

//实现一个球的随机移动

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

Int main()

{

//定义边框的宽

Int TableWidth = 100;

//定义边框的高

int TableHight = 100;

//定义球的尺寸

int BallSize = 10;

//定义球纵坐标的速度

Int ySpeed = 5;

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

Srand((int) time(0));

//定义球横坐标的速度

Int xSpeed = 1+(int)(10.0*rand()/(RAND_MAX+1.0));

//定义球的横坐标

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

//定义球的纵坐标

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

 

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

  xSpeed  =-xSpeed;

if(BallY<0 || BallX >=TableHight - BallSize)

  ySpeed =-ySpeed;

BallX += xSpeed;

BallY +=ySpeed;

Printf(“The x of Ball is %d,The y of Ball is %d”,Ballx,BallY);

Printf(“\n”);

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值