Not sure if anyone can help me, or if ive even posted in the correct place
Im building just a simple game with a ball and a paddle at the bottom, everytime the ball hits the paddle you get 1 point. But the minute the score is increasing by 7-8 points everytime you hit the paddle. Im not sure where im going wrong could someone help.
I havent been programming long so be easy on meCode:#import "GameViewController.h" #import "KeepyUppiesViewController.h" #import "GameOverViewController.h" @implementation GameViewController @synthesize scoreLabel; @synthesize score; @synthesize ball; @synthesize paddle; @synthesize livesLabel; @synthesize messageLabel; - (void)startPlaying { if (!lives) { lives = 3; score = 0; } scoreLabel.text = [NSString stringWithFormat:@"%d", score]; livesLabel.text = [NSString stringWithFormat:@"%d", lives]; ball.center = CGPointMake(159, 239); ballMovement = CGPointMake(4,4); // choose whether the ball moves left to right or right to left if (arc4random() % 100 < 50) ballMovement.x = -ballMovement.x; messageLabel.hidden = YES; isPlaying = YES; /* [self initialiseTimer]; */ [self performSelector:@selector(initialiseTimer) withObject:nil afterDelay:2.0]; } - (void)pauseGame { [theTimer invalidate]; theTimer = nil; } // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; [self startPlaying]; ballMovement = CGPointMake(4,4); [self performSelector:@selector(initialiseTimer) withObject:nil afterDelay:2.0]; } - (void)initialiseTimer { if (theTimer == nil) { float theInterval = 1.0f/50.0f; theTimer = [NSTimer scheduledTimerWithTimeInterval:theInterval target:self selector:@selector(animateBall:) userInfo:nil repeats:YES]; } } - (void)animateBall:(NSTimer *)theTimer { ball.center = CGPointMake(ball.center.x+ballMovement.x, ball.center.y+ballMovement.y); BOOL paddleCollision = ball.center.y >= paddle.center.y - 16 && ball.center.y <= paddle.center.y + 16 && ball.center.x > paddle.center.x - 32 && ball.center.x < paddle.center.x + 32; if(paddleCollision) ballMovement.y = -ballMovement.y; if (ball.center.x > 310 || ball.center.x < 16) ballMovement.x = -ballMovement.x; if (ball.center.y < 32) ballMovement.y = -ballMovement.y; if (ball.center.y > 444) { [self pauseGame]; isPlaying = NO; lives--; livesLabel.text = [NSString stringWithFormat:@"%d", lives]; if (!lives) { messageLabel.text = @"Game Over"; [self performSelector:@selector(initialiseTimer) withObject:nil afterDelay:2.0]; GameOverViewController *second = [[GameOverViewController alloc] initWithNibName:nil bundle:nil]; second.score = score; second.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:second animated:YES]; } else { messageLabel.text = @"Ball Hit The Floor :("; } messageLabel.hidden = NO; } if (CGRectIntersectsRect(ball.frame, paddle.frame)) { score ++; scoreLabel.text = [NSString stringWithFormat:@"%d", score]; [self checkcollision]; stopdetection = FALSE; } } - (void)checkcollision { if (!stopdetection && CGRectIntersectsRect(ball.frame, paddle.frame)) { stopdetection = TRUE; float diff=ball.center.x - paddle.center.x; ballMovement.x=150; // default if it hits the middle if (diff>150) { ballMovement.x=10; } if (diff<150) { ballMovement.x=-10; } } } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { if (isPlaying) { UITouch *touch = [[event allTouches] anyObject]; touchOffset = paddle.center.x - [touch locationInView:touch.view].x; } else { [self startPlaying]; } } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { if (isPlaying) { UITouch *touch = [[event allTouches] anyObject]; float distanceMoved =([touch locationInView:touch.view].x + touchOffset) -paddle.center.x; float newX = paddle.center.x + distanceMoved; if (newX > 30 && newX < 290) paddle.center = CGPointMake( newX, paddle.center.y ); } } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } - (void)viewDidUnload { // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (void)dealloc { [scoreLabel release]; [ball release]; [paddle release]; [livesLabel release]; [messageLabel release]; [super dealloc]; } @end![]()



LinkBack URL
About LinkBacks




