Question

est GameViewController.m

-(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);

        if(CGPathContainsPoint(fillPath, nil, "What goes here?", false)){
            [self doDie];
        }
else {
  CGContextFillPath(gameViewObj._myContext);
}
        CGPathRelease(fillPath);
        [pointsToFillArray removeAllObjects];
    }


}

Ceci est GameView.m

-(CGPoint) GetBirdPosition:(CGPoint) PtPoint :(int) BirdNumber{
    CGPoint Temp=PtPoint;
    BOOL isTouch=TRUE;
    while (isTouch)
    {
        isTouch=FALSE;
        if(playField[(int) Temp.x][(int) Temp.y]==2)
        {
            isTouch=TRUE;
            if(playField[(int) Temp.x+1][(int) Temp.y] == 2 || playField[(int) Temp.x-1][(int) Temp.y] == 2)
            {
                pos[BirdNumber].y = -pos[BirdNumber].y;
                Temp.y+=pos[BirdNumber].y;

            }
            else if(playField[(int) Temp.x][(int) Temp.y+1] == 2 || playField[(int) Temp.x][(int) Temp.y-1] == 2)
            {
                pos[BirdNumber].x = -pos[BirdNumber].x;
                Temp.x+=pos[BirdNumber].x;
            }

        }
    }
    return Temp;
}

-(void)flyingBird:(NSTimer *)timer {

    if(appDelegate.gameStateRunning == YES){

        for (int i=0; i< [birdImageViewArray count];i++)
        {
            UIImageView* birdImageView=[birdImageViewArray objectAtIndex:i];

            CGPoint Temp=CGPointMake(birdImageView.center.x + pos[i].x , birdImageView.center.y + pos[i].y);
            birdImageView.center =[self GetBirdPosition:Temp:i];

            if(playField[(int) birdImageView.center.x][(int) birdImageView.center.y]==3){

                [[NSNotificationCenter defaultCenter] postNotificationName:@"LineCrossed" object:nil];
                [[NSNotificationCenter defaultCenter] postNotificationName:@"PlayDieSound" object:nil];
            }
        }
    }
}

Je ne peux pas comprendre ce qui se passe à l'endroit où je l'ai écrit « ce qui se passe ici » ?? Je veux de sorte que si un oiseau est pris au piège dans la forme, puis [Dodie] a lieu. Si l'oiseau ne se coince pas dans la forme, il se remplit. Toutes les idées sont grandement appréciés.

Était-ce utile?

La solution

Je ne comprends pas vraiment votre code, mais j'imagine que c'est essentiellement ce que vous voulez faire:

CGPoint Temp=CGPointMake(birdImageView.center.x + pos[birdNum].x , birdImageView.center.y + pos[birdNum].y);
if(CGPathContainsPoint(fillPath, nil, [myGameView GetBirdPosition:Temp:i], false)){
    [self doDie];
}

Il semble que votre chemin est d'abord juste une ligne, et je ne pense pas que quoi que ce soit sera contenu à l'intérieur. Si vous expliquez l'objectif plus à fond (combien d'oiseaux Vérifions-nous? Est-ce le même chemin pour chacun?), Nous pouvons aider.

Edit:

Hmmmm, OK. La première chose est assez simple. Pour éviter le remplissage si un oiseau est dans le chemin, ne pas utiliser un cas d'autre. Dans le cas, mettre un drapeau si l'oiseau actuel est contenu dans le chemin. Puis, après la boucle, si le drapeau est pas défini, remplissez le chemin. Donc, quelque chose comme:

BOOL pathContainsBird = NO;
for (int i=0; i<[pointsToFillArray count]; i++) {
    //bunch of stuff
    if(CGPathContainsPoint(fillPath, nil, "What goes here?", false)){
        pathContainsBird = YES;
        [self doDie];
    }
}
if(!pathContainsBird) {
    //fill path here
}

Deuxièmement, je suis sûr que vous n'êtes pas Boucler dans la bonne chose. On dirait que vous développez le chemin chaque itération, mais je pense que vous devez construire ensemble le chemin d'abord, puis en boucle à travers tous les oiseaux, mais je ne pouvais être malentendu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top