OC打僵尸

来源:互联网 发布:地理空间数据云官网 编辑:程序博客网 时间:2024/06/04 17:46
#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
原创粉丝点击