Objective-c打僵尸小游戏练习源码

来源:互联网 发布:求数组最大值 编辑:程序博客网 时间:2024/06/01 07:13

打僵尸代码

练习

假设有两只僵尸,一只是普通僵尸,一只是道具僵尸,特征是:

  • 普通僵尸:姓名、血量、失血量、 被攻击、死亡
  • 道具僵尸:姓名、血量、失血量、道具、被攻击、丢失道具、死亡

代码如下

main.m 主文件

#import <Foundation/Foundation.h>#import "Zombie.h"#import "ToolZombie.h"int main(int argc, const char * argv[]) {    @autoreleasepool{        Zombie *z1 = [[Zombie alloc] initWithName:@"普通僵尸" blood:50 loseBlood:3]; // 赋值        ToolZombie *tz1 = [[ToolZombie alloc]                 initWithName:@"道具僵尸" blood:50 loseBlood:3]; // 赋值        while((z1.dieFlag == NO || (tz1.dieFlag == NO)){ // 在两种僵尸均未死亡的情况下执行while        sleep(1); // 每隔1秒执行        [z1 beingAttacked]; // 普通僵尸被攻击        [tz1 beingAttacked]; // 道具僵尸被攻击        }    }    retur 0;}

Zmbie.h父类文件

#impor <Foundation/Foundation.h>@interface Zombie : NSObject{    NSString *_name; // 名字    NSInteger _blood; // 血量    NSInteger _loseBlood; // 失血量    BOOL _dieFlag; // 标记    }_ (instancetype)initWithName:(NSString *)name blood:(NSInteger)blood loseBlood:(NSInteger)loseBlood; // 初始化方法- (void)beingAttacked; // 被攻击- (BOOL)die; // 死亡- (BOOL)dieFlag; // getter方法@end

Zombie.m文件

#import "Zombie.h"@implementation Zombie-(instancetype)initWithName:(NSString *)name blood:(NSInteger)blood loseBlood:(NSInteger)loseBlood{ // 初始化方法    if (self = [super init]){        _name = name;        _blood = blood;        _loseBlood= loseBlood;        _dieFlag = NO;    }    return self;}-(void)beingAttacked{ // 被攻击实现    if(_dieFlag == NO){ // 如果死亡就不再执行,未死亡就执行if语句        if ([self die] == YES){ // 如果死亡则执行if语句                    NSLog(@"%@已经死亡",_name); // 死亡        }else{            _blood -= _loseBlood; // 血量 = 血量 - 失血            if (_blood < 0){ // 如果血量<0,执行if语句                _blood = 0;            }            NSLog(@"%@剩余血量:%ld",_name,_blood);        }    }}- (BOOL)die{ // 死亡    if (_blood > 0){        return _dieFlag; // 血量>0时,返回NO,未死亡    }else{        _dieFlag = YES;        return _dieFlag; // 血量不大于0时,返回YES,死亡    }}- (BOOL)dieFlag{ // getter方法:得到_dieFlag值    return _dieFlag;}

ToolZombie.h子文件

#import "Zombie.h"@interface ToolZombie : Zombie{    BOOl _toolFlag;}- (void)loseTool; // 丢失道具@end

ToolZombie.m文件

#import "ToolZombie.h"@implementation ToolZombie- (instancetype)initWithName:(NSString *)name blood:(NSInteger)blood loseBlood:(NSInteger)loseBlood{    if (self = [super initWithName blood:blood loseBlood:loseBlood]){ // 重新初始化        _toolFlag = YES;    }    return self;}- (void)loseTool{ // 丢失道具的失血    NSLog(@"%@丢失道具",_name);    _toolFlag = NO;}- (void)beingAttacked{ // 重新实现被攻击    if (_dieFlag == NO){ // 未死亡执行if        if([self die] == YES){ // 死亡执行if        NSLog(@"%@已经死亡",_name);        }else{            if (_toolFlag == YES){ // 有道具执行if                _blood -= (_loseBlood - 1); // 防御加1            }else{                _blood -= _loseBlood; // 无道具            }            if ((_blood <= 30) && _toolFlag == YES){ // 血量小于等于30并且有道具情况下执行,使其丢失道具                [self loseTool]            }            if (_blood < 0){ // 如果血量<0,执行if语句                _blood = 0            }            NSLog(@"%@剩余血量:%ld",_name,_blood);        }    }}@end

运行结果:

2016-01-30 10:38:33.551 Zombie[907:69547] 普通僵尸剩余血量:472016-01-30 10:38:33.552 Zombie[907:69547] 道具僵尸剩余血量:482016-01-30 10:38:34.556 Zombie[907:69547] 普通僵尸剩余血量:442016-01-30 10:38:34.556 Zombie[907:69547] 道具僵尸剩余血量:462016-01-30 10:38:35.559 Zombie[907:69547] 普通僵尸剩余血量:412016-01-30 10:38:35.559 Zombie[907:69547] 道具僵尸剩余血量:442016-01-30 10:38:36.564 Zombie[907:69547] 普通僵尸剩余血量:382016-01-30 10:38:36.564 Zombie[907:69547] 道具僵尸剩余血量:422016-01-30 10:38:37.566 Zombie[907:69547] 普通僵尸剩余血量:352016-01-30 10:38:37.566 Zombie[907:69547] 道具僵尸剩余血量:402016-01-30 10:38:38.568 Zombie[907:69547] 普通僵尸剩余血量:322016-01-30 10:38:38.568 Zombie[907:69547] 道具僵尸剩余血量:382016-01-30 10:38:39.569 Zombie[907:69547] 普通僵尸剩余血量:292016-01-30 10:38:39.569 Zombie[907:69547] 道具僵尸剩余血量:362016-01-30 10:38:40.573 Zombie[907:69547] 普通僵尸剩余血量:262016-01-30 10:38:40.573 Zombie[907:69547] 道具僵尸剩余血量:342016-01-30 10:38:41.575 Zombie[907:69547] 普通僵尸剩余血量:232016-01-30 10:38:41.576 Zombie[907:69547] 道具僵尸剩余血量:322016-01-30 10:38:42.577 Zombie[907:69547] 普通僵尸剩余血量:202016-01-30 10:38:42.577 Zombie[907:69547] 道具僵尸丢失道具2016-01-30 10:38:42.577 Zombie[907:69547] 道具僵尸剩余血量:302016-01-30 10:38:43.580 Zombie[907:69547] 普通僵尸剩余血量:172016-01-30 10:38:43.580 Zombie[907:69547] 道具僵尸剩余血量:272016-01-30 10:38:44.581 Zombie[907:69547] 普通僵尸剩余血量:142016-01-30 10:38:44.581 Zombie[907:69547] 道具僵尸剩余血量:242016-01-30 10:38:45.585 Zombie[907:69547] 普通僵尸剩余血量:112016-01-30 10:38:45.586 Zombie[907:69547] 道具僵尸剩余血量:212016-01-30 10:38:46.587 Zombie[907:69547] 普通僵尸剩余血量:82016-01-30 10:38:46.587 Zombie[907:69547] 道具僵尸剩余血量:182016-01-30 10:38:47.588 Zombie[907:69547] 普通僵尸剩余血量:52016-01-30 10:38:47.588 Zombie[907:69547] 道具僵尸剩余血量:152016-01-30 10:38:48.593 Zombie[907:69547] 普通僵尸剩余血量:22016-01-30 10:38:48.593 Zombie[907:69547] 道具僵尸剩余血量:122016-01-30 10:38:49.595 Zombie[907:69547] 普通僵尸剩余血量:02016-01-30 10:38:49.595 Zombie[907:69547] 道具僵尸剩余血量:92016-01-30 10:38:50.600 Zombie[907:69547] 普通僵尸已经死亡2016-01-30 10:38:50.600 Zombie[907:69547] 道具僵尸剩余血量:62016-01-30 10:38:51.602 Zombie[907:69547] 道具僵尸剩余血量:32016-01-30 10:38:52.608 Zombie[907:69547] 道具僵尸剩余血量:02016-01-30 10:38:53.608 Zombie[907:69547] 道具僵尸已经死亡Program ended with exit code: 0
0 0
原创粉丝点击