对象在方法中进行连续的传递 —— 士兵开枪练习
2015-10-07 17:03
253 查看
#import <Foundation/Foundation.h> //子弹声明 @class YLSoldier; //告诉编译器,这是一个类,但是类中有什么样的东西,@class 是不能告诉编译器的 @interface YLBullet : NSObject { @public int _power; } - (void) flyTo:(YLSoldier *)someone; @end //枪声明 @interface YLGun : NSObject { @public int _bulletCoune; double _shootRange; } - (void) shootTo:(YLSoldier *)someone with:(YLBullet *)bullet; @end //声明士兵类 @interface YLSoldier : NSObject { @public NSString * _name; int _life; } - (void) shoot:(YLSoldier *)someone using:(YLGun *)gun andwith:(YLBullet *)bullet; @end //士兵实现 @implementation YLSoldier - (void) shoot:(YLSoldier *)someone using:(YLGun *)gun andwith:(YLBullet *)bullet { NSLog(@"%@ 向 %@ 开了一枪",_name,someone->_name); [gun shootTo:someone with:bullet]; } @end //枪实现 @implementation YLGun - (void)shootTo:(YLSoldier *)someone with:(YLBullet *)bullet { NSLog(@"枪向 %@ 射出一颗子弹",someone->_name); [bullet flyTo:someone]; } @end //子弹实现 @implementation YLBullet - (void)flyTo:(YLSoldier *)someone { if (someone->_life > self->_power) { someone->_life = someone->_life - self->_power; }else{ someone->_life = someone->_life - someone->_life; } NSLog(@"对方被子弹打中一次,剩余生命:%i",someone->_life); if (someone->_life == 0) { NSLog(@"对方被打死"); } } @end int main(int argc, const char * argv[]) { YLSoldier *soldier1 = [YLSoldier new]; YLSoldier *soldier2 = [YLSoldier new]; soldier1 ->_life = 100; soldier1 ->_name = @"士兵一"; soldier2 ->_life = 20; soldier2 ->_name = @"士兵二"; YLGun *gun = [YLGun new]; gun -> _bulletCoune = 10; gun -> _shootRange = 30; YLBullet *bullet = [YLBullet new]; bullet -> _power = 13; [soldier1 shoot:soldier2 using:gun andwith:bullet]; [soldier1 shoot:soldier2 using:gun andwith:bullet]; return 0; }
输出:
相关文章推荐
- swift开发的那些应用
- Android中dp、sp、px的转换和区别。
- MySQL学习笔记(三):关键词
- RSA算法原理
- Spring <context:annotation-config/> 解说
- Volley(1)——基本使用
- Java对文件的随机读写以及压缩处理操作
- 大型网站之分布式会话管理
- python os相关操作
- UVA-127 "Accordian" Patience (模拟)
- LeetCode OJ:Happy Number(欢乐数)
- Python处理JSON
- Android QQ、微信聊天消息界面设计原理与实现
- 数据库 SQL
- 输出 和*组成的菱形
- 使用VS2010建立一个简单的DLL(动态链接库)实例
- 使用CXF开发简单的Web Service-HelloWorld(二)
- 这里的第一篇博文
- 使用CXF开发简单的Web Service-HelloWorld(二)
- Thinkphp 之 A方法 和 R方法 实例化控制器