Ios 游戏中的未知错误(XCode)

Ios 游戏中的未知错误(XCode),ios,objective-c,iphone,xcode,Ios,Objective C,Iphone,Xcode,我正在XCode上制作第二个游戏,代码似乎有问题。这是一款太空射击游戏,玩家跟随你的手指,点击释放导弹。问题是。。。当我按下“开始游戏”时,所有内容都隐藏起来,不会弹出。这是我的viewcontroller.h和viewcontroller.m ViewController.m #import "ViewController.h" @interface ViewController () @end int score; int lives; int enemyAttackOccurence

我正在XCode上制作第二个游戏,代码似乎有问题。这是一款太空射击游戏,玩家跟随你的手指,点击释放导弹。问题是。。。当我按下“开始游戏”时,所有内容都隐藏起来,不会弹出。这是我的viewcontroller.h和viewcontroller.m

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

int score;
int lives;
int enemyAttackOccurence;
int enemyPosition;
int randomSpeed;
float enemySpeed;

@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.
}

@end

@implementation PlayViewController

-(void)viewDidAppear:(BOOL)animated {

    // Images that are to be hidden
    playerShip.hidden = YES;
    enemyShip.hidden = YES;
    missile.hidden = YES;
    earth.hidden = YES;

    // Hidden Labels
    scoreLabel.hidden = YES;
    livesLabel.hidden = YES;

    // Set score and lives remaining
    score = 0;
    lives = 0;

    // Strings
    scoreString = [NSString stringWithFormat:@"Score: 0"];
    liveString = [NSString stringWithFormat:@"Lives: 0"];

    // Initial Label Text
    scoreLabel.text = scoreString;
    livesLabel.text = liveString;

    // Image starting positions
    playerShip.center = CGPointMake(150, 658);
    enemyShip.center = CGPointMake(175, 20);
    missile.center = CGPointMake(playerShip.center.x, playerShip.center.y);

}

-(IBAction)startGame:(id)sender {

    // Hide buttons
    startButton.hidden = YES;
    exitButton.hidden = YES;

    // Images to show
    playerShip.hidden = NO;
    enemyShip.hidden = NO;
    earth.hidden = NO;

    // Labels
    scoreLabel.hidden = NO;
    livesLabel.hidden = NO;

    [self positionEnemy];

}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

    touch = [touches anyObject];
    CGPoint point = [touch locationInView:self.view];

    playerShip.center = CGPointMake(point.x, playerShip.center.y);

}

-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    [missileMovementTimer invalidate];
    missile.hidden = NO;
    missile.center = CGPointMake(playerShip.center.x, playerShip.center.y);

    missileMovementTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(missileMovement) userInfo:nil repeats:YES];

}

-(void)positionEnemy {

    // Random enemy position
    enemyPosition = arc4random() % 249;
    enemyPosition = enemyPosition + 20;

    // Enemy Image Location
    enemyShip.center = CGPointMake(enemyPosition, -40);

    // Set enemy speed
    randomSpeed = arc4random() % 3;
    switch (randomSpeed) {
        case 0:
            enemySpeed = 0.03;
            break;
        case 1:
            enemySpeed = 0.02;
            break;
        case 2:
            enemySpeed = 0.01;

        default:
            break;
    }

    enemyAttackOccurence = arc4random() % 5;
    [self performSelector:@selector(enemyMovementTimerMethod) withObject:nil afterDelay:enemyAttackOccurence];

}

-(void)enemyMovementTimerMethod {

    enemyMovementTimer = [NSTimer scheduledTimerWithTimeInterval:enemySpeed 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, earth.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, missile.center.y - 2);

    if (CGRectIntersectsRect(missile.frame, enemyShip.frame)) {
        score = score + 1;
        scoreString = [NSString stringWithFormat:@"Score: %i", score];
        scoreLabel.text = scoreString;
        // Stop missile
        [missileMovementTimer invalidate];
        // Position missile to be at the playerShip's center
        missile.center = CGPointMake(playerShip.center.x, playerShip.center.y);
        missile.hidden = YES;
        // Stop enemy movement
        [enemyMovementTimer invalidate];
        [self positionEnemy];
    }

}

-(void)gameOver {

    [enemyMovementTimer invalidate];
    [missileMovementTimer invalidate];
    [self performSelector:@selector(gameReplay) withObject:nil afterDelay:3];

}

-(void) gameReplay {

    // Images that are to be hidden
    playerShip.hidden = YES;
    enemyShip.hidden = YES;
    missile.hidden = YES;
    earth.hidden = YES;

    // Hidden Labels
    scoreLabel.hidden = YES;
    livesLabel.hidden = YES;

    // Set score and lives remaining
    score = 0;
    lives = 0;

    // Strings
    scoreString = [NSString stringWithFormat:@"Score: 0"];
    liveString = [NSString stringWithFormat:@"Lives: 0"];

    // Initial Label Text
    scoreLabel.text = scoreString;
    livesLabel.text = liveString;

    // Image starting positions
    playerShip.center = CGPointMake(150, 658);
    enemyShip.center = CGPointMake(175, 20);
    missile.center = CGPointMake(playerShip.center.x, playerShip.center.y);

}

@end
#导入“ViewController.h”
@界面视图控制器()
@结束
智力得分;
int生命;
内部攻击发生;
灌肠位;
int随机速度;
漂浮敌人的速度;
@实现视图控制器
-(无效)viewDidLoad{
[超级视图下载];
//加载视图后,通常从nib执行任何其他设置。
}
-(无效)未收到记忆警告{
[超级记忆警告];
//处置所有可以重新创建的资源。
}
@结束
@PlayViewController的实现
-(无效)视图显示:(BOOL)动画{
//要隐藏的图像
playerShip.hidden=是;
Enemmyship.hidden=是;
导弹隐藏=是;
earth.hidden=是;
//隐藏标签
scoreLabel.hidden=是;
livesLabel.hidden=是;
//设定分数和剩余生命
得分=0;
寿命=0;
//弦
scoreString=[NSString stringWithFormat:@“分数:0”];
liveString=[NSString stringWithFormat:@“生命:0”];
//初始标签文本
scoreLabel.text=scoreString;
livesLabel.text=liveString;
//图像起始位置
playerShip.center=CGPointMake(150658);
enemyShip.center=CGPointMake(175,20);
employee.center=CGPointMake(playerShip.center.x,playerShip.center.y);
}
-(iAction)开始名称:(id)发送方{
//隐藏按钮
startButton.hidden=是;
exitButton.hidden=是;
//要显示的图像
playerShip.hidden=否;
Enemmyship.hidden=否;
earth.hidden=否;
//标签
scoreLabel.hidden=否;
livesLabel.hidden=否;
[敌我];
}
-(无效)触摸开始:(NSSet*)触摸事件:(UIEvent*)事件{
}
-(无效)触摸移动:(NSSet*)触摸事件:(UIEvent*)事件{
touch=[触摸任何对象];
CGPoint=[触摸位置视图:self.view];
playerShip.center=CGPointMake(point.x,playerShip.center.y);
}
-(void)touchesend:(NSSet*)toucheevent:(UIEvent*)event{
[任务移动计时器失效];
导弹隐藏=否;
employee.center=CGPointMake(playerShip.center.x,playerShip.center.y);
missileMovementTimer=[NSTimer scheduledTimerWithTimeInterval:0.01目标:自选择器:@selector(missileMovement)用户信息:无重复:是];
}
-(无效)敌方{
//随机敌方阵地
enemyPosition=arc4random()%249;
灌肠位置=灌肠位置+20;
//敌方图像定位
enemyShip.center=CGPointMake(enemyPosition,-40);
//设定敌人的速度
randomSpeed=arc4random()%3;
开关(随机速度){
案例0:
敌人速度=0.03;
打破
案例1:
敌人速度=0.02;
打破
案例2:
敌人速度=0.01;
违约:
打破
}
EnemyAttackOccurrence=arc4random()%5;
[自执行选择器:@selector(enemyMovementTimerMethod),对象:nil afterDelay:enemyattackoccurrence];
}
-(无效)enemyMovementTimerMethod{
enemyMovementTimer=[NSTimer scheduledTimerWithTimeInterval:enemySpeed target:self self selector:@selector(enemyMovement)userInfo:nil repeats:YES];
}
-(无效)灌肠运动{
enemyShip.center=CGPointMake(enemyShip.center.x,enemyShip.center.y+2);
if(CGRectIntersectsRect(enemyShip.frame,earth.frame)){
生命=生命-1;
liveString=[NSString stringWithFormat:@“生命:%i”,生命];
livesLabel.text=liveString;
//阻止敌人移动
[enemyMovementTimer失效];
如果(寿命>0){
[敌我];
}
如果(寿命==0){
[自我放逐];
}
}
}
-(无效)文书动议{
导弹隐藏=否;
emilose.center=CGPointMake(emilose.center.x,emilose.center.y-2);
if(CGRectIntersectsRect(emilose.frame,enemyShip.frame)){
分数=分数+1;
scoreString=[NSString stringWithFormat:@“分数:%i”,分数];
scoreLabel.text=scoreString;
//拦截导弹
[任务移动计时器失效];
//将导弹定位在玩家中心
employee.center=CGPointMake(playerShip.center.x,playerShip.center.y);
导弹隐藏=是;
//阻止敌人移动
[enemyMovementTimer失效];
[敌我];
}
}
-(无效)游戏结束{
[enemyMovementTimer失效];
[任务移动计时器失效];
[自执行选择器:@selector(gameReplay)with object:nil afterDelay:3];
}
-(无效)游戏重播{
//要隐藏的图像
playerShip.hidden=是;
Enemmyship.hidden=是;
导弹隐藏=是;
earth.hidden=是;
//隐藏标签
scoreLabel.hidden=是;
livesLabel.hidden=是;
//设定分数和剩余生命
得分=0;
寿命=0;
//弦
scoreString=[NSString stringWithFormat:@“分数:0”];
liveString=[NSString stringWithFormat:@“生命:0”];
//初始标签文本
scoreLabel.text=scoreString;
livesLabel.text=liveString;
//图像起始位置
playerShip.center=CGPointMake(150658);
enemyShip.center=CGPointMake(175,20);
employee.center=CGPointMake(playerShip.center.x,playerShip.center.y);
}
@结束
ViewController.h(仅用于备份)

#导入
@界面ViewController:UIViewController{
IBUIButton*StartName;
}
@结束
@界面PlayViewController:UIViewController{
IBUIImageView*剧组;
IBUIImageView*电子商务;
IBUIImageView*导弹;
IBUIImageView*地球;
ibuilabel*livesLabel;
IBUILabel*s
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {

    IBOutlet UIButton *startGame;

}

@end
@interface PlayViewController : UIViewController {

    IBOutlet UIImageView *playerShip;
    IBOutlet UIImageView *enemyShip;
    IBOutlet UIImageView *missile;
    IBOutlet UIImageView *earth;

    IBOutlet UILabel *livesLabel;
    IBOutlet UILabel *scoreLabel;

    IBOutlet UIButton *startButton;
    IBOutlet UIButton *exitButton;

    UITouch *touch;

    NSString *liveString;
    NSString *scoreString;

    NSTimer *enemyMovementTimer;
    NSTimer *missileMovementTimer;

}

-(IBAction)startGame:(id)sender;

@end