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中我们知道一个每个类都有构造方法,这里的初始化方法就是和构造方法一个概念的, ...
随机推荐
- 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- CustomYieldInstruction 自定义中断指令
ActionScript3脚本引擎为了方便热更新逻辑开发,提供的从脚本继承Unity类库功能在一些情况下可以提供开发的便利. 这次来建立一个示例,演示一下如何在脚本中自定义协程中断指令 Unity中的 ...
- JavaScript基础知识从浅入深理解(一)
JavaScript的简介 javascript是一门动态弱类型的解释型编程语言,增强页面动态效果,实现页面与用户之间的实时动态的交互. javascript是由三部分组成:ECMAScript.DO ...
- python笔记四(dict/set/不可变对象)
一.dict 字典是包含key_value存储方式.在放进去的时候,必须根据key值Hash出value的存放位置,这样,取的时候才能根据key直接拿到value. dict的操作: d = {'Mi ...
- 用js来实现那些数据结构13(树01-二叉搜索树的实现)
前一篇文章我们学会了第一个非顺序数据结构hashMap,那么这一篇我们来学学树,包括树的概念和一些相关的术语以及二叉搜索树的实现.唉?为什么不是树的实现,不是二叉树的实现.偏偏是二叉搜索树的实现?嗯, ...
- ActionContext.getContext()用法
为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest.HttpSession和ServletContext进行了封装,构造了 ...
- Bootstrap3 排版-列表
无序列表 排列顺序无关紧要的一列元素. <ul> <li>...</li> </ul> 有序列表 顺序至关重要的一组元素. <ol> < ...
- Excel init
Sub Test() Dim r As Range Dim a As Integer a = For Each r In Range("b1:b6") If r.Font.Bold ...
- 自定义一个View作为弹出对话框
public void dialog(){ //获得布局对象 View view = LayoutInflater.from(getActivity()).inflate(R.layout.dialo ...
- Eclipse中配置javap命令
Run→External Tools→External Tools Configurations-进入如下图二所示的Program配置界面.也可以通过如下图一所示的工具栏按钮进入Program配置界面 ...
- 【安卓开发】Facebook工程师是如何改进他们Android客户端的
原文出处: Facebook 译文出处:penkzhou 欢迎分享原创到伯乐头条 作为世界上最大的社交网络,Facebook的Android客户端面临着各种各样的使用环境(地理环境.Andro ...