zoukankan      html  css  js  c++  java
  • 植物大战僵尸

    1.(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];//创建一个普通僵尸对象z1
           
            ToolZombie *tz1 = [[ToolZombie alloc] initWithName:@"道具僵尸" blood:50 loseBlood:3];//创建一个有道具僵尸对象tz1
           
            while ((z1.dieFlag == NO) || (tz1.dieFlag == NO)) {//如果普通僵尸没死或者道具僵尸没死,则执行循环条件
                [z1 beingAttacked];
                [tz1 beingAttacked];
            }
           
        }
        return 0;
    }
    2.(Zombie.h)
    #import <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;

    // getter
    - (BOOL)dieFlag;

    @end
    3.(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) {//死亡标志,判断是否死亡,NO没有死亡,执行if条件语句
            if ([self die] == YES) {//self使用死亡方法,返回值_dieFlag如果为YES
                //死亡
                NSLog(@"已经死亡");//输出已经死亡
            }else{//否则,开始掉血
                _blood -= _loseBlood;//剩余血量等于总血量-每次掉血量
                if (_blood < 0) {//如果总血量小于0
                    _blood = 0;//强制总血量为0
                }
                NSLog(@"%@剩余血量:%ld", _name ,_blood);//输出当前僵尸的剩余血量
            }
        }
       
    }

    // 死亡
    - (BOOL)die{//布尔值判断死亡方法

        if (_blood > 0) {//如果血量大于0
            return _dieFlag;//返回死亡标志
        }else{//如果血量小于等于0
            _dieFlag = YES;//死亡标志为YES
            return _dieFlag;//返回死亡标志
        }
    }

    // getter
    - (BOOL)dieFlag{//死亡标志获取器

        return _dieFlag;//返回死亡标志
    }

    @end
    4.(ToolZombie.h)
    #import "Zombie.h"

    @interface ToolZombie : Zombie
    {
        BOOL _toolFlat;
    }

    // 丢失道具
    - (void)loseTool;

    @end
    5.(ToolZombie.m)
    #import "ToolZombie.h"

    @implementation ToolZombie

    // 初始化方法
    - (instancetype)initWithName:(NSString *)name blood:(NSInteger)blood loseBlood:(NSInteger)loseBlood{

        if (self = [super initWithName:name blood:blood loseBlood:loseBlood]) {//初始化父类的时候要注意
        
            _toolFlat = YES; //初始化子类的实例变量
        }
       
        return self;//返回
    }

    // 丢失道具
    - (void)loseTool{//丢失道具方法
       
            NSLog(@"%@丢失道具", _name);//道具丢失,输出丢失道具
            _toolFlat = NO;//道具标志为NO
    }

    // 重写被攻击方法
    - (void)beingAttacked{//被攻击方法
       
        if (_dieFlag == NO) {//判断死亡标志,NO未死亡,执行if条件
            if ([self die] == YES) {//判断self执行的死亡方法,返回值为YES,已经死亡
                NSLog(@"%@已经死亡",_name);//输出当前僵尸死亡
            }else{//没有死亡
               
                if (_toolFlat == YES) {//判断有无道具,YES是有道具
                    _blood -= (_loseBlood - 1);//少掉1滴血
                }else{//没有道具
                    _blood -= _loseBlood;//掉血量正常
                }
               
                if ((_blood <= 30) && (_toolFlat == YES)) {//判断如果血量少于等于30,并且有道具
                   
                    [self loseTool];// 丢失装备
                }
               
                if (_blood < 0) {//如果判断总血量小于0
                    _blood = 0;//强制总血量为0
                }
                NSLog(@"%@剩余血量:%ld",_name,_blood);//输出当前僵尸的血量        }    }}
    @end
  • 相关阅读:
    2.Android之按钮Button和编辑框EditText学习
    《DSP using MATLAB》Problem 3.8
    《DSP using MATLAB》Problem 3.7
    《DSP using MATLAB》Problem 3.6
    《DSP using MATLAB》Problem 3.5
    《DSP using MATLAB》Problem 3.4
    《DSP using MATLAB》Problem 3.3
    《DSP using MATLAB》Problem 3.2
    《DSP using MATLAB》Problem 3.1
    《DSP using MATLAB》Problem 2.20
  • 原文地址:https://www.cnblogs.com/gnhxsk/p/5170721.html
Copyright © 2011-2022 走看看