C++猜数字游戏

main.cpp

#include <iostream>
#include "tips.h"
#include "guess.h"
#include <string>
int main(int argc, char const *argv[])
{
    std::string guess_in;

    std::cout << "Please enter your num:";
    while (1)
    {
        guess guess(1, 100);
        while (1)
        {

            try
            {
                std::cout << "your num : ";
                std::cin >> guess_in;
                if (guess_in.empty())
                {
                    std::cout << "your num is empty" << std::endl;
                    continue;
                }
                if (guess_in == "exit")
                {
                    std::cout << "Game is end" << std::endl;
                    exit(0);
                }
                int guess_num = std::stoi(guess_in, 0, 0);
                int result = guess_num_in(guess, guess_num);
                if (result == UNLANFUL)
                {
                    std::cout << myerror(result) << std::endl;
                    break;
                }
                if (result == SUCCES)
                {
                    std::cout << myerror(result) << std::endl;
                    break;
                }

                std::cout << myerror(result) << std::endl;
            }
            catch (const std::exception &e)
            {
                std::cout << "Please enter correct num" << std::endl;
            }
        }
    }

    return 0;
}

guess.h

#if !defined(__GUESS__)
#define __GUESS__

typedef int guess_t;

class guess
{
private:
    int res_num;

public:
    guess();
    guess(int left,int right);
    ~guess();

public:
    friend guess_t guess_num_in(guess &guess, int &);
};

#endif // __GUESS__

guess.cpp

#include <iostream>
#include <string>
#include "guess.h"
#include "tips.h"
#include <random>

guess::guess()
{
}
guess::guess(int left, int right)
{
    // std::default_random_engine dre;
     std::random_device rd;
    std::mt19937 gen(rd()); // 使用 Mersenne Twister 引擎
    std::uniform_int_distribution<int> di(left, right);
    this->res_num = di(gen);
}
guess_t guess_num_in(guess &guess, int &num)
{
    if (num > guess.res_num)
        return EXCEED;
    if (num < guess.res_num)
        return LOWEER;
    if (num == guess.res_num)
        return SUCCES;
    return 0;
}

guess::~guess(){}

tips.h

#if !defined(__MY_ERROR_)
#define __MY_ERROR_


#include <string>
#define UNLANFUL -1 /*Illegal parameter : 非法参数*/
#define EXCEED 1    /*exceed get_num*/
#define LOWEER 2    /*lower get_num*/
#define SUCCES 3    /*geuss is succes*/

typedef int error_t;
static std::string error;

std::string myerror(error_t &error_num);

#endif // __MY_ERROR_

tips.cpp


#include <iostream>
#include <string>
#include "tips.h"

std::string myerror(error_t &error_num)
{
    switch (error_num)
    {
    case UNLANFUL:
        error = "Illegal parameter";
        return error;
    case EXCEED:
        error = "exceed guess_num";
        return error;
    case LOWEER:
        error = "lower guess_num";
        return error;
    case SUCCES:
        error = "geuss is succes";
        return error;
    default:
        break;
    }
    return NULL;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值