0

形を完成させて塗りつぶすゲームを作っていますが、自分の形の中に敵の鳥がいると塗りつぶされません。形状、あなたは命を失うでしょう。以下のコードが実行されない場合、命を失うことをほとんど示す if ステートメントを作成するにはどうすればよいでしょうか。それが命を失うのに役立つ場合、私のコードでは doDie と呼ばれます。

-(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];
}

上で述べたように、fillMutablePath が実行されない理由は、鳥がシェイプ内に閉じ込められるためです。どんな助けでも大歓迎です!!

4

2 に答える 2

1

鳥が道にいるかどうかを確認する方法と場所が完全にはわかりません。パスを埋める直前にすべきだと思います(if-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];
}

鳥が道にいる場合は死にます。それ以外の場合は、描画します。

明確化後に編集します。

   //...

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

   if(CGPathContainsPoint(fillPath, nil, bird.center, false)){
      [self doDie];
   }
   CGPathRelease(fillPath);
   [pointsToFillArray removeAllObjects];
}
于 2010-02-14T11:19:21.087 に答える
0

メソッドはBOOLを返すことができませんでしたか?

そうすれば、鳥が形をしている場合、メソッドはyesを返し、鳥が形をしていない場合、noを返します。

その後、ifで戻り値を使用できます。

于 2010-02-14T22:57:58.763 に答える