//初始化和遍历构造器使用
//person.h文件
1 #import <Foundation/Foundation.h>
2
3 @interface Person : NSObject
4
5 {
6
7 NSString *_name;
8 int _age;
9 NSString *_sex;
10
11
12 }
13
14 +(id)PersonWithName:(NSString*)name age:(int)age;
15 -(id)initWithName:(NSString*)name age:(int)age;
16
17 -(void)setName:(NSString*)name;
18 -(NSString*)name;
19
20 -(void)setAge:(int)age;
21 -(int)age;
22
23 -(void)setSex:(NSString*)sex;
24 -(NSString *)sex;
25
26
27 +(id)PersonWithName:(NSString *)name;
28 -(id)initWithName:(NSString*)name;
29
30 @end
//person.m文件
1 #import "Person.h"
2
3 @implementation Person
4
5 +(id)PersonWithName:(NSString*)name age:(int)age
6 {
7 Person *p = [[Person alloc] initWithName:(NSString*)name age:age];
8 return p;
9
10 }
11 //完整的初始化方法
12
13 -(id)initWithName:(NSString*)name age:(int)age
14 {
15 self = [super init];
16 if (self) {
17 _name = name;
18 _age = age;
19 }
20
21 return self;
22
23 }
24
25 +(id)PersonWithName:(NSString *)name
26 {
27
28 Person *p2 = [[Person alloc] initWithName:name];
29 return p2;
30
31
32 }
33
34
35 -(id)initWithName:(NSString*)name
36 {
37 self = [super init];
38 if (self) {
39 _name = name;
40 }
41
42
43 return self;
44
45
46 }
47
48
49
50
51
52 -(void)setName:(NSString*)name
53 {
54
55 _name = name;
56
57 }
58 -(NSString*)name
59 {
60
61 return _name;
62 }
63
64 -(void)setAge:(int)age
65 {
66 _age = age;
67
68
69 }
70 -(int)age
71 {
72
73 return _age;
74 }
75
76 -(void)setSex:(NSString*)sex
77 {
78
79 _sex = sex;
80
81 }
82 -(NSString *)sex
83 {
84 return _sex;
85
86
87 }
88
89
90
91 @end
//main.m文件
1 #import <Foundation/Foundation.h>
2
3 #import "Person.h"
4
5 int main(int argc, const char * argv[]) {
6 @autoreleasepool {
7
8 //注意在使用遍历构造器时,要和初始化方法结合到一起才能使用
9 //类方法只有类才可以调用
10 Person *p1 = [Person PersonWithName:@"小明" age:12];
11 NSLog(@"%@ %d",[p1 name],[p1 age]);
12
13 //注意在使用遍历构造器时,要和初始化方法结合到一起才能使用
14 Person *p2 = [Person PersonWithName:@"小辉"];
15 NSLog(@"%@ ",[p2 name]);
16
17
18
19
20
21 }
22 return 0;
23 }
oc中植物大战僵尸练习(用继承的方法写)
Zombie.h(普通僵尸)
1 #import <Foundation/Foundation.h>
2
3 @interface Zombie : NSObject
4
5 {
6 NSString *_type; //僵尸种类
7 NSInteger _blood; //总血量
8 NSInteger _restBlood; //剩余血量
9 NSInteger _lostBlood; //失血量
10 BOOL _isDeath; //是否死亡
11
12
13
14 }
15
16
17 //初始化方法(总血量)
18 -(id)initWithType:(NSString*)type
19 blood:(NSInteger)blood
20 restBlood:(NSInteger)restBlood
21 lostBlood:(NSInteger)lostBlood
22 isDeath:(BOOL)isDeath;
23
24 //遍历构造器
25 +(id)zombleWithType:(NSString*)type
26 blood:(NSInteger)blood
27 lostBlood:(NSInteger)loatBlood;
28
29
30
31 //赋值
32 -(void)setIsdeath:(BOOL)isDeath;
33
34 //取值
35 -(NSString*)type;
36 -(NSInteger)blood;
37 -(NSInteger)lostBlood;
38 -(BOOL)isDeath;
39
40 //被打失血
41 -(void)attack;
42
43 //死亡
44 -(void)dead;
45
46
47
48
49 @end
//Zombie.m(普通僵尸)
1 #import "Zombie.h"
2
3 @implementation Zombie
4 //初始化
5 -(id)initWithType:(NSString*)type
6 blood:(NSInteger)blood
7 restBlood:(NSInteger)restBlood
8 lostBlood:(NSInteger)lostBlood
9 isDeath:(BOOL)isDeath
10 {
11
12 if(self = [super init])
13 {
14 _type = type;
15 _blood = blood;
16 _restBlood = restBlood;
17 _lostBlood = lostBlood;
18 _isDeath = isDeath;
19
20 }
21 return self;
22
23 }
24
25 //遍历构造器
26 +(id)zombleWithType:(NSString*)type
27 blood:(NSInteger)blood
28 lostBlood:(NSInteger)lostBlood
29 {
30
31 return [[Zombie alloc] initWithType:type blood:blood restBlood:blood lostBlood:lostBlood isDeath:NO];
32
33 }
34
35
36 -(void)setIsdeath:(BOOL)isDeath
37 {
38
39 _isDeath = isDeath;
40 }
41
42
43 //取值
44 -(NSString*)type
45 {
46 return _type;
47
48 }
49 -(NSInteger)blood
50 {
51 return _blood;
52
53 }
54 -(NSInteger)lostBlood
55 {
56
57 return _lostBlood;
58 }
59 -(BOOL)isDeath
60 {
61 return _isDeath;
62
63 }
64
65
66
67
68 //被打击失血
69 -(void)attack
70 {
71 if(_restBlood <=_lostBlood){
72 _isDeath = YES;
73 [self dead];
74
75 } else {
76 NSLog(@"普通僵尸每次失去血量:%ld",_lostBlood);
77 _restBlood -= _lostBlood;
78 NSLog(@"普通僵尸剩余血量:%ld",_restBlood);
79
80 }
81 }
82
83 //死亡
84 -(void)dead
85 {
86 NSLog(@"....普通僵尸已死亡!!!");
87
88 }
89
90
91
92 @end
ArmorZombie.文件(路障僵尸)
1 #import <Foundation/Foundation.h>
2
3 #import "Zombie.h"
4
5 @interface ArmorZombie : Zombie
6
7 {
8
9 NSString* _armorType; //防具类型
10 BOOL _isArmorDrop; //防具是否掉落
11
12
13 }
14
15 //初始化
16 -(id)initWithType:(NSString*)type
17 blood:(NSInteger)blood
18 lostBlood:(NSInteger)lostBlood
19 isDeath:(BOOL)isDeath
20 armorType:(NSString*)armorType;
21
22
23 //遍历构造器
24 +(id)armorZombieType:(NSString*)type
25 blood:(NSInteger)blood
26 lostBlood:(NSInteger)lostBlood
27 armorType:(NSString*)armorType;
28
29
30 //赋值
31 -(void)setlostBlood:(NSInteger)lostBlood;
32
33 //取值
34 -(NSString*)type;
35 -(NSInteger)blood;
36 -(NSInteger)lostBlood;
37 -(NSString*)armorType;
38 -(BOOL)isArmorDrop;
39
40 //被打失血
41 -(void)attack;
42
43 //防具被打烂
44 -(void)armorBreak;
45
46 //死亡
47 -(void)dead;
48
49
50 @end
ArmorZombie.m 文件(路障僵尸)
1 #import "ArmorZombie.h"
2
3 @implementation ArmorZombie
4 //初始化
5 -(id)initWithType:(NSString*)type
6 blood:(NSInteger)blood
7 lostBlood:(NSInteger)lostBlood
8 isDeath:(BOOL)isDeath
9 armorType:(NSString*)armorType
10 {
11 self = [super initWithType:type blood:blood restBlood:blood lostBlood:lostBlood isDeath:NO];
12
13 if(self){
14
15 _armorType = armorType;
16 _isArmorDrop = NO;
17
18 }
19 return self;
20
21 }
22
23
24 //遍历构造器
25 +(id)armorZombieType:(NSString*)type
26 blood:(NSInteger)blood
27 lostBlood:(NSInteger)lostBlood
28 armorType:(NSString*)armorType;
29 {
30 return [[ArmorZombie alloc]initWithType:type blood:blood restBlood:blood lostBlood:lostBlood isDeath:NO];
31
32
33
34 }
35
36
37 //赋值
38 -(void)setlostBlood:(NSInteger)lostBlood
39 {
40 _lostBlood = lostBlood;
41
42 }
43
44 //取值
45 -(NSString*)type
46 {
47 return _type;
48 }
49 -(NSInteger)blood
50 {
51 return _blood;
52
53 }
54 -(NSInteger)lostBlood
55 {
56 return _lostBlood;
57
58 }
59 -(NSString*)armorType
60 {
61 return _armorType;
62
63 }
64 -(BOOL)isArmorDrop
65 {
66 return _isArmorDrop;
67
68 }
69
70 //被打失血
71 -(void)attack
72 {
73 static int flag = 1;
74 if (_restBlood <= _blood/2&&1==flag) {
75 _isArmorDrop = YES;
76 [self armorBreak];
77 [self setlostBlood:3];
78 flag = 0;
79 }
80 if (_restBlood <= _lostBlood) {
81 _isDeath = YES;
82 [self dead];
83 }else {
84 NSLog(@"路障僵尸每次失血量:%ld",_lostBlood);
85 _restBlood -= _lostBlood;
86 NSLog(@"路障僵尸剩余血量:%ld",_restBlood);
87
88 }
89 }
90
91 //防具被打烂
92 -(void)armorBreak
93 {
94 NSLog(@"路障掉落.....");
95
96 }
97
98 //死亡
99 -(void)dead
100 {
101 NSLog(@".....路障僵尸已死亡!!!");
102
103
104 }
105
106
107
108
109
110
111
112 @end
IronZombie.h文件(路障僵尸)
1 #import <Foundation/Foundation.h>
2
3
4 #import "ArmorZombie.h"
5
6 @interface IronZombie : ArmorZombie
7
8 {
9
10 NSString*_weakness; //弱点
11
12
13
14
15 }
16
17 //初始化
18 -(id)initWithType:(NSString*)type
19 blood:(NSInteger)blood
20 lostBlood:(NSInteger)lostBlood
21 isDeath:(BOOL)isDeath
22 armorType:(NSString*)armorType
23 weakness:(NSString*)weakness;
24
25
26 //遍历构造器
27 +(id)ironZombieType:(NSString*)type
28 blood:(NSInteger)blood
29 lostBlood:(NSInteger)lostBlood
30 armorType:(NSString*)armorType
31 weakness:(NSString*)weakness;
32
33
34
35
36 //取值
37 -(NSString*)type;
38 -(NSInteger)blood;
39 -(NSInteger)lostBlood;
40 -(NSString*)armorType;
41 -(NSString*)weakness;
42
43 //被打失血
44 -(void)attack;
45
46 //防具被打烂
47 -(void)armorBreak;
48
49 //防具被磁铁吸走
50 -(void)absorb;
51
52 //死亡
53 -(void)dead;
54
55 @end
IronZombie.m文件(路障僵尸)
1 #import <Foundation/Foundation.h>
2
3
4 #import "ArmorZombie.h"
5
6 @interface IronZombie : ArmorZombie
7
8 {
9
10 NSString*_weakness; //弱点
11
12
13
14
15 }
16
17 //初始化
18 -(id)initWithType:(NSString*)type
19 blood:(NSInteger)blood
20 lostBlood:(NSInteger)lostBlood
21 isDeath:(BOOL)isDeath
22 armorType:(NSString*)armorType
23 weakness:(NSString*)weakness;
24
25
26 //遍历构造器
27 +(id)ironZombieType:(NSString*)type
28 blood:(NSInteger)blood
29 lostBlood:(NSInteger)lostBlood
30 armorType:(NSString*)armorType
31 weakness:(NSString*)weakness;
32
33
34
35
36 //取值
37 -(NSString*)type;
38 -(NSInteger)blood;
39 -(NSInteger)lostBlood;
40 -(NSString*)armorType;
41 -(NSString*)weakness;
42
43 //被打失血
44 -(void)attack;
45
46 //防具被打烂
47 -(void)armorBreak;
48
49 //防具被磁铁吸走
50 -(void)absorb;
51
52 //死亡
53 -(void)dead;
54
55
56
57 @end
main.m文件(调用)
1 #import <Foundation/Foundation.h>
2
3 #import "Zombie.h"
4
5 #import "ArmorZombie.h"
6
7 #import "IronZombie.h"
8
9
10 int main(int argc, const char * argv[]) {
11 @autoreleasepool {
12
13 Zombie *ptjs = [Zombie zombleWithType:@"普通僵尸" blood:50 lostBlood:3];
14 int i=0;
15 while (![ptjs isDeath])
16 {
17 if(![ptjs isDeath])
18 {
19 [ptjs attack]; //攻击普通僵尸
20 }
21 i++;
22
23 }
24
25 NSLog(@"--------------------------------");
26
27
28 ArmorZombie *lzjs = [ArmorZombie armorZombieType:@"防具僵尸" blood:80 lostBlood:2 armorType:@"路障防具"];
29 i=0;
30 while (![lzjs isDeath])
31 {
32 if(![lzjs isDeath])
33 {
34 [lzjs attack]; //攻击普通僵尸
35 }
36 i++;
37
38 }
39
40 NSLog(@"--------------------------------");
41
42
43
44 IronZombie *ttjs = [IronZombie ironZombieType:@"铁桶僵尸" blood:120 lostBlood:1 armorType:@"铁桶防具" weakness:@"铁桶被吸走"];
45 i=0;
46 while (![ttjs isDeath])
47 {
48 if(![ttjs isDeath])
49 {
50 [ttjs attack]; //攻击普通僵尸
51 }
52 i++;
53
54 }
55
56 }
57 return 0;
58 }