A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© feng2706 中级黑马   /  2016-3-6 22:57  /  747 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
子弹类
名称:Bullet
属性:子弹个数,型号(_model)

枪类:
名称:Gun
属性:型号(_size),子弹个数(_bulletCount)
行为:射击

士兵类
名称:Soldier
属性:姓名(_name)    life    level(等级)
行为:开枪

*/

#import <Foundation/Foundation.h>
#pragma mark - 子弹类
//声明了一个子弹类Bullet
@interface Bullet : NSObject
{ @public
//属性:子弹个数,型号(_model)
    int _bullerNum;
    NSString *_model;
}

@end
@implementation Bullet

@end

#pragma mark - 枪类
//枪类:
//名称:Gun
//声明了一个类
@interface Gun : NSObject
{ @public
    NSString *_size;
}
-(void)shoot:(Bullet *)bullet;
@end
//实现这个类
@implementation Gun

-(void)shoot:(Bullet *)bullet{
    if (bullet->_bullerNum > 0) {
        bullet->_bullerNum--;
        NSLog(@"子弹还剩下%d",bullet->_bullerNum);
    }else{
        NSLog(@"没有子弹了!!!!");
    }

}

@end
//行为:射击

#pragma mark - 士兵类
//声明了一个类
@interface Soldier : NSObject
{
    NSString *_name;
    int _life;
    int _level;

//    行为:开枪
}
-(void)kaiGun:(Gun *)gun andBullet:(Bullet *)bullet;
@end
//实现了一个类
@implementation Soldier

-(void)kaiGun:(Gun *)gun andBullet:(Bullet *)bullet{
    [gun shoot:bullet];

}

@end
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Bullet *p = [Bullet new];
        p->_bullerNum = 3;
        Gun *p1 = [Gun new];
        Soldier *p2 = [Soldier new];
        [p2 kaiGun:p1 andBullet:p];
        [p2 kaiGun:p1 andBullet:p];
        [p2 kaiGun:p1 andBullet:p];
        [p2 kaiGun:p1 andBullet:p];
        [p2 kaiGun:p1 andBullet:p];
        
    }
    return 0;
}
怎么是连续调用哦    弄蒙了

2 个回复

倒序浏览
子弹是一个对象,作为参数,连续传递了啊. 士兵开枪,士兵没有调用子弹 是枪调用的子弹  就是连续传递啊  .
回复 使用道具 举报
路过,留痕。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马