#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;
}
输出: