2016-04-20 8 views
0

私は火の玉UIImageが画面から落ちるようなゲームをしており、ユーザーはそれらを避けるためにタッチスクリーンでプレーヤーオブジェクトを動かします。 8ポイント後、playAgainButtonがポップアップします。ただし、このplayAgainButtonボタンは機能しません。 ResetGameメソッドのコードは実行されず、実際には発生したくないキャラクターオブジェクト "Dustin"の位置が実際にリセットされます。私はボタンに添付された参照アウトレットを持っています。 ResetGameのコードを動作させるにはどうすればよいですか?私のViewControllerコードは以下の通りです。iOS:このゲームリセットボタンを正しく動作させるにはどうすればよいですか?

int theScore; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // Do any additional setup after loading the view, typically from a nib. 
    [self initializeTimer]; 
} 

- (IBAction)ResetGame:(id)sender { //only thing that actually happens right now is that Dustin resets for some reason. 
    theScore = 0; 

    [self updateScore]; 

    _Fireball.center = CGPointMake(64, 64); 
    _endLabel.hidden = true; 
    _playAgainButton.hidden = true; 

    [self gameLogic:theTimer]; 
} 

- (void)updateScore { 
    _score.text = [[NSString alloc] initWithFormat:@"%d",theScore]; 
} 

- (void) initializeTimer { 
    if(theTimer == nil) 
    { 
     theTimer = [CADisplayLink displayLinkWithTarget:self selector:@selector(gameLogic:)]; 
    } 

    theTimer.frameInterval = 1; 
    [theTimer addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
} 

- (void) gameLogic:(CADisplayLink *) theTimer { 
    if((!CGRectIntersectsRect(_Fireball.frame, _Dustin.frame)) && (theScore < 8)){ 
     if(_Fireball.center.y >600){ 
      int num = arc4random() % 3; 
      if(num == 0){ 
       _Fireball.center = CGPointMake(64, 64); 
      } 
      else if(num == 1){ 
       _Fireball.center = CGPointMake(192, 64); 
      } 
      else if(num == 2){ 
       _Fireball.center = CGPointMake(320, 64); 
      } 

      theScore = theScore + 1; 
      [self updateScore]; 
      } 

      _Fireball.center = CGPointMake(_Fireball.center.x, _Fireball.center.y+12); } 
    else if(theScore == 8){ 
     _Fireball.center = CGPointMake(_Fireball.center.x, _Fireball.center.y); 

     _endLabel.text = @"You Win!"; 
     _endLabel.hidden = false; 
     _playAgainButton.hidden = false; 
    } 
} 

- (void) touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event { 
    UITouch *touch = [touches anyObject]; 

    _firstTouch = [touch locationInView:self.view]; 
    _lastTouch = [touch locationInView:self.view]; 

    _Dustin.center = CGPointMake(_firstTouch.x, _Dustin.center.y); 
} 

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    UITouch *touch = [touches anyObject]; 

    _firstTouch = [touch locationInView:self.view]; 
    _lastTouch = [touch locationInView:self.view]; 

    _Dustin.center = CGPointMake(_firstTouch.x, _Dustin.center.y); 
} 

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ 
    UITouch *touch = [touches anyObject]; 

    _firstTouch = [touch locationInView:self.view]; 
    _lastTouch = [touch locationInView:self.view]; 

    _Dustin.center = CGPointMake(_firstTouch.x, _Dustin.center.y); 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 

    // Dispose of any resources that can be recreated. 
} 

答えて

0

あなたのtouchesBeganなどの方法がスーパーを呼び出していないので、すべてのタッチアプリによって捕獲されているし、あなたのボタンに介して取得することはできません。

これらのメソッドのそれぞれにsuperへの呼び出しを追加します。

関連する問題