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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 和夏一样狂热 中级黑马   /  2015-8-6 23:49  /  389 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*

士兵开枪 枪射击子弹

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

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

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


//要求士兵在射击的时候,不但要给一把枪,还要给 一个弹夹才能射击
//子弹不能为负数

*/


#import <Foundation/Foundation.h>

#pragma mark 子弹类的声明
@interface Bullet:NSObject
{
    @public
    NSString *_size;
    int _bulletCount;
}

@end

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

@end

#pragma mark 枪类声明
@interface Gun:NSObject
{
    //实例变量
@public
    NSString *_size;  //枪的型号
   
}
//枪的行为
-(void)shoot:(Bullet *) bullet;
@end
#pragma mark 枪类实现
@implementation Gun
//枪射击的方法的实现
-(void)shoot:(Bullet *) bullet{

   //判断子弹数>0
    //子弹对象(弹夹)中的子弹的个数
    if(bullet->_bulletCount>0){
        
        //子弹数-1
        bullet->_bulletCount --;
        NSLog(@"啪啪啪...枪在射击...剩余子弹:%d",bullet->_bulletCount);
        
    }else{
        //如果子弹数<0 提示没子弹了
        NSLog(@"没子弹了,请换子弹");
        
    }
   
}
@end


#pragma mark 士兵类声明
@interface Soldier:NSObject
{
@public
    NSString *_name;
    int life;
    int level;
    //    Gun *_gun;
}

//行为
-(void)fireByGun:(Gun *) gun andBullet:(Bullet *)bullet;
@end
#pragma mark 士兵类实现
@implementation Soldier
-(void)fireByGun:(Gun *) gun andBullet:(Bullet *)bullet{

    //让枪装上子弹,然后射击
    //子弹作为参数传递给射击的方法
    [gun shoot:bullet];


}
@end


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //创建一个士兵对象
        Soldier *s = [Soldier new];
        s->_name = @"三多";
        s->life = 98;
        s->level = 2;
        
        //创建枪的对象
        Gun *gun = [Gun new];
        gun->_size = @"小米加步枪";

        
        //创建子弹
        Bullet *myBullet = [Bullet new];
        myBullet->_size = @"5mm口径";
        myBullet->_bulletCount = 3;
        
        [s fireByGun:gun andBullet:myBullet];
        [s fireByGun:gun andBullet:myBullet];
        [s fireByGun:gun andBullet:myBullet];
        [s fireByGun:gun andBullet:myBullet];
        
    }
    return 0;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马