黑马程序员技术交流社区

标题: oc一个作为连续穿参数的 实例 [打印本页]

作者: 谁想去飞    时间: 2014-12-11 23:06
标题: oc一个作为连续穿参数的 实例
oc 一个例子 对象作为参数 连续的传递
实现功能:士兵开枪 枪射击子弹
子弹类
名称:Bullet
属性:子弹个数,型号(_model)


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

人类
名称:Soldier
属性:姓名(_name)          life  level(等级)
行为:跑 蹲 开枪  跳


#import <Foundation/Foundation.h>
#pragma mark 子弹类的声明
@interface Bullet:NSObject
{

    @public
    int _bulletCount; //子弹的个数
    NSString *_size;  //子弹的型号

}
@end

#pragma mark 子弹类的实现
@implementation Bullet

@end

#pragma mark 枪类的声明
@interface Gun:NSObject
{
@public
    NSString *_size;  //枪的型号


//    int _bulletCount; //枪的子弹数
}
//枪射击的时候,需要子弹
-(void)shoot:(Bullet *) bullet;
@end

#pragma mark 枪类的实现
@implementation Gun

-(void)shoot:(Bullet *) bullet{

    //如果子弹的个数>0再减1
    //<=0提示没子弹
    if(bullet->_bulletCount >0){
        bullet->_bulletCount  -= 1;
        NSLog(@"用%@开始 biubiu .... 枪在射击!剩余子弹:%d",_size,bullet->_bulletCount);
    }else{
        NSLog(@"没子弹了,请上子弹!\n");
    }


}

@end
#pragma mark soldier类的声明
@interface Soldier:NSObject
{
@public
    int _life;  //生命值
    int _level; //级别
    NSString *_name; //姓名

}

-(void)run;  //跑
-(void)jump; //跳
-(void)dun;  //蹲
-(void)fireByGun:(Gun*) gun; //开火

@end
#pragma mark soldier类的实现
@implementation Soldier
-(void)run{

    NSLog(@"大兵正在跑");

}  //跑
-(void)jump{

    NSLog(@"大兵正在跳");

} //跳
-(void)dun{

    NSLog(@"大兵蹲下了");


}  //蹲
-(void)fireByGun:(Gun*) gun andBullet:(Bullet *)bullet{

    //大兵让枪开火
    [gun shoot:bullet];

} //开火
@end






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


        //创建大兵
        Soldier *soldier = [Soldier new];
        soldier->_name = @"赵四";
        soldier->_life = 34;
        soldier->_level = 5;

        //创建一把枪
        Gun  *gun = [Gun new];
        gun->_size = @"小米加步枪";

        //创建一个子弹类
        Bullet *bullet = [Bullet new];
        bullet->_bulletCount = 3;
        bullet->_size = @"1cm";

        //大兵开枪
        [soldier fireByGun:gun andBullet:bullet];
        [soldier fireByGun:gun andBullet:bullet];
        [soldier fireByGun:gun andBullet:bullet];
        [soldier fireByGun:gun andBullet:bullet];

    }
    return 0;
}








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2