A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© why19910522 中级黑马   /  2015-8-15 21:44  /  894 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. 士兵开枪 枪射击子弹

  3. 枪类:
  4. 名称:Gun
  5. 属性:型号(_gunModel)
  6. 行为:射击

  7. 人类
  8. 名称:Soldier
  9. 属性:姓名(_name)    life    level(等级)
  10. 行为:跑 蹲 开枪  跳

  11. 子弹类(弹夹)
  12. 名称:Bullet
  13. 属性:子弹个数(_bulletCount),型号(_bulletModel)

  14. 要求士兵在射击的时候,不但要给一把枪,还要给 一个弹夹才能射击
  15. 子弹不能为负数
  16. */

  17. #import <Foundation/Foundation.h>

  18. //子弹类的声明
  19. #pragma mark 子弹类的声明
  20. @interface Bullet:NSObject
  21. {
  22.     @public
  23. //    子弹个数
  24.     int _bulletCount;
  25. //    子弹型号
  26.     NSString * _bulletModel;
  27. }
  28. @end
  29. //子弹类的实现
  30. #pragma mark 子弹类的实现
  31. @implementation Bullet

  32. @end
  33. #pragma mark -
  34. //枪类的声明
  35. #pragma mark 枪类的声明
  36. @interface Gun:NSObject
  37. {
  38.     @public
  39. //    枪的型号
  40.     NSString * _gunModel;
  41. }
  42. //枪射击
  43. -(void)shoot:(Bullet *)bullet;
  44. @end
  45. //枪类的实现
  46. #pragma mark 枪类的实现
  47. @implementation Gun
  48. //枪射击的实现
  49. -(void)shoot:(Bullet *)bullet{
  50.     if (bullet->_bulletCount > 0) {
  51.         bullet->_bulletCount -= 3;
  52.         NSLog(@"%@在突突突的射击,射击完成后子弹剩余%d发",_gunModel,bullet->_bulletCount);
  53.     }else{
  54.         NSLog(@"%@没有子弹了!赶紧换子弹!",_gunModel);
  55.     }
  56. }
  57. @end
  58. #pragma mark -
  59. //士兵类的声明
  60. #pragma mark 士兵类的声明
  61. @interface Soldier:NSObject
  62. {
  63.     @public
  64. //    姓名
  65.     NSString * _name;
  66. //    血量
  67.     int _life;
  68. //    等级
  69.     int _level;
  70. }
  71. //士兵类的行为
  72. //跑
  73. -(void)run;
  74. //蹲
  75. -(void)squat;
  76. //开枪
  77. -(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet;
  78. //跳
  79. -(void)jump;
  80. //换子弹
  81. -(void)renewBullet:(Bullet *)bullet;
  82. @end
  83. //士兵类的实现
  84. #pragma mark 士兵类的实现
  85. @implementation Soldier
  86. //跑的实现
  87. -(void)run{
  88.     NSLog(@"%@!GO!GO!!GO!!!", _name);
  89. }
  90. //蹲的实现
  91. -(void)squat{
  92.     NSLog(@"小心炮弹!蹲下,%@!",_name);
  93. }
  94. //开枪的实现
  95. -(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet{
  96.     NSLog(@"FIRE!!!");
  97.     [gun shoot:bullet];
  98. }
  99. //跳的实现
  100. -(void)jump{
  101.     NSLog(@"%@,跳跳更健康...",_name);
  102. }
  103. //换子弹的实现
  104. -(void)renewBullet:(Bullet *)bullet{
  105.     bullet->_bulletCount = 30;
  106.     NSLog(@"%@更换了子弹,目前子弹剩余%d发",_name,bullet->_bulletCount);
  107. }
  108. @end

  109. int main (){
  110.     @autoreleasepool{
  111. //        创建一个子弹类的对象
  112.         Bullet *bulletAUG = [Bullet new];
  113.         bulletAUG->_bulletModel = @"7mm机枪弹";
  114.         bulletAUG->_bulletCount = 30;
  115. //        创建一个枪类的对象
  116.         Gun *gunAUG = [Gun new];
  117.         gunAUG->_gunModel = @"AUG";
  118. //        创建一个士兵类的对象
  119.         Soldier *soldier = [Soldier new];
  120.         soldier->_name = @"Tom";
  121.         soldier->_life = 100;
  122.         soldier->_level = 1;
  123. //        让士兵冲锋
  124.         [soldier run];
  125. //        让士兵躲避炮弹
  126.         [soldier squat];
  127. //        让士兵开火十一次
  128.         for (int i = 0; i < 11; i++) {
  129.             [soldier fireByGun:gunAUG andBullet:bulletAUG];
  130.         }
  131. //        让士兵换子弹
  132.         [soldier renewBullet:bulletAUG];
  133. //        让士兵跳一跳
  134.         [soldier jump];
  135.     }
  136.     return 0;
  137. }
复制代码


6 个回复

倒序浏览
好长的代码
回复 使用道具 举报
真棒  加油
回复 使用道具 举报

老师说这不算什么,我们以后会遇到好几千好几万行的代码......o(╯□╰)o
回复 使用道具 举报
有没有人遛狗的那个代码  
回复 使用道具 举报
hello  我来了
回复 使用道具 举报
oc还没学到这里,先过来看下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马