Hello guys I'm pretty new to Xcode and programming for iOS in general, however I've recently written some code for my application and I am having 3 errors which are:
In the ViewController.m section.
The issues are:
1st Error
Semantic Issue - Undeclared selector 'missleMovement'
2nd Error
ARC Semantic Issue - No visible @interface for 'ViewController' declares the selector 'gameOver'
3rd Error
Semantic Issue - Use of undeclared identifier 'missleMovement'
These are the 3 parts of my whole code that is giving issues. I'm not sure why I'm a newbie if you can understand any of the errors and give advice I would appreciate that.
If you require more info in regards to the application I can freely explain to give a better understanding.
FULL CODE
ViewController.h
In the ViewController.m section.
The issues are:
1st Error
Semantic Issue - Undeclared selector 'missleMovement'
Code:
missleMovementTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector (missleMovement) userInfo:nil repeats:YES];
2nd Error
ARC Semantic Issue - No visible @interface for 'ViewController' declares the selector 'gameOver'
Code:
[self gameOver];
3rd Error
Semantic Issue - Use of undeclared identifier 'missleMovement'
Code:
-(void)missleMovement
These are the 3 parts of my whole code that is giving issues. I'm not sure why I'm a newbie if you can understand any of the errors and give advice I would appreciate that.
If you require more info in regards to the application I can freely explain to give a better understanding.
FULL CODE
Code:
#import "ViewController.h"
@interface ViewController ()
@end
int score;
int lives;
int enemyAttackOccurence;
int enemyPosition;
int randomSpeed;
float speedOfEnemy;
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)viewDidAppear:(BOOL)animated {
// Images that are to be hidden
friendlyShip.hidden = YES;
enemyShip.hidden = YES;
motherShip.hidden = YES;
missle.hidden = YES;
// Labels to be hidden
scoreLabel.hidden = YES;
livesLabel.hidden = YES;
// Set score and lives remaining
score = 0;
lives = 3;
// Strings
scoreString = [NSString stringWithFormat:@"SCORE; 0"];
liveString = [NSString stringWithFormat:@"LIVES; 3"];
// Initials Label text
scoreLabel.text = scoreString;
livesLabel.text = liveString;
// Starting position of images
friendlyShip.center = CGPointMake(140, 400);
enemyShip.center = CGPointMake(140, -40);
missle.center = CGPointMake(friendlyShip.center.x, friendlyShip.center.y);
motherShip.layer.cornerRadius = 50;
}
-(IBAction)startGame:(id)sender {
// Hide start button
startButton.hidden = YES;
// Show images
friendlyShip.hidden = NO;
enemyShip.hidden = NO;
motherShip.hidden = NO;
// Display labels
scoreLabel.hidden = NO;
livesLabel.hidden = NO;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
friendlyShip.center = CGPointMake(point.x, friendlyShip.center.y);
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[missleMovementTimer invalidate];
missle.hidden = NO;
missle.center = CGPointMake(friendlyShip.center.x, friendlyShip.center.y);
missleMovementTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(missleMovement) userInfo:nil repeats:YES];
}
-(void)positionEnemy {
// Random enemy position
enemyPosition = arc4random() %249;
enemyPosition = enemyPosition + 20;
// Set enemy Image location
enemyShip.center = CGPointMake(enemyPosition, -40);
// Set enemy speed
randomSpeed = arc4random() % 3;
switch (randomSpeed) {
case 0:
speedOfEnemy = 0.03;
break;
case 1:
speedOfEnemy = 0.02;
break;
case 2:
speedOfEnemy = 0.01;
default:
break;
}
enemyAttackOccurence = arc4random() % 5;
[self performSelector:@selector(enemyMovementTimerMethod) withObject:nil afterDelay:enemyAttackOccurence];
}
-(void)enemyMovementTimerMethod {
enemyMovementTimer = [NSTimer scheduledTimerWithTimeInterval:speedOfEnemy target:self selector:@selector(enemyMovement) userInfo:nil repeats:YES];
}
-(void)enemyMovement {
enemyShip.center = CGPointMake(enemyShip.center.x, enemyShip.center.y + 2);
if (CGRectIntersectsRect(enemyShip.frame, motherShip.frame)) {
lives = lives - 1;
liveString = [NSString stringWithFormat:@"LIVES: %i", lives];
livesLabel.text = liveString;
// Stop enemy moving
[enemyMovementTimer invalidate];
if ( lives > 0) {
[self positionEnemy];
}
if ( lives == 0) {
[self gameOver];
}
}
-(void)missileMovement {
missile.hidden = NO;
missile.center = CGPointMake(missile.center.x, missle.center.y - 2);
if (CGRectIntersectsRect(missile.frame, enemyShip.frame)) {
score = score + 5;
scoreString = [NSSTring stringWithFormat:@"SCORE: %i", score];
scoreLabel.text = scoreString;
// Stop missle
[missileMovementTimer invalidate];
// Position missle to be central to friendly ship
missile.center = CGPOintMake(friendlyShip.center.x, friendlyShip.center.y);
missile.hidden = YES;
// Stop enemy movement
[enemyMovementTimer invalidate];
[self positionEnemy];
}
}
-(void)gameOver {
[enemyMovementTimer invalidate];
[missleMovementTimer invalidate];
[self performSelector:@selector(replayGame) withObject:nil afterDelay:3];
}
-(void)replayGame {
// Images that are to be hidden
friendlyShip.hidden = YES;
enemyShip.hidden = YES;
motherShip.hidden = YES;
missle.hidden = YES;
// Labels to be hidden
scoreLabel.hidden = YES;
livesLabel.hidden = YES;
// Set score and lives remaining
score = 0;
lives = 3;
// Strings
scoreString = [NSString stringWithFormat:@"SCORE; 0"];
liveString = [NSString stringWithFormat:@"LIVES; 0"];
// Initials Label text
scoreLabel.text = scoreString;
livesLabel.text = liveString;
// Starting position of images
friendlyShip.center = CGPointMake(140, 400);
enemyShip.center = CGPointMake(140, -40);
missle.center = CGPointMake(friendlyShip.center.x, friendlyShip.center.y);
motherShip.layer.cornerRadius = 50;
}
@end}
@end
ViewController.h
Code:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
IBOutlet UIImageView *friendlyShip;
IBOutlet UIImageView *enemyShip;
IBOutlet UIImageView *motherShip;
IBOutlet UIImageView *missile;
IBOutlet UILabel *livesLabel;
IBOutlet UILabel *scoreLabel;
IBOutlet UIButton *startButton;
UITouch *touch;
NSString *liveString;
NSString *scoreString;
NSTimer *enemyMovementTimer;
NSTimer *missileMovementTimer;
}
-(IBAction)startGame:(id)sender;
@end
Last edited: