0

您好,我正在开发一款游戏,其中对象必须在屏幕上随机移动。我正在使用 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);

它正在工作但只产生正数。所以精灵要离开屏幕了。我搜索了教程,但没有得到。

4

5 回答 5

8

CCRANDOM_MINUS1_1() * 10.0f如果你使用 cocos2d-x

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

于 2012-12-10T23:54:01.547 回答
0

尝试这个 :

int min = -10;

int max = 10;

Random r = new Random();

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

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

于 2012-12-10T06:22:55.430 回答
0

利用random(T min, T max)

int randomNo = random(-10, 10);

它在 -10 和 10 的范围内生成随机数。

于 2016-07-08T05:47:39.267 回答
-1
boolean cof1=rand.nextBoolean();

if (!cof1)
    result =-result ;
于 2014-03-28T15:18:57.860 回答
-1

利用

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

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

于 2012-12-10T07:01:07.723 回答