您的位置:首页 > 其它

对象在方法中进行连续的传递 —— 士兵开枪练习

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;
}


输出:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: