黑马程序员技术交流社区

标题: OC实例之士兵射击 [打印本页]

作者: why19910522    时间: 2015-8-15 21:44
标题: OC实例之士兵射击
  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. }
复制代码



作者: 愿得一人心1111    时间: 2015-8-15 22:22
好长的代码
作者: 墨琰    时间: 2015-8-15 22:37
真棒  加油
作者: why19910522    时间: 2015-8-16 10:38
愿得一人心1111 发表于 2015-8-15 22:22
好长的代码

老师说这不算什么,我们以后会遇到好几千好几万行的代码......o(╯□╰)o
作者: 墨琰    时间: 2015-8-16 22:47
有没有人遛狗的那个代码  
作者: 魏武    时间: 2015-8-16 22:49
hello  我来了
作者: 15095185209    时间: 2015-8-16 23:01
oc还没学到这里,先过来看下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2