2011-05-30 8 views
1

Je 22 images ... 11 sont (rightwall1, rightwall2, rightwall3, etc.) les 11 autres sont (leftwall1, leftwall2, leftwall3, etc.)Xcode CGPoint arc4random ne fonctionne pas

Je place chacun ontop l'autre en plaçant leur valeur y à la valeur de la paroi précédente y plus la hauteur du mur (tous les murs ont la même hauteur).

Cela fonctionne très bien!

Maintenant, je tentais de définir la valeur X en utilisant arc4random ils sautaient dans tous les sens dans une certaine gamme ...

Les murs droite fonctionnent parfaitement, mais les murs gauche, certains d'entre eux le travail mais la plupart n'apparaissent pas à l'écran.

J'ai manuellement mis la valeur de x d'un à -15 et il est apparu sur l'écran et c'est plus bas que l'arc4random lui permet d'aller.

Le seul problème que je peux penser est que je soustrais mal pour les murs de gauche?

Voici le code pour définir les emplacements des murs, je n'ai pas encore d'autre code dans l'ensemble du projet.

-(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(((arc4random()%75)-60), (460-((leftWall1.frame.size.height)/2))); 
    leftWall2.center = CGPointMake(((arc4random()%75)-60), ((leftWall1.center.y)-(leftWall2.frame.size.height))); 
    leftWall3.center = CGPointMake(((arc4random()%75)-60), ((leftWall2.center.y)-(leftWall3.frame.size.height))); 
    leftWall4.center = CGPointMake(((arc4random()%75)-60), ((leftWall3.center.y)-(leftWall4.frame.size.height))); 
    leftWall5.center = CGPointMake(((arc4random()%75)-60), ((leftWall4.center.y)-(leftWall5.frame.size.height))); 
    leftWall6.center = CGPointMake(((arc4random()%75)-60), ((leftWall5.center.y)-(leftWall6.frame.size.height))); 
    leftWall7.center = CGPointMake(((arc4random()%75)-60), ((leftWall6.center.y)-(leftWall7.frame.size.height))); 
    leftWall8.center = CGPointMake(((arc4random()%75)-60), ((leftWall7.center.y)-(leftWall8.frame.size.height))); 
    leftWall9.center = CGPointMake(((arc4random()%75)-60), ((leftWall8.center.y)-(leftWall9.frame.size.height))); 
    leftWall10.center = CGPointMake(((arc4random()%75)-60), ((leftWall9.center.y)-(leftWall10.frame.size.height))); 
    leftWall11.center = CGPointMake(((arc4random()%75)-60), ((leftWall10.center.y)-(leftWall11.frame.size.height))); 

} 

Répondre

0

régler manuellement la valeur x de l'un à -15 et il a montré à l'écran et qui est inférieure à la arc4random lui permet d'aller.

((arc4random()%75)-60) renvoie des nombres compris entre -60 et 14, puisque (arc4random()%75) renvoie nombres compris entre 0 et 74.

+0

OHHHHHHHHHHHHHHHH! HAHAHHAHAHAHAHAHHAHAHAAH –

+0

Ne fonctionnait toujours pas, le problème est lorsque vous traitez avec des valeurs négatives arc4random vous ne pouvez pas utiliser des entiers, vous devez utiliser des flottants .. Si vous soustrayez vous ne pouvez pas simplement soustraire vous devez ajouter les temps arc4random 1 flottant négatif valeur. C'est parce que arc4random utilise le module que je suppose ... –

+0

arc4random renvoie des valeurs non signées. L'utilisation de% limite la plage. Vous n'avez pas besoin de flottants - juste des entiers signés après%. –