需求:
1、定义普通僵尸类:
实例变量:僵尸总血量、僵尸每次失血量。
方法:初始化方法、便利构造器、被打击失血、死亡。
2、定义路障僵尸类:
实例变量:僵尸总血量、僵尸每次失血量,道具,弱点。
方法:初始化方法、便利构造器、被打击失血、失去装备、死亡。
3、定义铁桶僵尸类:
实例变量:僵尸总血量、僵尸每次失血量,道具,弱点。
方法:初始化方法、便利构造器、被打击失血、失去装备、死亡。
4、在main.m中创建普通僵尸对象,设置总血量50,每次失血量为 3。
5、在main.m中创建路障僵尸对象,设置总血量80,每次失血量为 2,设置道具为路障, 没有弱点。
6、在main.m中创建铁桶僵尸对象,设置总血量120,每次失血量为 1,设置道具为铁桶, 没有弱点。
main.m
//
// main.m
// 打僵尸
//
// Created by dllo on 15/6/29.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "GeneralZombie.h"/* 普通僵尸 */
#import "RoadblockZombie.h"/* 路障僵尸 */
#import "BucketheadZombie.h"/* 铁桶僵尸 */
int main(int argc, const char * argv[]) {
@autoreleasepool {
/* 创建普通僵尸对象,设置总血量50,每次失血量为 3 */
GeneralZombie *genral = [GeneralZombie generalWithTotalBloodValume:50 loseBloodValume:1];
/* 创建路障僵尸对象,设置总血量80,每次失血量为 2,设置道具为路障, 没有弱点 */
RoadblockZombie *road = [RoadblockZombie roadblockZombieWithTotalBloodValume:80 loseBloodValume:2 prop:@"路障" weakness:@"无"];
/* 创建铁桶僵尸对象,设置总血量120,每次失血量为 1,设置道具为铁桶, 没有弱点 */
BucketheadZombie *bucket = [BucketheadZombie roadblockZombieWithTotalBloodValume:120 loseBloodValume:1 prop:@"铁桶" weakness:@"无"];
}
return 0;
}
GeneralZombie.h
<pre name="code" class="objc">//
// GeneralZombie.h
// 打僵尸
//
// Created by dllo on 15/6/29.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface GeneralZombie : NSObject
{
/* 声明两个实例变量 */
NSInteger _totalBloodValume;//总血量
NSInteger _loseBloodValume;//失血量
}
/* 声明setter,getter方法 */
- (void)setTotalBloodValume:(NSInteger)totalBloodValume;
- (NSInteger)totalBloodValume;
- (void)setLoseBloodValume:(NSInteger)loseBloodValume;
- (NSInteger)loseBloodValume;
/* 声明初始化方法 */
- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodValume
loseBloodValume:(NSInteger)loseBloodValume;
/* 声明便利构造器方法 */
+ (id)generalWithTotalBloodValume:(NSInteger)totalBloodValume
loseBloodValume:(NSInteger)loseBloodValume;
/* 声明被打击失血方法 */
- (void)loseBlood;
/* 声明死亡方法 */
- (void)die;
@end
GeneralZombie.m
<pre name="code" class="objc">//
// GeneralZombie.m
// 打僵尸
//
// Created by dllo on 15/6/29.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import "GeneralZombie.h"
@implementation GeneralZombie
/* 实例变量赋值setter 取值getter */
- (void)setTotalBloodValume:(NSInteger)totalBloodValume
{
_totalBloodValume = totalBloodValume;
}
- (NSInteger)totalBloodValume
{
return _totalBloodValume;
}
- (void)setLoseBloodValume:(NSInteger)loseBloodValume
{
_loseBloodValume = loseBloodValume;
}
- (NSInteger)loseBloodValume
{
return _loseBloodValume;
}
/* 初始化方法 */
- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodValume
loseBloodValume:(NSInteger)loseBloodValume
{
self = [super init];
if (self) {
_totalBloodValume = totalBloodValume;
_loseBloodValume = loseBloodValume;
}
return self;
}
/* 便利构造器 */
+ (id)generalWithTotalBloodValume:(NSInteger)totalBloodValume
loseBloodValume:(NSInteger)loseBloodValume
{
GeneralZombie *genera = [[GeneralZombie alloc]initWithTotalBloodValume:totalBloodValume loseBloodValume:loseBloodValume];
return genera;
}
/* 被打击失血 */
- (void)loseBlood
{
_totalBloodValume -= _loseBloodValume;
NSLog(@"剩余血量:%ld", _totalBloodValume);
}
/* 死亡 */
- (void)die
{
NSLog(@"Death");
}
@end
RoadblockZombie.h 继承于GeneralZombie类
<pre name="code" class="objc">//
// RoadblockZombie.h
// 打僵尸
//
// Created by dllo on 15/6/29.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import "GeneralZombie.h"
@interface RoadblockZombie : GeneralZombie
{
NSString *_prop;//道具
NSString *_weakness;//弱点
}
/* 声明setter,getter方法 */
- (void)setProp:(NSString *)prop;
- (NSString *)prop;
- (void)setWeakness:(NSString *)weakness;
- (NSString *)weakness;
/* 声明初始化方法 */
- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodVolume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness;
/* 声明便利构造器方法 */
+ (id)roadblockZombieWithTotalBloodValume:(NSInteger)totalBloodVolume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness;
/* 声明失去装备方法 */
- (void)loseprop;
@end
RoadblockZombie.m
<pre name="code" class="objc">//
// RoadblockZombie.m
// 打僵尸
//
// Created by dllo on 15/6/29.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import "RoadblockZombie.h"
@implementation RoadblockZombie
/* 实例变量赋值setter 取值getter */
- (void)setProp:(NSString *)prop
{
_prop = prop;
}
- (NSString *)prop
{
return _prop;
}
- (void)setWeakness:(NSString *)weakness
{
_weakness = weakness;
}
- (NSString *)weakness
{
return _weakness;
}
/* 初始化方法 */
- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodValume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness
{
self = [super initWithTotalBloodValume:totalBloodValume loseBloodValume:loseBloodValume];
if (self) {
_prop = prop;
_weakness = weakness;
}
return self;
}
/* 便利构造器 */
+ (id)roadblockZombieWithTotalBloodValume:(NSInteger)totalBloodValume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness
{
RoadblockZombie *road = [[RoadblockZombie alloc]initWithTotalBloodValume:totalBloodValume loseBloodValume:loseBloodValume prop:prop weakness:weakness];
return road;
}
/* 失去装备 */
- (void)loseprop
{
NSLog(@"loseProp");
}
@end
BucketheadZombie.h 继承于RoadblockZombie类(只需要创建BucketheadZombie类, 不需要写代码, 所有实例变量和代码全部继承父类)
BucketheadZombie.m