如何生成-10到10范围内的随机数

时间:2012-12-10 06:20:41

标签: android cocos2d-x

您好我正在开发一种游戏,其中对象必须在随机位置的屏幕上移动。我正在使用cocos2dx框架。我的代码是

CCSize winSize = CCDirector::sharedDirector()->getWinSize();
    int minY = HelloWorld::bird->getContentSize().height/2;
    int maxY = winSize.height - HelloWorld::bird->getContentSize().height/2;
    int minX = HelloWorld::bird->getContentSize().width/2;
    int maxX = winSize.width - HelloWorld::bird->getContentSize().width/2;
    int range = maxX - minX;
    int actualY = (rand() % range) + minY;
    int actualX = (rand() % range) + minX;
    //HelloWorld::bird->setPosition(ccp(actualX, actualY));
    CCActionInterval*  actionTo = CCMoveTo::actionWithDuration(3, ccp(actualX,actualY));
    HelloWorld::runAction(actionTo);

它正在工作但只生成正数。所以精灵正在走出屏幕。我搜索了教程,但没有得到。

5 个答案:

答案 0 :(得分:8)

CCRANDOM_MINUS1_1() * 10.0f如果您使用的是cocos2d-x

我的回答永远不会被接受,即使它最适合提问者。

答案 1 :(得分:0)

试试这个:

int min = -10;

int max = 10;

Random r = new Random();

int i1 = r.nextInt(max - min + 1) + min;

请注意,nextInt(int max)返回介于0和0之间的int。从+1。

答案 2 :(得分:0)

使用random(T min, T max)

int randomNo = random(-10, 10);

它会产生-10和10范围内的随机数。

答案 3 :(得分:-1)

使用

int result = r.nextInt(max - min) + min;
instead of 
int result = r.nextInt(max) + min;

因为nextInt取的是随机数的范围,而不是实际的上限。

答案 4 :(得分:-1)

boolean cof1=rand.nextBoolean();

if (!cof1)
    result =-result ;