定义僵尸类:
公共成员变量:类型、总血量、每次失血量
方法:初始化方法(设置僵尸种类,总血量)、被打击失血、死亡
定义有防具僵尸类继承于僵尸类:
特有成员变量:防具类型
特有方法:防具被打烂
定义铁桶僵尸类继承于有防具僵尸:
特有成员变量:弱点
特有方法:防具被磁铁吸走
普通僵尸:Corpse.h
#import <Foundation/Foundation.h>
@interface Corpse : NSObject
/// 普通僵尸
{
NSString *_type; //类型
NSInteger _blood; //血量
NSInteger _loss; //掉血量
}
- (id)initWithType:(NSString *)type
blood:(NSInteger)blood
loss:(NSInteger)loss;
/// 僵尸死亡方法
- (void)die;
/// 僵尸掉血方法
- (NSInteger)lossBlood:(NSInteger)blood loss:(NSInteger)loss;
@end
#import "Corpse.h"
@implementation Corpse
- (id)initWithType:(NSString *)type
blood:(NSInteger)blood
loss:(NSInteger)loss
{
self = [super init];
if (self) {
_type = type;
_blood = blood;
_loss = loss;
}
return self;
}
/// 僵尸死亡方法
- (void)die
{
NSLog(@"我不行了");
}
/// 僵尸掉血方法
- (NSInteger)lossBlood:(NSInteger)blood loss:(NSInteger)loss
{
_blood = blood - _loss;//初始血量不变,每次打击的血量累加达到每次掉血相同的效果
_loss += loss;
if (_blood < 0) {
NSLog(@"僵尸挂了");
} else{
NSLog(@"还有血量%ld", _blood);
}
return _blood;
}
@end
路障僵尸:Dedence.h
#import "Corpse.h"
@interface Dedence : Corpse
/// 路障僵尸
{
NSString *_propType; //防具类型
}
- (id)initWithType:(NSString *)type
blood:(NSInteger)blood
loss:(NSInteger)loss
propType:(NSString *)propType;
- (void)die;
/// 僵尸掉血方法
- (NSInteger)lossBlood:(NSInteger)blood loss:(NSInteger)loss;
@end
Dedence.m
#import "Dedence.h"
@implementation Dedence
- (id)initWithType:(NSString *)type
blood:(NSInteger)blood
loss:(NSInteger)loss
propType:(NSString *)propType
{
self = [super initWithType:type blood:blood loss:loss];
if (self) {
_propType = propType;
}
return self;
}
- (void)die
{
NSLog(@"我不行了");
}
/// 路障僵尸掉血方法
- (NSInteger)lossBlood:(NSInteger)blood loss:(NSInteger)loss
{
_blood = blood - _loss;
_loss += loss;
if (_blood <= 50) {
_loss += 1;
if (_blood <= 0) {
NSLog(@"我不行了");
} else {
NSLog(@"我快不行了");
NSLog(@"还有血量%ld", _blood);
}
} else{
NSLog(@"还有血量%ld", _blood);
}
return _blood;
}
@end
铁桶僵尸:Iron.h
#import "Dedence.h"
@interface Iron : Dedence
/// 铁桶僵尸
{
NSString *_weakness; // 弱点
}
- (id)initWithType:(NSString *)type
blood:(NSInteger)blood
loss:(NSInteger)loss
propType:(NSString *)propType
weakness:(NSString *)weakness;
/// 僵尸死亡方法
- (void)die;
/// 僵尸掉血方法
- (NSInteger)lossBlood:(NSInteger)blood loss:(NSInteger)loss;
@end
Iron.m
#import "Iron.h"
@implementation Iron
- (id)initWithType:(NSString *)type
blood:(NSInteger)blood
loss:(NSInteger)loss
propType:(NSString *)propType
weakness:(NSString *)weakness
{
self = [super initWithType:type blood:blood loss:loss propType:propType];
if (self) {
_weakness = weakness;
}
return self;
}
/// 僵尸死亡方法
- (void)die
{
NSLog(@"我不行了");
}
/// 僵尸掉血方法
- (NSInteger)lossBlood:(NSInteger)blood loss:(NSInteger)loss
{
_blood = blood - _loss;
_loss += loss;
if (_blood <= 50) {
_loss += 2;
if (_blood <= 0) {
NSLog(@"我不行了");
} else {
NSLog(@"我快不行了");
NSLog(@"还有血量%ld", _blood);
}
} else{
NSLog(@"还有血量%ld", _blood);
}
return _blood;
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Corpse.h"
#import "Dedence.h"
#import "Iron.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Corpse *putong = [[Corpse alloc] initWithType:@"putong" blood:50 loss:3];
NSInteger leftblood1 = 50;//剩余血量
while (leftblood1 > 0) {
leftblood1 = [putong lossBlood:50 loss:3];
}
if (leftblood1 < 0) {
[putong die];
}
Dedence *road = [[Dedence alloc]initWithType:@"road" blood:80 loss:2];
NSInteger leftblood2 = 80;
while (leftblood2 > 0) {
leftblood2 = [road lossBlood:80 loss:2];
}
if (leftblood2 < 0) {
[road die];
}
Iron *bucket = [[Iron alloc] initWithType:@"bucket" blood:120 loss:1];
NSInteger leftblood3 = 120;
while (leftblood3 > 0) {
leftblood3 = [bucket lossBlood:120 loss:1];
}
if (leftblood3 < 0) {
[bucket die];
}
}
return 0;
}