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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 僞誰學ザ乖 中级黑马   /  2016-4-10 16:12  /  1161 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 僞誰學ザ乖 于 2016-4-13 23:04 编辑

//首先创建一个枚举的头文件   HMCaiQuanType.h
  1. //使用枚举定义猜拳的种类
  2. //1.剪刀,  2.石头,  3.布
  3. typedef enum{
  4.     //定义剪刀
  5.     chuQuanJianDao = 1,
  6.     //定义石头
  7.     chuQuanShiTou = 2,
  8.     //定义布
  9.     chuQuanBu = 3
  10.    
  11. }chuQuanType;


  12. //创建一个人类文件 .h 写上人类的声明   HMPerson.h

  13. #import <Foundation/Foundation.h>
  14. #import "HMCaiQuanType.h"
  15. @interface HMPerson : NSObject
  16. {
  17.     @public
  18.     //玩家的姓名.
  19.     NSString *_name;
  20.     //玩家的得分.
  21.     int _score;
  22.     //玩家的出拳.
  23.     chuQuanType _playerType;
  24.    
  25. }
  26. - (void)showType;
  27. - (NSString *)chuQuanWithNum:(int)num;
  28. @end

  29. //在创建一个 .m文件写人类的实现    HMPerson.m


  30. #import "HMPerson.h"

  31. @implementation HMPerson
  32. - (void)showType
  33. {
  34.     //提示玩家输入
  35.     //接收玩家输入的出拳.
  36.     int playerChuQuan = 0;
  37.     do{
  38.         NSLog(@"亲爱的玩家[%@],请输入你的出拳:1.剪刀,2.石头,3.布",_name);
  39.         scanf("%d",&playerChuQuan);
  40.         
  41.     }while (playerChuQuan > 3 || playerChuQuan < 0);//如果输入的是其他的数据,则重新输入.
  42.    
  43.     NSString *Type = [self chuQuanWithNum:playerChuQuan];
  44.     NSLog(@"玩家[%@]出拳是%@.",_name,Type);
  45.     //将玩家输入的结果保存到玩家的属性
  46.     _playerType = playerChuQuan;
  47.    
  48. }
  49. - (NSString *)chuQuanWithNum:(int)num
  50. {
  51.     switch (num) {
  52.         case 1:
  53.             return @"剪刀";
  54.         case 2:
  55.             return @"石头";
  56.         default:
  57.             return @"布";
  58.     }
  59.    
  60.    
  61. }
  62. @end

  63. //创建一个 .h 机器人声明头文件     HMRobot.h

  64. #import <Foundation/Foundation.h>
  65. #import "HMCaiQuanType.h"

  66. @interface HMRobot : NSObject
  67. //机器人的属性
  68. {
  69.     @public
  70.     //机器人的姓名
  71.     NSString *_name;
  72.     //机器人的得分
  73.     int _score;
  74.     //机器人的出拳
  75.     chuQuanType _robotChuQuan;
  76.    
  77. }
  78. - (void)showType;
  79. - (NSString *)chuQuanWithNum:(int)num;
  80. @end

  81. //创建一个 .m 机器人的实现    HMRobot.m

  82. #import "HMRobot.h"
  83. #import <stdlib.h>
  84. @implementation HMRobot
  85. - (void)showType
  86. {
  87.     //机器人随机出拳
  88.     int res = arc4random_uniform(3)+1;
  89.     //显示随机输出的拳头
  90.     NSString *type = [self chuQuanWithNum:res];
  91.     NSLog(@"机器人[%@]出拳是%@",_name,type);
  92.     //将机器人出拳保存在机器人的属性之中.
  93.     _robotChuQuan = res;
  94. }
  95. - (NSString *)chuQuanWithNum:(int)num
  96. {
  97.     switch (num) {
  98.         case 1:
  99.             return @"剪刀";
  100.         case 2:
  101.             return @"石头";
  102.         default:
  103.             return @"布";
  104.     }
  105.    
  106. }
  107. @end

  108. //创建一个裁判 .h 的声明文件   HMJudge.h

  109. #import <Foundation/Foundation.h>
  110. #import "HMPerson.h"
  111. #import "HMRobot.h"
  112. @interface HMJudge : NSObject
  113. //裁判的属性.
  114. {
  115.     @public
  116.     //裁判的姓名
  117.     NSString *_name;
  118. }
  119. //裁判判断玩家和机器人的输赢
  120. - (void)panDuanWithPlayer:(HMPerson *)player :(HMRobot *)robot;

  121. @end

  122. //创建一个 .m 的裁判实现文件     HMJudge.m

  123. #import "HMJudge.h"

  124. @implementation HMJudge
  125. - (void)panDuanWithPlayer:(HMPerson *)player :(HMRobot *)robot
  126. {
  127.     //先拿到玩家和机器人出的拳头
  128.     chuQuanType playerType = player->_playerType;
  129.     chuQuanType robotType = robot->_robotChuQuan;
  130.     //判断输赢,指定胜利的对象,显示结果
  131.     //剪刀 1
  132.     //石头 2
  133.     //布   3
  134.     // 1       3       -2
  135.     //2        1        1
  136.     //3        2        1
  137.     NSLog(@"我是裁判[%@],我来宣布比赛结果.",_name);
  138.     //玩家胜利
  139.     if (playerType - robotType == -2 || playerType - robotType == 1) {
  140.         NSLog(@"恭喜玩家[%@],取得胜利.",player->_name);
  141.         player->_score++;
  142.     }else if(playerType == robotType){
  143.         //平局
  144.         NSLog(@"这一局是平局.");
  145.     }
  146.     else{
  147.         //机器人胜利
  148.         NSLog(@"机器人[%@]取得胜利",robot->_name);
  149.         robot->_score++;

  150.     }
  151.     //显示得分
  152.     NSLog(@"玩家[%@]:%d--------机器人[%@]:%d",
  153.           player->_name,
  154.           player->_score,
  155.           robot->_name,
  156.           robot->_score);
  157. }

  158. @end

  159. //在 main.m 中写上实现

  160. #import <Foundation/Foundation.h>
  161. #import "HMJudge.h"
  162. int main(){
  163.     HMPerson *xiaoming = [HMPerson new];
  164.     xiaoming->_name = @"小明";
  165.     HMRobot *jiQiRen = [HMRobot new];
  166.     jiQiRen->_name = @"呵呵";
  167.     HMJudge *caiPan = [HMJudge new];
  168.     caiPan->_name = @"犀利哥";
  169.     while(1)
  170.     {
  171.         [xiaoming showType];
  172.         [jiQiRen showType];
  173.         //判断他们出的拳头
  174.         [caiPan panDuanWithPlayer:xiaoming :jiQiRen];
  175.         NSLog(@"客官,玩的怎么样,想不想再来一次?y/n:");
  176.         char a = 'a';
  177.         rewind(stdin);//清理缓存区
  178.         scanf("%c",&a);
  179.         if (a != 'y') {
  180.             NSLog(@"客官,欢迎下次再来玩哦!");
  181.             break;
  182.         }
  183.     }
  184.     return 0;
  185. }
复制代码



评分

参与人数 1黑马币 +20 收起 理由
lnyg1992 + 20 很给力!

查看全部评分

3 个回复

倒序浏览
来学习学习               
回复 使用道具 举报
写的不错,我之前用C写过一个,一会也用oc试试
回复 使用道具 举报
这东西今天自己也写了两遍,感觉有点蒙蒙的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马