打殭屍。需求:
1、定義普通殭屍類:
實例變量:殭屍種類、殭屍總血量、殭屍每次失血量。
方法:初始化方法(設置殭屍種類,總血量)、被打擊失血、死亡。
2、定義路障殭屍類:
實例變量:殭屍種類、殭屍總血量、殭屍每次失血量,道具,弱點。
方法:初始化方法(設置殭屍種類,總血量)、被打擊失血、失去裝備、死亡。
3、定義鐵桶殭屍類:
實例變量:殭屍種類、殭屍總血量、殭屍每次失血量,道具,弱點。
方法:初始化方法(設置殭屍種類,總血量)、被打擊失血、失去裝備、死亡。
4、在main.m中創建普通殭屍對象,設置總血量50,每次失血量爲 3,沒有道具。
5、在main.m中創建路障殭屍對象,設置總血量80,每次失血量爲 2,設置道具爲路障。
6、在main.m中創建鐵桶殭屍對象,設置總血量120,每次失血量爲 1,設置道具爲鐵桶。
.h文件.
#import <Foundation/Foundation.h>
@interface Zombie : 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 <Foundation/Foundation.h>
@interface RoadblockZombie : NSObject//定義路障殭屍類
{
NSString *_type;//類型
NSString *_prop;//道具
NSString *_weakness;//弱點
NSInteger _blood;//血量
NSInteger _loss;//掉血量
}
- (id)initWithType:(NSString *)type prop:(NSString *)prop blood:(NSInteger )blood loss:(NSInteger )loss;//自定義初始化方法
- (void)die;//殭屍死亡方法
- (NSInteger)lossBlood:(NSInteger)blood loss:(NSInteger)loss;//殭屍掉血方法
@end
@interface BucketZombie : NSObject//定義鐵桶殭屍類
{
NSString *_type;
NSString *_prop;//道具
NSString *_weakness;//弱點
NSInteger _blood;
NSInteger _loss;
}
- (id)initWithType:(NSString *)type prop:(NSString *)prop blood:(NSInteger )blood loss:(NSInteger )loss;//自定義初始化方法
- (void)die;//殭屍死亡方法
- (NSInteger)lossBlood:(NSInteger)blood loss:(NSInteger)loss;//殭屍掉血方法
@end
.m文件
#import "Zombie.h"
@implementation Zombie
- (id)initWithType:(NSString *)type blood:(NSInteger )blood loss:(NSInteger )loss{
_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
#import "RoadblockZombie.h"
@implementation RoadblockZombie
- (id)initWithType:(NSString *)type prop:(NSString *)road blood:(NSInteger )blood loss:(NSInteger )loss{
_type = type;
_prop = road;
_blood = blood;
_loss = loss;
return self;
}
- (void)die{
NSLog(@"你們等着!");
}
- (NSInteger)lossBlood:(NSInteger)blood loss:(NSInteger)loss{
_blood = blood - _loss;
_loss += loss;
if (_blood <= 50) {//當血量低於50時,認爲失去道具,變爲普通殭屍
_loss += 1;
if (_blood <= 0) {
NSLog(@"我不行了");
}else{
NSLog(@"我快不行了");
NSLog(@"還有血量%ld",_blood);
}
}else{
NSLog(@"還有血量%ld",_blood);
}
return _blood;
}
@end
#import "BucketZombie.h"
@implementation BucketZombie
- (id)initWithType:(NSString *)type prop:(NSString *)bucket blood:(NSInteger )blood loss:(NSInteger )loss{
_type = type;
_prop = bucket;
_blood = blood;
_loss = loss;
return self;
}
- (void)die{
NSLog(@"你們等着!");
}
- (NSInteger)lossBlood:(NSInteger)blood loss:(NSInteger)loss{
_blood = blood - _loss;
_loss += loss;
if (_blood <= 50) {//當血量低於50時,認爲失去道具,變爲普通殭屍
_loss += 2;
if (_blood <= 0) {//防止輸出血量爲負數
NSLog(@"我不行了");
}else{
NSLog(@"我快不行了");
NSLog(@"還有血量%ld",_blood);
}
}else{
NSLog(@"還有血量%ld",_blood);
}
return _blood;
}
@end
main函數
Zombie *general = [[Zombie alloc] initWithType:@"general" blood:50 loss:3];
NSInteger leftblood1 = 50;//剩餘血量
while (leftblood1 > 0) {
leftblood1 = [general lossBlood:50 loss:3];
}
if (leftblood1 < 0) {
[general die];
}
RoadblockZombie *road = [[RoadblockZombie alloc] initWithType:@"road" prop:@"Roadlock" blood:80 loss:2];
NSInteger leftblood2 = 80;
while (leftblood2 > 0) {
leftblood2 = [road lossBlood:80 loss:2];
}
if (leftblood2 <= 0) {
[road die];
}
BucketZombie *bucket = [[BucketZombie alloc] initWithType:@"BucketZombie" prop:@"Bucket" blood:120 loss:1];
NSInteger leftblood3 = 120;
while (leftblood3 > 0) {
leftblood3 = [bucket lossBlood:120 loss:1];
}
if (leftblood3 <= 0) {
[bucket die];
}