2010-02-14 5 views
0

Je crée un jeu où vous complétez des formes et où la zone est remplie. Cependant, s'il y a un oiseau ennemi dans votre forme, il ne se remplira pas. Je veux faire en sorte que si vous attrapez un oiseau dans votre forme, vous allez perdre une vie. Comment puis-je écrire une instruction if qui dit à peu près si le code ci-dessous n'a pas lieu, alors vous perdez une vie. Si ça aide à perdre une vie, ça s'appelle doDie dans mon code.Si déclaration question iphone?

-(void)fillMutablePath{ 



CGPoint movePoint = CGPointFromString([pointsToFillArray objectAtIndex:0]); 

CGPathMoveToPoint(fillPath, NULL, movePoint.x, movePoint.y); 

for (int i=0; i<[pointsToFillArray count]; i++) { 
    CGPoint tempPoint = CGPointFromString([pointsToFillArray objectAtIndex:i]); 
    CGPathAddLineToPoint(fillPath, NULL, tempPoint.x, tempPoint.y); 

} 


CGContextAddPath(gameViewObj._myContext, fillPath); 
CGContextFillPath(gameViewObj._myContext); 
CGPathRelease(fillPath); 

[pointsToFillArray removeAllObjects]; 

} 

if(fillMutablePath doesn't take place when making a shape){ 
[self doDie]; 
} 

Comme je l'ai dit plus haut, la raison fillMutablePath aurait pas lieu parce qu'un oiseau serait pris au piège dans la forme. Toute aide serait très appréciée!!

Répondre

1

Je ne sais pas exactement comment et où vous vérifiez si l'oiseau est dans le chemin. Je pense que juste avant le remplissage vous chemin que vous devez faire (voir que si-else):

-(void)fillMutablePath{ 

    CGPoint movePoint = CGPointFromString([pointsToFillArray objectAtIndex:0]); 
    CGPathMoveToPoint(fillPath, NULL, movePoint.x, movePoint.y); 
    for (int i=0; i<[pointsToFillArray count]; i++) { 
     //... 
    } 
    CGContextAddPath(gameViewObj._myContext, fillPath); 

    if(CGPathContainsPoint(fillPath, nil, bird.center, false)){ 
     [self doDie]; 
    } 
    else { 
     CGContextFillPath(gameViewObj._myContext); 
    } 
    CGPathRelease(fillPath); 

    [pointsToFillArray removeAllObjects]; 
} 

Si l'oiseau est dans la matrice de chemin. Sinon, dessinez.

Modifier après la clarification:

//... 

    CGContextAddPath(gameViewObj._myContext, fillPath); 
    CGContextFillPath(gameViewObj._myContext); 

    if(CGPathContainsPoint(fillPath, nil, bird.center, false)){ 
     [self doDie]; 
    } 
    CGPathRelease(fillPath); 
    [pointsToFillArray removeAllObjects]; 
} 
+0

il dessine n'importe quoi, j'ai besoin de vérifier si l'oiseau est dans la forme après qu'il est complet – NextRev

+0

ok, voir ma mise à jour réponse. J'espère que c'est ce que vous cherchez. – Dimitris

+0

le problème est que le centre d'oiseaux est défini dans un autre fichier – NextRev

0

la méthode pourrait ne pas retourner un BOOL? De cette façon, si l'oiseau est dans la forme, la méthode renvoie oui, et si l'oiseau n'est pas dans la forme, il renvoie non.

Ensuite, vous pouvez utiliser la valeur de retour dans un si plus tard.

+0

le problème est que le point d'oiseau est défini dans un autre fichier. Je viens de poster une autre question avec plus d'informations sur le problème. c'est la dernière chose que je dois comprendre pour compléter mon application – NextRev