0

こんにちは私は、オブジェクトがランダムな位置で画面上を移動する必要がある1つのゲームを開発しています。私は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.0fcocos2d-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 に答える
-1

使用する

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

nextInt は、実際の上限ではなく、乱数の範囲を取るためです。

于 2012-12-10T07:01:07.723 に答える