植物大战僵尸

#import <Foundation/Foundation.h>

@interface CommonZomble : NSObject
{
    NSString * _zombleKind;//僵尸种类
    NSInteger _totalBloodVolume;//总血量
    NSInteger _everyTimeBloodloss;//每次被攻击的血量
    NSInteger _residualVolume;//剩余血量
    BOOL _zombleDeath;//僵尸是否死亡
}

- (instancetype)initWithZombleKind:(NSString *)zombleKind totalBloodVolume:(NSInteger)totalBloodVolume everyTimeBloodloss:(NSInteger)everyTimeBloodloss;

- (void)attack;

- (BOOL)death;

- (BOOL)takeDeath;

+ (CommonZomble *)commonZombleInitWithZombleKind:(NSString *)zombleKind totalBloodVolume:(NSInteger)totalBloodVolume everyTimeBloodloss:(NSInteger)everyTimeBloodloss;
@end
#import "CommonZomble.h"

@implementation CommonZomble
- (instancetype)initWithZombleKind:(NSString *)zombleKind totalBloodVolume:(NSInteger)totalBloodVolume everyTimeBloodloss:(NSInteger)everyTimeBloodloss
{
    self = [super init];
    if (self) {
        _totalBloodVolume = totalBloodVolume;
        _residualVolume = _totalBloodVolume;
        _zombleKind = zombleKind;
        _everyTimeBloodloss = everyTimeBloodloss;
        _zombleDeath = NO;
    }
    return self;
}

- (void)attack
{
    _residualVolume = _residualVolume - _everyTimeBloodloss;
    NSLog(@"%@,剩余血量%ld,每次失血量%ld",_zombleKind,_residualVolume,_everyTimeBloodloss);
}

- (BOOL)death
{
    BOOL result = NO;
    if (_residualVolume < _everyTimeBloodloss) {
        _zombleDeath=YES;
         NSLog(@"%@已死",_zombleKind);
        result = YES;
    }
    return result;
}

- (BOOL)takeDeath
{
    return _zombleDeath;
}

+ (CommonZomble *)commonZombleInitWithZombleKind:(NSString *)zombleKind totalBloodVolume:(NSInteger)totalBloodVolume everyTimeBloodloss:(NSInteger)everyTimeBloodloss
{
    return [[CommonZomble alloc]initWithZombleKind:zombleKind totalBloodVolume:totalBloodVolume everyTimeBloodloss:everyTimeBloodloss];
}
@end




<pre name="code" class="objc">#import "CommonZomble.h"

@interface BarricadeZombie : CommonZomble
{
    NSString * _prop;//道具
    NSString * _weakness;//弱点
}

- (instancetype)initWithZombleKind:(NSString *)zombleKind totalBloodVolume:(NSInteger)totalBloodVolume everyTimeBloodloss:(NSInteger)everyTimeBloodloss prop:(NSString *)prop weakness:(NSString *)weakness;

- (void)attack;

- (void)lossProp;

- (BarricadeZombie *)barricadeZombieInitWithZombleKind:(NSString *)zombleKind totalBloodVolume:(NSInteger)totalBloodVolume everyTimeBloodloss:(NSInteger)everyTimeBloodloss prop:(NSString *)prop weakness:(NSString *)weakness;

@end

#import "BarricadeZombie.h"

@implementation BarricadeZombie
- (instancetype)initWithZombleKind:(NSString *)zombleKind totalBloodVolume:(NSInteger)totalBloodVolume everyTimeBloodloss:(NSInteger)everyTimeBloodloss prop:(NSString *)prop weakness:(NSString *)weakness
{
    self = [super initWithZombleKind:zombleKind totalBloodVolume:totalBloodVolume everyTimeBloodloss:everyTimeBloodloss];
    if (self) {
        _prop = prop;
        _weakness = weakness;
    }
    return self;
}

- (void)attack
{
    _residualVolume = _residualVolume - _everyTimeBloodloss;
      NSLog(@"%@,剩余血量%ld,每次失血量%ld",_zombleKind,_residualVolume,_everyTimeBloodloss);
    if (_residualVolume<= _totalBloodVolume/2 && _residualVolume > _totalBloodVolume/2 - _everyTimeBloodloss) {
        NSLog(@"%@丢失",_prop);
        [self lossProp];
    }
}

- (void)lossProp
{
    _everyTimeBloodloss = 3;
}

- (BarricadeZombie *)barricadeZombieInitWithZombleKind:(NSString *)zombleKind totalBloodVolume:(NSInteger)totalBloodVolume everyTimeBloodloss:(NSInteger)everyTimeBloodloss prop:(NSString *)prop weakness:(NSString *)weakness
{
    return [[BarricadeZombie alloc]
            barricadeZombieInitWithZombleKind:zombleKind totalBloodVolume:totalBloodVolume everyTimeBloodloss:everyTimeBloodloss prop:prop weakness:weakness];
}

@end
#import "BarricadeZombie.h"

@interface DrumZomble : BarricadeZombie
- (void)attack;
@end
#import "DrumZomble.h"

@implementation DrumZomble

- (void)attack
{
    _residualVolume = _residualVolume - _everyTimeBloodloss;
     NSLog(@"%@,剩余血量%ld,每次失血量%ld",_zombleKind,_residualVolume,_everyTimeBloodloss);
    if (_residualVolume <= _totalBloodVolume/3 && _residualVolume > _totalBloodVolume/3 - _everyTimeBloodloss) {
        [self lossProp];
        NSLog(@"%@掉了",_prop);
    }
}
@end


<pre name="code" class="objc">#import <Foundation/Foundation.h>
#import "CommonZomble.h"
#import "BarricadeZombie.h"
#import "DrumZomble.h"
int main(int argc, const char * argv[])
{

    @autoreleasepool {

        CommonZomble * commonZomble = [[CommonZomble alloc]initWithZombleKind:@"普通僵尸" totalBloodVolume:50 everyTimeBloodloss:3];
        BarricadeZombie * barricadeZombie = [[BarricadeZombie alloc]initWithZombleKind:@"路障僵尸" totalBloodVolume:80 everyTimeBloodloss:2 prop:@"路障" weakness:@"怕我"];
        DrumZomble * drumZomble = [[DrumZomble alloc]initWithZombleKind:@"铁桶僵尸" totalBloodVolume:120 everyTimeBloodloss:1 prop:@"铁桶" weakness:@"磁铁"];

        NSInteger count = 0;
        while (1) {
            count++;
             NSLog(@"count = %ld",count);
            if (![commonZomble death]) {
                [commonZomble attack];
            }

            if (![barricadeZombie death]) {
                [barricadeZombie attack];
            }

            if (![drumZomble death]) {
                [drumZomble attack];
            }
            if ([commonZomble takeDeath] && [barricadeZombie takeDeath] && [drumZomble takeDeath]) {
                break;
            }
        }
        NSLog(@"count = %ld",count);

    }
    return 0;
}
				
时间: 2024-11-09 08:49:43

植物大战僵尸的相关文章

NOI2009植物大战僵尸

这题应该分两步来做: 1.拓扑排序,去掉无敌点 2.求最大闭合子图 需要注意几点: 1.拓扑排序时,如果(i,j)可以攻击到(x,y),那么增加(x,y)的入度,而不是(i,j)的入度 因为入度代表着要攻击它需要事先攻击几个点 2.求最大闭合子图时,用所有的正权点-最大流 3.求最大闭合子图时,如果(i,j)可以攻击到(x,y),那么连一条边(x,y)到(i,j),容量为正无穷 因为在最大闭合子图中边(x,y)到(i,j)意味着选(x,y)就必须要选(i,j),这与实际含义相符 4.s到正权点,

98植物大战僵尸OL_僵尸迷阵

最近在玩植物大战僵尸Ol打到僵尸迷阵,打了个700分倒数第一,擦.....俗话说的好,失败是成功的妈妈,于是花了点时间写了一个小玩意,我相信下次我一定能拿第一 代码非常简单: using UnityEngine; using System.Collections; using UnityEngine.UI; public class MyScript : MonoBehaviour { // Use this for initialization void Start () { } // Upd

植物大战僵尸2天空之城安卓版发布

全体注意!一大波飞行僵尸正在接近中——中国独创版<植物大战僵尸2天空之城>安卓版终于发布了.超乎想象的空战体验.全新僵尸植物军团.独特闪电环境效果和史无前例的战舰成长系统,让你和戴夫共同肩负守卫天空之城的荣耀重任.赶紧下载游戏,加入云端激战吧. <植物大战僵尸2天空之城>安桌版上线 [中国区独有版本 打造铿锵空战体验] <植物大战僵尸2>即将迎来两周年生日,为感谢中国玩家一直以来的热情支持,EA/PopCap携手拓维游戏打造了这款中国区独有新版本<植物大战僵尸2天

原生JS实现的h5小游戏-植物大战僵尸

代码地址如下:http://www.demodashi.com/demo/12755.html 项目介绍 本项目是利用原生js实现的h5小游戏-植物大战僵尸,主要结合了一下自己对于h5小游戏的理解,结合面向对象的编程思想进行开发,在实现时使用了部分es6语法,对于es6语法不太熟悉的小伙伴可以先查阅相关资料了解一下. 如有需要,可根据自己的需求修改源码样式.源码配置属性代码,实现个性化定制. 以下为文件目录结构示意图,核心代码在js文件夹下的四个common.js.main.js.game.js

java小项目之:植物大战僵尸,这个僵尸有点冷!内附素材源码

Java小项目之:植物大战僵尸! <植物大战僵尸>是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓. 在我身边,上到40岁的大叔阿姨,下到7.8岁的小弟弟妹妹都听说和玩过这游戏.在以前智能手机还没流行的时候,各种黑网吧,游戏厅便有着玩这游戏的人.当3G技术现世,半智能手机和智能手机出现后,这款游戏更是如日中天,与愤怒的小鸟一起霸占了手机游戏市场(但当时估计都是盗版的). 相信有些使用b站的小伙伴,应该看过很多这样的视频: 这种视

[转]植物大战僵尸95版技术分析

植物大战僵尸95版不是原版,是由植物大战僵尸吧吧友冥谷川恋制作. 本链接只提供95版的完整压缩包和0-95版的所有exe主程序 压缩包,只玩95版的直接下载95安装包解压即可玩,如果需要玩0-94版,再下载本链接提供的主程序exe压缩包,把其它版本的主程序解压到游戏目录直接运行即可.感谢植吧“崇明人家123”制作提供0-v95僵尸得到了极大强化“我会说我这个版本的冒险一周目都过不去吗?”这个出怪模式非常刺激,需要你强大的pvz功底和运气铁桶铁门.显示隐藏关卡.允许后台运行.刺激的出怪模式.无限制

【NOI2009】植物大战僵尸

P1589 - [NOI2009]植物大战僵尸 Description Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而 Zombies进攻.该款游戏包含多种不同的挑战系列,比如Protect Your Brain.Bowling等等.其中最为经典的,莫过于玩家通过控制Plants来防守Zombies的进攻,或者相反地由玩家通过控制Zombies 对Plants发起进攻. 现在,我们将要考

洛谷 P2805 BZOJ 1565 植物大战僵尸

题目描述 Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻.该款游戏包含多种不同的挑战系列,比如Protect Your Brain.Bowling等等.其中最为经典的,莫过于玩家通过控制Plants来防守Zombies的进攻,或者相反地由玩家通过控制Zombies对Plants发起进攻. 现在,我们将要考虑的问题是游戏中Zombies对Plants的进攻,请注意,本题中

COGS410. [NOI2009] 植物大战僵尸

410. [NOI2009] 植物大战僵尸 ★★★   输入文件:pvz.in   输出文件:pvz.out   简单对比时间限制:2 s   内存限制:512 MB [问题描述] Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻.该款游戏包含多种不同的挑战系列,比如Protect Your Brain.Bowling等等.其中最为经典的,莫过于玩家通过控制Plants来

图论(网络流):COGS 410. [NOI2009] 植物大战僵尸

410. [NOI2009] 植物大战僵尸 ★★★   输入文件:pvz.in   输出文件:pvz.out   简单对比时间限制:2 s   内存限制:512 MB [问题描述] Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻.该款游戏包含多种不同的挑战系列,比如Protect Your Brain.Bowling等等.其中最为经典的,莫过于玩家通过控制Plants来