饭来 2019-03-22 10:37 采纳率: 100%
浏览 1334
已采纳

c++ 需要编写一个人机 石头剪刀布的程序

示例: 输入 3 S R P (代表三次游戏, s是剪刀,r是石头,p是布)
电脑固定是出石头
然后 通过判定
输出 L W T (l 是输,w是赢,t是平局)

因为要求要三个独立的class
人 电脑 裁判。

电脑的class我会写。
但是卡在了人和裁判的class了
不知道是不是应该用array来输入
这个array到底是string还是 char呢
还有main.cpp里我应该怎么使用这些function呢?
很急!

图片说明

图片说明
这是我写的human.h 和human.cpp

  • 写回答

3条回答 默认 最新

  • threenewbee 2019-03-22 10:55
    关注

    你得把你现有的程序贴出来才好具体回答你。
    你说的array string和char都是可以实现的。

    给你写了一个参考下:

    #include "stdio.h"
    
    class Machine
    {
    public:
        char Play()
        {
            return 'R';
        }
    };
    
    class Human
    {
    public:
        char Play()
        {
            char ch;
            //printf("s?r?p?\n");
            scanf("%c", &ch);
            return ch;
        }
    };
    
    class Referee
    {
    public:
        char Judge(char m, char p)
        {
            if (m == p) return 'T';
            if ((m == 'S' && p == 'P') ||
                (m == 'P' && p == 'R') ||
                (m == 'R' && p == 'S'))
                return 'L';
            else
                return 'W';
        }
    };
    
    int main()
    {
        Machine m;
        Human p;
        Referee r;
        int n;
        char buf[100];
        scanf("%d", &n);
        for (int i = 0; i < n; i++)
            buf[i] = r.Judge(m.Play(), p.Play());
        buf[n] = '\0';
        printf("%s\n", buf);
        return 0;
    }
    
    

    图片说明

    如果问题得到解决,请点我回答左上角的采纳。


    带空格的版本

    #include "stdio.h"
    
    class Machine
    {
    public:
        char Play()
        {
            return 'R';
        }
    };
    
    class Human
    {
    public:
        char Play()
        {
            char ch;
            do {
            scanf("%c", &ch);
            } while (ch == ' ');
            return ch;
        }
    };
    
    class Referee
    {
    public:
        char Judge(char m, char p)
        {
            if (m == p) return 'T';
            if ((m == 'S' && p == 'P') ||
                (m == 'P' && p == 'R') ||
                (m == 'R' && p == 'S'))
                return 'L';
            else
                return 'W';
        }
    };
    
    int main()
    {
        Machine m;
        Human p;
        Referee r;
        int n;
        char buf[100];
        scanf("%d", &n);
        for (int i = 0; i < n * 2; i += 2)
        {
            buf[i] = r.Judge(m.Play(), p.Play());
            buf[i + 1] = ' ';
        }
        buf[n * 2 - 1] = '\0';
        printf("%s\n", buf);
        return 0;
    }
    

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献