Случайное значение CGPoint x не работает - PullRequest
0 голосов
/ 30 мая 2011

У меня есть 22 изображения ... 11 из них (rightwall1, rightwall2, rightwall3 и т. Д.), Остальные 11: (leftwall1, leftwall2, leftwall3 и т. Д.)

Я размещаю каждое поверх другогоустановив их значение y для предыдущих стен, значение y плюс высота стены (все стены имеют одинаковую высоту).

Это прекрасно работает!

Теперь я пытался установить хзначение с помощью arc4random, чтобы они перепрыгивали повсюду в определенном диапазоне (для левых стен: (от -35 до 15) и для правых стен: (от 330 до 405)) ...

вправостены работают отлично, но левые стены, некоторые из них работают, но большинство из них не отображаются на экране.

Я вручную установил значение x, равное -45, и оно появилось на экране.и это ниже, чем позволяет arc4random.

Единственная проблема, о которой я могу подумать, это то, что я неправильно вычитал левые стены?

Вот код для установки стенлокаций, у меня пока нет другого кода во всем проекте.

-(void)awakeFromNib {

        rightWall1.center = CGPointMake( ((arc4random()%75)+330), (460-((rightWall1.frame.size.height)/2)) );//460 = bottom of screen
        rightWall2.center = CGPointMake( ((arc4random()%75)+330), ((rightWall1.center.y)-(rightWall2.frame.size.height)) );
        rightWall3.center = CGPointMake( ((arc4random()%75)+330), ((rightWall2.center.y)-(rightWall3.frame.size.height)) );
        rightWall4.center = CGPointMake( ((arc4random()%75)+330), ((rightWall3.center.y)-(rightWall4.frame.size.height)) );
        rightWall5.center = CGPointMake( ((arc4random()%75)+330), ((rightWall4.center.y)-(rightWall5.frame.size.height)) );
        rightWall6.center = CGPointMake( ((arc4random()%75)+330), ((rightWall5.center.y)-(rightWall6.frame.size.height)) );
        rightWall7.center = CGPointMake( ((arc4random()%75)+330), ((rightWall6.center.y)-(rightWall7.frame.size.height)) );
        rightWall8.center = CGPointMake( ((arc4random()%75)+330), ((rightWall7.center.y)-(rightWall8.frame.size.height)) );
        rightWall9.center = CGPointMake( ((arc4random()%75)+330), ((rightWall8.center.y)-(rightWall9.frame.size.height)) );
        rightWall10.center = CGPointMake( ((arc4random()%75)+330), ((rightWall9.center.y)-(rightWall10.frame.size.height)) );
        rightWall11.center = CGPointMake( ((arc4random()%75)+330), ((rightWall10.center.y)-(rightWall11.frame.size.height)) );


        leftWall1.center = CGPointMake( (15-(arc4random()%50)), (460-((leftWall1.frame.size.height)/2)) );
        leftWall2.center = CGPointMake( (15-(arc4random()%50)), ((leftWall1.center.y)-(leftWall2.frame.size.height)) );
        leftWall3.center = CGPointMake( (15-(arc4random()%50)), ((leftWall2.center.y)-(leftWall3.frame.size.height)) );
        leftWall4.center = CGPointMake( (15-(arc4random()%50)), ((leftWall3.center.y)-(leftWall4.frame.size.height)) );
        leftWall5.center = CGPointMake( (15-(arc4random()%50)), ((leftWall4.center.y)-(leftWall5.frame.size.height)) );
        leftWall6.center = CGPointMake( (15-(arc4random()%50)), ((leftWall5.center.y)-(leftWall6.frame.size.height)) );
        leftWall7.center = CGPointMake( (15-(arc4random()%50)), ((leftWall6.center.y)-(leftWall7.frame.size.height)) );
        leftWall8.center = CGPointMake( (15-(arc4random()%50)), ((leftWall7.center.y)-(leftWall8.frame.size.height)) );
        leftWall9.center = CGPointMake( (15-(arc4random()%50)), ((leftWall8.center.y)-(leftWall9.frame.size.height)) );
        leftWall10.center = CGPointMake( (15-(arc4random()%50)), ((leftWall9.center.y)-(leftWall10.frame.size.height)) );
        leftWall11.center = CGPointMake( (15-(arc4random()%50)), ((leftWall10.center.y)-(leftWall11.frame.size.height)) );

}

1 Ответ

0 голосов
/ 31 мая 2011

Оказывается, вы не можете получить отрицательное целочисленное значение, используя arc4random (имеет смысл, потому что arc4random использует модуль .... целое число ... ?? ха-ха). Поэтому я использую float ...

canне говорите:

(-1)*(arc4random() ....

Вы должны сказать:

float num1;
num1 = -1;
(num1)*(arc4random() ....

Странно ... То же самое относится к вычитанию ... вы должны добавить отрицательное значение 1 с плавающей запятой умноженное на arc4random..

...