OC打僵尸

#import <Foundation/Foundation.h>
#import "Zombie.h"
#import "BlockZombie.h"
#import "IronHatZombie.h"

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

    @autoreleasepool {
        /*
         
         打僵尸。需求:
         定义普通僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量。方法:初始化、被打击失血、死亡。
         定义路障僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量,道具,弱点。方法:初始化、被打击失血、失去装备、死亡。
         定义铁桶僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量,道具,弱点。方法:初始化、被打击失血、失去装备、死亡。
         
         For循环 模拟攻击,创建3个僵尸对象。
         (1)、普通僵尸。总血量50,每次失血3.
         (2)、路障僵尸。总血量80,有路障时,每次失血2,血量剩余一半时,失去路障,每次失血3.
         (3)、铁桶僵尸。总血量120,有铁桶时,每次失血1,血量剩余1/3时,失去铁桶,每次失血3.
         循环攻击过程中:每个僵尸被攻击时,输出本次丢失血量,剩余血量。丢失道具时,输出丢失的道具。僵尸死亡时,输出已死亡。
         最后一个僵尸死亡时,攻击停止,循环结束。输出总攻击次数。
         
         */
        
        
        Zombie * zombie = [[Zombie alloc] initWithKind:@"普通僵尸" hp:50 lostHp:3];
        
        while (zombie->_currentHp > 0) {
            [zombie lostHpMethod];
        }
        
        BlockZombie * blockZombie = [[BlockZombie alloc] initWithKind:@"路障僵尸" hp:80 lostHp:2 equipment:@"英武路障之盔" weakness:2];
        
        while (blockZombie->_currentHp >0) {
            [blockZombie lostHpMethod];
        }
        
        
        IronHatZombie * ironZombie = [[IronHatZombie alloc] initWithKind:@"铁桶僵尸" hp:120 lostHp:1 equipment:@"巨鲸之铁桶圣衣" weakness:3];
        
        while (ironZombie->_currentHp >0) {
            [ironZombie lostHpMethod];
        }
        
        
    }
    return 0;
}

#import <Foundation/Foundation.h>

@interface Zombie : NSObject

{
    /*
     定义普通僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量。方法:初始化、被打击失血、死亡。
     */
    @public
    NSString * _kind;//种类
    int _hp;
    int _lostHp;
    int _currentHp;//当前剩余的血量
}

- (id)initWithKind:(NSString *)kind hp:(int)hp lostHp:(int)lostHp;

- (void)lostHpMethod;//被打击失血

- (void)dead;//死透



@end

#import "Zombie.h"

@implementation Zombie

- (id)initWithKind:(NSString *)kind hp:(int)hp lostHp:(int)lostHp
{
    self = [super init];
    if (self) {
        _kind = kind;
        _hp = hp;
        _lostHp = lostHp;
        _currentHp = hp;
    }
    return self;
}

- (void)lostHpMethod
{
    _currentHp = _currentHp - _lostHp;
    if (_currentHp <= 0) {
        //僵尸已经死亡
        _currentHp = 0;
        NSLog(@"%@被削掉%d血,还有%d血",_kind,_lostHp,_currentHp);
        [self dead];//self用来调用自己类中的其他方法
    }
    else
    {
        //如果没死,输出血量
        NSLog(@"%@被削掉%d血,还有%d血",_kind,_lostHp,_currentHp);
    }
    
}//被打击失血

- (void)dead
{
    NSLog(@"%@死啦",_kind);
}//死透


@end

#import "Zombie.h"

@interface BlockZombie : Zombie
{
    NSString * _equipment;
    int _weakness;
}

- (id)initWithKind:(NSString *)kind hp:(int)hp lostHp:(int)lostHp equipment:(NSString *)equipment weakness:(int)weakness;

- (void)lostEquipment;//丢失装备

@end


#import "BlockZombie.h"

@implementation BlockZombie


-(id)initWithKind:(NSString *)kind hp:(int)hp lostHp:(int)lostHp equipment:(NSString *)equipment weakness:(int)weakness
{
    self = [super initWithKind:kind hp:hp lostHp:lostHp];
    if (self) {
        _equipment = equipment;
        _weakness = weakness;
    }
    return self;
}


- (void)lostEquipment
{
    _lostHp = 3;//装备丢失,每次掉血量增加
    NSLog(@"%@的%@丢了",_kind,_equipment);
    _equipment = nil;//把装备扔掉
}

//重写掉血的方法
-(void)lostHpMethod
{
//warning _weakness的作用
    if ( _equipment!= nil && _currentHp <= _hp/_weakness) {
        [self lostEquipment];
    }
    
    [super lostHpMethod];
}


@end

#import "BlockZombie.h"

@interface IronHatZombie : BlockZombie

@end

#import "IronHatZombie.h"

@implementation IronHatZombie

@end

















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值