OC:打僵尸问题(类的问题)
1、定义普通僵尸类:
实例变量:僵尸种类、僵尸总血量、僵尸每次失血量。
方法:初始化方法(设置僵尸种类,总血量)、被打击失血、死亡。
2、定义路障僵尸类:
实例变量:僵尸种类、僵尸总血量、僵尸每次失血量,道具,弱点。
方法:初始化方法(设置僵尸种类,总血量)、被打击失血、失去装备、死亡。
3、定义铁桶僵尸类:
实例变量:僵尸种类、僵尸总血量、僵尸每次失血量,道具,弱点。
方法:初始化方法(设置僵尸种类,总血量)、被打击失血、失去装备、死亡。
4、在main.m中创建普通僵尸对象,设置总血量50,每次失血量为
3,没有道具。
5、在main.m中创建路障僵尸对象,设置总血量80,每次失血量为
2,设置道具为路障。
6、在main.m中创建铁桶僵尸对象,设置总血量120,每次失血量为
1,设置道具为铁桶。
main.m文件
#import
#import "CommonZombie.h"
#import "BarrierZombie.h"
#import "BucketZombie.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
//创建普通僵尸对象
CommonZombie *xiaoGuang = [[CommonZombie alloc] initWithKind:@"普通僵尸" totalBlood:50];
//设置每次失血量
[xiaoGuang setReduceBlood:3];
//创建路障僵尸
BarrierZombie *xiaoMeng = [[BarrierZombie alloc] initWithKind:@"路障僵尸" totalBlood:80];
//设置每次失血量
[xiaoMeng setReduceBlood:2];
//设置装备
[xiaoMeng setProp:@"路障"];
//创建铁桶僵尸
BucketZombie *xiaoCui = [[BucketZombie alloc] initWithKind:@"铁桶僵尸" totalBlood:120];
//设置每次失血量
[xiaoCui setReduceBlood:1];
//设置装备
[xiaoCui setProp:@"铁桶"];
}
return 0;
}
普通僵尸CommonZombie.m文件
#import "CommonZombie.h"
@implementation CommonZombie
//customized init method
- (id)initWithKind:(NSString *)kind totalBlood:(NSInteger)totalBlood
{
_kind = kind;
_totalBlood = totalBlood;
return self;
}
//失血
- (void)loseBlood
{
NSLog(@"哎呀,哎呀,要死啦要死啦,掉了3滴血");
_totalBlood -= _reduceBlood;
}
//死亡
- (void)death
{
NSLog(@"哎呀,哎呀,死啦死啦,这次是真死啦");
}
//设置每次的失血量
- (void)setReduceBlood:(NSInteger)reduceBlood
{
_reduceBlood = reduceBlood;
}
@end
路障僵尸BarrierZombie.m
#import "BarrierZombie.h"
@implementation BarrierZombie
//customized init method
- (id)initWithKind:(NSString *)kind totalBlood:(NSInteger)totalBlood
{
_kind = kind;
_totalBlood = totalBlood;
return self;
}
//失血
- (void)loseBlood
{
NSLog(@"哎呀,哎呀,要死啦要死啦,掉了3滴血");
_totalBlood -= _reduceBlood;
}
//死亡
- (void)death
{
NSLog(@"哎呀,哎呀,死啦死啦,这次是真死啦");
}
//失去装备
- (void)loseProp
{
NSLog(@"哎呀,哎呀,要死啦,要死啦,装备没了");
}
//设置每次的失血量
- (void)setReduceBlood:(NSInteger)reduceBlood
{
_reduceBlood = reduceBlood;
}
//设置装备
- (void)setProp:(NSString *)prop
{
_prop = prop;
}
@end
铁桶僵尸BucketZombie.m
#import "BucketZombie.h"
@implementation BucketZombie
//customized init method
- (id)initWithKind:(NSString *)kind totalBlood:(NSInteger)totalBlood
{
_kind = kind;
_totalBlood = totalBlood;
return self;
}
//失血
- (void)loseBlood
{
NSLog(@"哎呀,哎呀,要死啦要死啦,掉了3滴血");
_totalBlood -= _reduceBlood;
}
//死亡
- (void)death
{
NSLog(@"哎呀,哎呀,死啦死啦,这次是真死啦");
}
//失去装备
- (void)loseProp
{
NSLog(@"哎呀,哎呀,要死啦,要死啦,装备没了");
}
//设置每次的失血量
- (void)setReduceBlood:(NSInteger)reduceBlood
{
_reduceBlood = reduceBlood;
}
//设置装备
- (void)setProp:(NSString *)prop
{
_prop = prop;
}
@end
OC:打僵尸问题(类的问题)的更多相关文章
- [BS-18] 对OC中不可变类的理解
对OC中不可变类的理解 OC中存在很多不可变的类(如NSString,NSAttributedString,NSArray,NSDictionary,NSSet等),用它们创建的对象存在于堆内存中,但 ...
- (转载)OC学习篇之---类的定义
之前已经介绍了OC中的一个程序HelloWorld,今天我们继续学习OC中类的相关知识. OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那 ...
- OC语言的面向对象—类和对象、方法
1. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 ➢ 打开电脑 ➢ ...
- OC学习篇之---类的定义
OC中类的相关知识 OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那么对类和对象的概念就不陌生了,因为Java是非常纯正的面向对象设计语言 ...
- OC第一讲:类和对象
今天终于开始进行OC的学习了 一.首先讲了NSLog NSLog是oc里面的输出语句,其用法和printf差不多,但是还是有差别的 1,NSLog是自动换行的,不用像printf那样还需要加'\n': ...
- (转载)OC学习篇之---类的延展
前一篇文章我们介绍了类的类目概念和使用,那么这篇文章我们继续来介绍一下OC中的一个特性:延展. 其实说白了,延展就是弥补C语言中的前向申明,我们知道,在C语言中,如果你想调用一个函数的话,那么在此之前 ...
- (转载)OC学习篇之---类目的概念和使用
上一篇文章介绍了OC中的@class关键字的使用,这一篇我们介绍一下,OC中的一个特有的亮点:类目 首先我们来看一下场景,如果我们现在想对一个类进行功能的扩充,我们该怎么做? 对于面向对象编程的话,首 ...
- (转载)OC学习篇之---类的三大特性:封装,继承,多态
之前的一片文章介绍了OC中类的初始化方法和点语法的使用,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今 ...
- (转载)OC学习篇之---类的初始化方法和点语法的使用
昨天介绍了OC中类的定义和使用,今天我们来继续学习类的初始化方法和点语法的使用. 一.首先来看一下类的初始化方法 在Java中我们知道一个每个类都有构造方法,这里的初始化方法就是和构造方法一个概念的, ...
随机推荐
- os和sys模块的区别及其常用方法总结
官方解释:os: This module provides a portable way of using operating system dependent functionality. 翻译:提 ...
- 学习在.NET Core中使用RabbitMQ进行消息传递之持久化(二)
前言 上一节我们简单介绍了RabbitMQ和在安装后启动所出现的问题,本节我们开始正式进入RabbitMQ的学习,对于基本概念请从官网或者其他前辈博客上查阅,我这里不介绍基础性东西,只会简单提一下,请 ...
- 多线程(四) 实现线程范围内模块之间共享数据及线程间数据独立(Map集合)
多个线程访问共享对象和数据的方式 1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做. 2.如果每个线程执行的代码 ...
- Android 5.0新控件——FloatingActionButton(悬浮按钮)
Android 5.0新控件--FloatingActionButton(悬浮按钮) FloatingActionButton是5.0以后的新控件,一个悬浮按钮,之所以叫做悬浮按钮,主要是因为自带阴影 ...
- Dynamics CRM 本地插件注册器连CRMAn unsecured or incorrectly secured fault was received from the other party
今天遇到个问题,在本地打开插件注册器连接到远程CRM服务器时报如下问题 但我在CRM服务器上连接注册器是可以打开的,所以不存在账号权限这类的问题了(当然我用的是超管的账号也不可能存在),最后查询得知是 ...
- 一张图带你看懂SpriteKit中Update Loop究竟做了神马!
1首先Scene中只有开始一点时间用来回调其中的update方法 ;] 2然后是Scene中所有动作的模拟 3接下来是上一步完成之后,给你一个机会执行一些代码 4然后是Scene模拟其中的物理世界 5 ...
- Makefile常用函数总结
在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具 有智能.make所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函 数的返回值可以当做变量来使用. 一 ...
- socket系列之客户端socket——Socket类
假设TCP套接字服务器端已经建立好并正在监听客户端的连接了,那么客户端就可以通过Socket类来发起连接.客户端发起一个连接请求后,就被动地在等待服务器的响应.这个类同样位于java.net包中,包含 ...
- Android简易实战教程--第七话《在内存中存储用户名和密码》
首先是配置文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...
- Cocos2D两个方法的重构一例
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在RPG游戏项目的GameSpace类中原来有一个方法: -( ...