- /*
- 士兵开枪 枪射击子弹
-
- 枪类:
- 名称:Gun
- 属性:型号(_gunModel)
- 行为:射击
-
- 人类
- 名称:Soldier
- 属性:姓名(_name) life level(等级)
- 行为:跑 蹲 开枪 跳
-
- 子弹类(弹夹)
- 名称:Bullet
- 属性:子弹个数(_bulletCount),型号(_bulletModel)
-
- 要求士兵在射击的时候,不但要给一把枪,还要给 一个弹夹才能射击
- 子弹不能为负数
- */
- #import <Foundation/Foundation.h>
- //子弹类的声明
- #pragma mark 子弹类的声明
- @interface Bullet:NSObject
- {
- @public
- // 子弹个数
- int _bulletCount;
- // 子弹型号
- NSString * _bulletModel;
- }
- @end
- //子弹类的实现
- #pragma mark 子弹类的实现
- @implementation Bullet
- @end
- #pragma mark -
- //枪类的声明
- #pragma mark 枪类的声明
- @interface Gun:NSObject
- {
- @public
- // 枪的型号
- NSString * _gunModel;
- }
- //枪射击
- -(void)shoot:(Bullet *)bullet;
- @end
- //枪类的实现
- #pragma mark 枪类的实现
- @implementation Gun
- //枪射击的实现
- -(void)shoot:(Bullet *)bullet{
- if (bullet->_bulletCount > 0) {
- bullet->_bulletCount -= 3;
- NSLog(@"%@在突突突的射击,射击完成后子弹剩余%d发",_gunModel,bullet->_bulletCount);
- }else{
- NSLog(@"%@没有子弹了!赶紧换子弹!",_gunModel);
- }
- }
- @end
- #pragma mark -
- //士兵类的声明
- #pragma mark 士兵类的声明
- @interface Soldier:NSObject
- {
- @public
- // 姓名
- NSString * _name;
- // 血量
- int _life;
- // 等级
- int _level;
- }
- //士兵类的行为
- //跑
- -(void)run;
- //蹲
- -(void)squat;
- //开枪
- -(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet;
- //跳
- -(void)jump;
- //换子弹
- -(void)renewBullet:(Bullet *)bullet;
- @end
- //士兵类的实现
- #pragma mark 士兵类的实现
- @implementation Soldier
- //跑的实现
- -(void)run{
- NSLog(@"%@!GO!GO!!GO!!!", _name);
- }
- //蹲的实现
- -(void)squat{
- NSLog(@"小心炮弹!蹲下,%@!",_name);
- }
- //开枪的实现
- -(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet{
- NSLog(@"FIRE!!!");
- [gun shoot:bullet];
- }
- //跳的实现
- -(void)jump{
- NSLog(@"%@,跳跳更健康...",_name);
- }
- //换子弹的实现
- -(void)renewBullet:(Bullet *)bullet{
- bullet->_bulletCount = 30;
- NSLog(@"%@更换了子弹,目前子弹剩余%d发",_name,bullet->_bulletCount);
- }
- @end
- int main (){
- @autoreleasepool{
- // 创建一个子弹类的对象
- Bullet *bulletAUG = [Bullet new];
- bulletAUG->_bulletModel = @"7mm机枪弹";
- bulletAUG->_bulletCount = 30;
- // 创建一个枪类的对象
- Gun *gunAUG = [Gun new];
- gunAUG->_gunModel = @"AUG";
- // 创建一个士兵类的对象
- Soldier *soldier = [Soldier new];
- soldier->_name = @"Tom";
- soldier->_life = 100;
- soldier->_level = 1;
- // 让士兵冲锋
- [soldier run];
- // 让士兵躲避炮弹
- [soldier squat];
- // 让士兵开火十一次
- for (int i = 0; i < 11; i++) {
- [soldier fireByGun:gunAUG andBullet:bulletAUG];
- }
- // 让士兵换子弹
- [soldier renewBullet:bulletAUG];
- // 让士兵跳一跳
- [soldier jump];
- }
- return 0;
- }
复制代码
|
|