猜数字游戏C++代码

本文介绍了猜数字游戏的玩法,算法以及C++代码实现。游戏由一方想好一个无重复数字的4位数,另一方通过A和B的提示进行猜测。程序使用随机数生成目标数字,并提供了一个类来处理比对和反馈。文章还提到了使用MFC创建的图形界面,并指出程序需要C++11支持。
摘要由CSDN通过智能技术生成

一、游戏介绍

  猜数字(又称 Bulls and Cows )是一种古老的的密码破译类益智类小游戏,起源于20世纪中期,一般由两个人或多人玩,也可以由一个人和电脑玩。一方出数字,一方猜。出数字的人要想好一个没有重复数字的4个数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B。接着猜的人再根据出题者的几A几B继续猜,直到猜中(即 4A0B)为止。

二、算法

  程序首先生成四个互不相同的位于0-9之间的随机数,根据输入的数据,将两者进行对比,给出A和B的值。
  程序使用std::array<uchar,4>来存储这四个数字,并且定义一个结构体Result来存储A和B的值。将这些数据及相应的操作整合到GDigit类中

三、程序代码

1、GDigit.h

该文件包含结构体ResultGDigit类及其它必要的数据结构的定义。

/* the definition of GDigit class
 * writen by Liangjin Song on 20200122
*/
#ifndef GDIGIT_H
#define GDIGIT_H
#include <array>

using uchar=unsigned char;
using Digit=std::array<uchar,4>;

struct Result{
   
    uchar A;
    uchar B;
};

class GDigit
{
   
private:
    Digit digit;
public:
    GDigit()=default;
    ~GDigit()=default;
public:
    // initial the digits
    void initial();
    // check if the four numbers are different from each other
    bool different(Digit& guess) const;
    // check the result
    Result check(Digit& guess) const;
    // get the digit
    const Digit& get() const {
   return digit;}
    bool finish(Digit& guess) const {
   return digit[0]==guess[0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值