翌日-マルチファイルの使用

2534 ワード

#import <Foundation/Foundation.h>

// main              

#import "CZSoldier.h"
#import "CZGun.h"
#import "CZBullet.h"

int main(int argc, const char * argv[]) {

    CZSoldier * soldier1 = [CZSoldier new];
    soldier1->_name = @"  ";
    soldier1->_life = 100;
    
    CZSoldier * enemy = [CZSoldier new];
    enemy->_name = @"  ";
    enemy->_life = 20;
    
    CZGun * gun = [CZGun new];
    gun->_bulletCount = 10;
    gun->_shootRange = 100;
    
    CZBullet * bullet = [CZBullet new];
    bullet->_power = 10;
    
    
    [soldier1 shootTo:enemy usingGun:gun andBullet:bullet];
    [soldier1 shootTo:enemy usingGun:gun andBullet:bullet];
    
    
    return 0;
}

//CZSoldier.h
#import <Foundation/Foundation.h>

//@class            
//@class         
//#import         

@class CZGun;
@class CZBullet;

@interface CZSoldier : NSObject
{
@public
    NSString * _name;
    int _life;
}

-(void) shootTo:(CZSoldier *) other usingGun:(CZGun *) gun andBullet:(CZBullet *) bullet;

@end

#import "CZSoldier.h"
#import "CZGun.h"
#import "CZBullet.h" //       ,         

@implementation CZSoldier

-(void) shootTo:(CZSoldier *) other usingGun:(CZGun *) gun andBullet:(CZBullet *) bullet
{
    NSLog(@"%@       %@",_name,other->_name);
    [gun shootTo: other  usingBullet:bullet];
}

@end

//CZGun.h
#import <Foundation/Foundation.h>
//      


#import "CZSoldier.h"
@class CZBullet;

@interface CZGun : NSObject
{
@public
    int _bulletCount;//    
    double _shootRange;//  
}

- (void) shootTo:(CZSoldier *)enemy usingBullet:(CZBullet *) bullet;

@end


#import "CZSoldier.h"
#import "CZGun.h"
#import "CZBullet.h"


@implementation CZGun

- (void) shootTo:(CZSoldier *)enemy usingBullet:(CZBullet *) bullet
{
    
    NSLog(@"     %@",enemy->_name);
    [bullet flyTo:enemy];
}

@end

//CZBullet.h
#import <Foundation/Foundation.h>
@class CZSoldier;

@interface CZBullet : NSObject
{
@public
    int _power;//   
}


- (void) flyTo:(CZSoldier *) enemy;

@end


#import "CZBullet.h"
#import "CZSoldier.h"

@implementation CZBullet

- (void) flyTo:(CZSoldier *) enemy
{
    
    if (enemy->_life >= 10) {
        enemy->_life -= 10;
    }else{
        enemy->_life = 0;
    }
    
    NSLog(@"       ");
    if (enemy->_life == 0 ) {
        NSLog(@"%@     ",enemy->_name);
    }
}
@end