qq_23303917 2020-04-12 13:50 采纳率: 100%
浏览 426
已结题

谁能帮我用c++写一个小游戏,骰子的,高分悬赏谢谢啦!!!最好带注释

游戏规则:玩家投两次骰子,将点数相加,如果和为7或者11就赢了,为2,3,12就输了,为4568910,就再投一次,直到投到你自己第一次投到的点数(4568910)才算胜利,如果投到7,则游戏者输。
要求:用RollDice函数 模拟投的两次骰子,Game函数模拟进行一次游戏。主函数中要玩家选择继续游戏还是退出游戏,最好还要限速游戏获胜次数
typedef enum{WIN, LOSE, TIE} GameStatus;// WIN:赢,LOSE:输,TIE:平局
在实现时可声明骰子游戏类DiceGame,将上面讲的函数作为类的辅助函数,类中含方法Game(),用来运行游戏,下面为用伪代码描述的整个游戏的参考流程。
//最好带注释

  • 写回答

4条回答 默认 最新

  • 克克计较 2020-04-14 01:52
    关注
    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    typedef enum {
        WIN,
        LOSE,
        TIE
    }GameStatus;
    
    int RollDice()
    {
        int dice1, dice2;
    
        srand(time(0));
        dice1 = 1 + rand() % 6;
    
        srand(time(0));
        dice2 = 1 + rand() % 6;
    
        return dice1 + dice2;
    }
    
    class DiceGame
    {
    public:
        DiceGame()
        {
            m_lastSum = -1;
        }
    
        GameStatus Game()
        {
            GameStatus ret;
            int sum = RollDice();
            if (m_lastSum != -1)
                cout << "上一次点数和为 " << m_lastSum << ", 此次的点数和为 " << sum << endl;
            else if (m_lastSum == -1)
                cout << "此次的点数和为 " << sum << endl;
    
            if (m_lastSum == -1)
            {
                if (sum == 7 || sum == 11)
                    ret = WIN;
                else if (sum == 2 || sum == 3 || sum == 12)
                    ret = LOSE;
                else
                {
                    ret = TIE;
                    m_lastSum = sum;
                }
            }
            else
            {
                if (sum == m_lastSum)
                    ret = WIN;
                else
                    ret = LOSE;
                m_lastSum = -1;
            }
            return ret;
        }
    
    
    private:
        int m_lastSum;
    };
    
    int main(int argc, char* argv[])
    {
        char input;
        const char* result[] = {"本次赢了", "本次输了", "本次平局"};
        DiceGame instance;
        cout << "开始游戏:" << endl;
        while(1)
        {
            cout << result[instance.Game()] << endl;
            cout << "是否继续游戏?(输入q退出游戏,输入其他字符继续游戏):";
            cin.get(input);
            if (input == 'q')
            {
                cout << "游戏结束!" << endl;
                break;
            }
            else if (input != '\n')             // 防止用户不输入任何字符就直接输入回车键
            {
                cin.clear();
                cin.ignore(1024, '\n');
            }
        }
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程