// 普通僵尸 @interface CommonZombie : NSObject{ NSString * _kind; int _totalBlood; int _everyDownBlood; BOOL _state; } @property (nonatomic,copy) NSString * kind; // 僵尸种类 @property (nonatomic,assign) int totalBlood; // 僵尸总血量 @property (nonatomic,assign) int everyDownBlood; // 僵尸每次失血量 @property (nonatomic,assign) BOOL state; // 僵尸状态,YES为生,NO为死 - (id)initWithKind:(NSString *)kind TotalBlood:(int)totalblood EveryDownBlood:(int)everyDownBlood State:(BOOL)state; - (void)sufferDownBlood; - (void)isLiveOfDeath; @end @implementation CommonZombie - (id)initWithKind:(NSString *)kind TotalBlood:(int)totalblood EveryDownBlood:(int)everyDownBlood State:(BOOL)state{ if (self = [super init]) { _kind = kind; _totalBlood = totalblood; _everyDownBlood = everyDownBlood; _state = state; } return self; } - (void)sufferDownBlood{ _totalBlood -= _everyDownBlood; if (_totalBlood > 0) { NSLog(@"%@僵尸被攻击了,掉了%i滴血,剩余%i滴血",_kind,_everyDownBlood,_totalBlood); } else { NSLog(@"%@僵尸被攻击了,掉了%i滴血,剩余0滴血",_kind,_everyDownBlood); } } - (void)isLiveOfDeath{ if (_totalBlood < 0) { NSLog(@"普通僵尸死亡"); _state = NO; } } @end
@interface BarricadeZombie : CommonZombie @property (nonatomic,copy) NSString * prop; // 僵尸道具 @property (nonatomic,copy) NSString * weakness; // 僵尸弱点 - (id)initWithKind:(NSString *)kind TotalBlood:(int)totalblood State:(BOOL)state EveryDownBlood:(int)everyDownBlood Prop:(NSString *)prop Weakness:(NSString *)weakness; // 遭受攻击掉血 - (void)sufferDownBlood; // 是生是死 - (void)isLiveOfDeath; @end @implementation BarricadeZombie - (id)initWithKind:(NSString *)kind TotalBlood:(int)totalblood State:(BOOL)state EveryDownBlood:(int)everyDownBlood Prop:(NSString *)prop Weakness:(NSString *)weakness{ if (self = [super initWithKind:kind TotalBlood:totalblood EveryDownBlood:everyDownBlood State:state]) { _prop = prop; _weakness = weakness; } return self; } - (void)sufferDownBlood{ if (_totalBlood > 40 && _totalBlood <= 80 ) { _totalBlood -= 2; NSLog(@"%@僵尸被攻击了,掉了%i滴血,剩余%i滴血",_kind,_everyDownBlood,_totalBlood); } else if(_totalBlood <= 40 && _totalBlood > 0){ if (_totalBlood == 40) { NSLog(@"道具--路障掉了,僵尸现在流血由2滴血变成了3滴血"); } _everyDownBlood = 3; _totalBlood -= 3; if (_totalBlood > 0) { NSLog(@"%@僵尸被攻击了,掉了%i滴血,剩余%i滴血",_kind,_everyDownBlood,_totalBlood); }else{ NSLog(@"%@僵尸被攻击了,掉了%i滴血,剩余0滴血",_kind,_everyDownBlood); } } } - (void)isLiveOfDeath{ if (_totalBlood < 0) { NSLog(@"路障僵尸死亡"); _state = NO; } } @end
@interface IronDrunZombie : CommonZombie // 铁桶僵尸 @property (nonatomic,copy) NSString * prop; // 僵尸道具 @property (nonatomic,copy) NSString * weakness; // 僵尸弱点 - (id)initWithKind:(NSString *)kind TotalBlood:(int)totalblood State:(BOOL)state EveryDownBlood:(int)everyDownBlood Prop:(NSString *)prop Weakness:(NSString *)weakness; // 遭受攻击掉血 - (void)sufferDownBlood; // 是生是死 - (void)isLiveOfDeath; @end @implementation IronDrunZombie - (id)initWithKind:(NSString *)kind TotalBlood:(int)totalblood State:(BOOL)state EveryDownBlood:(int)everyDownBlood Prop:(NSString *)prop Weakness:(NSString *)weakness{ if (self = [super initWithKind:kind TotalBlood:totalblood EveryDownBlood:everyDownBlood State:state]) { _prop = prop; _weakness = weakness; } return self; } - (void)sufferDownBlood{ if (_totalBlood > 40 && _totalBlood <= 120 ) { _totalBlood -= 1; NSLog(@"%@僵尸被攻击了,掉了%i滴血,剩余%i滴血",_kind,_everyDownBlood,_totalBlood); } else if(_totalBlood <= 40 && _totalBlood > 0){ if (_totalBlood == 40) { NSLog(@"道具--铁桶掉了,僵尸现在流血由1滴血变成了3滴血"); } _everyDownBlood = 3; _totalBlood -= 3; if (_totalBlood > 0) { NSLog(@"%@僵尸被攻击了,掉了%i滴血,剩余%i滴血",_kind,_everyDownBlood,_totalBlood); }else{ NSLog(@"%@僵尸被攻击了,掉了%i滴血,剩余0滴血",_kind,_everyDownBlood); } } } - (void)isLiveOfDeath{ if (_totalBlood < 0) { NSLog(@"铁桶僵尸死亡"); _state = NO; } } @end
int main(int argc, const char * argv[]) { @autoreleasepool { CommonZombie * HMT = [[CommonZombie alloc]initWithKind:@"普通僵尸" TotalBlood:50 EveryDownBlood:3 State:YES]; BarricadeZombie * ZWS = [[BarricadeZombie alloc]initWithKind:@"路障僵尸" TotalBlood:80 State:YES EveryDownBlood:2 Prop:@"路障" Weakness:@"大喷蘑"]; IronDrunZombie * ZWP = [[IronDrunZombie alloc]initWithKind:@"铁桶僵尸" TotalBlood:120 State:YES EveryDownBlood:1 Prop:@"铁桶" Weakness:@"磁铁蘑菇"]; int count = 0; while (ZWP.state == YES) { if (HMT.state == YES) { [HMT sufferDownBlood]; [HMT isLiveOfDeath]; } if (ZWS.state == YES) { [ZWS sufferDownBlood]; [ZWS isLiveOfDeath]; } [ZWP sufferDownBlood]; [ZWP isLiveOfDeath]; count++; } NSLog(@"一共攻击了%i次",count); } return 0; }