1. 程式人生 > >IOS的一個關於球碰撞的小遊戲

IOS的一個關於球碰撞的小遊戲

這個遊戲是關於一個球隨機在螢幕上移動,可以用手指來操縱令一個球,如果兩個球碰撞到一起,就表示輸了,非常簡單的一個遊戲


在StoryBoard裡定義兩個UIImageView和一個start按鈕


然後把這兩個UIimageView跟程式碼連結

@property (weak, nonatomic)IBOutletUIImageView *player;

@property (weak, nonatomic)IBOutletUIImageView *enemy;

@property (weak, nonatomic)IBOutletUIButton *start;


在ViewDidLoad中定義球移動的速率

pos =CGPointMake(5.0,4.0);

如果點選了start按鈕
- (IBAction)start:(id)sender {
    [self.start setHidden:YES];
    //啟動一個timer,讓player這個球隨機移動
    randomMain = [NSTimer scheduledTimerWithTimeInterval:0.03 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
    
    
}

-(void)onTimer{
    [self checkCollision];
    self.enemy.center = CGPointMake(self.enemy.center.x+pos.x, self.enemy.center.y+pos.y);
    if (self.enemy.center.x > 320 || self.enemy.center.x < 0) {
        pos.x = -pos.x;
        
    }
    
    if (self.enemy.center.y > 480 || self.enemy.center.y < 0) {
        pos.y = -pos.y;
    }
}



-(void) checkCollision{
    //檢測兩個球是否碰撞到一起了
    if (CGRectIntersectsRect(self.player.frame, self.enemy.frame)) {
        [randomMain invalidate];
        [self.start setHidden:NO];
        
        CGRect frame = [self.player frame];
        frame.origin.x = 137.0f;
        frame.origin.y = 326.0f;
        [self.player setFrame:frame];
        
        CGRect frame2 = [self.enemy frame];
        frame2.origin.x = 137.0f;
        frame2.origin.y = 20.0f;
        [self.enemy setFrame:frame2];
        
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ball is catched" message:@"you have to play again" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:nil];
        [alert show];
    }
}
程式碼可以在http://download.csdn.net/detail/baidu_nod/7556833下載