猜数字游戏C++代码
一、游戏介绍
猜数字(又称 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
该文件包含结构体Result
、GDigit
类及其它必要的数据结构的定义。
/* 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 digitsvoid initial();// check if the four numbers are different from each otherbool different(Digit& guess) const;// check the resultResult check(Digit& guess) const;// get the digitconst Digit& get() const {return digit;}bool finish(Digit& guess) const {return digit[0]==guess[0] && digit[1]==guess[1] && digit[2]==guess[2] && digit[3]==guess[3];}
};
#endif // GDIGIT_H
2、GDigit.cpp
该文件包含GDigit
类的具体实现。
/* the definition of GDigit class* writen by Liangjin Song on 20200122
*/
#include "GDigit.h"
#include <random>
#include <ctime>void GDigit::initial()
{// initialize four numbers, and // make the four numbers different from each other.using engine=std::default_random_engine;using uniform=std::uniform_int_distribution<int>;// the first numberengine rnd((unsigned)time(NULL));uniform dis(0,9);engine rndp((unsigned)time(NULL));uniform disp(10,20);int i, loop=disp(rndp);for(i=0;i<loop;++i){dis(rnd);}digit[0]=dis(rnd);// the second numberdo{digit[1]=dis(rnd);}while(digit[1]==digit[0]);// the third numberdo{digit[2]=dis(rnd);}while(digit[2]==digit[0] || digit[2]==digit[1]);// the forth numberdo{digit[3]=dis(rnd);}while(digit[3]==digit[0] || digit[3]==digit[1] || digit[3]==digit[2]);
}bool GDigit::different(Digit& guess) const
{// check if the four numbers are different from each otherbool same;same=guess[0]==guess[1] || guess[0]==guess[2] || guess[0]==guess[3];same=same || guess[1]==guess[2] || guess[1]==guess[3];same=same || guess[2]==guess[3];return !same;
}Result GDigit::check(Digit& guess) const
{// check the resultResult res;res.A=0;res.B=0;uchar i,j;for(i=0; i<4; ++i){for(j=0; j<4; ++j){if(guess[j]==digit[i]){if(i==j){++res.A;}else{++res.B;}}}}return res;
}
3、main.cpp
C++控制台程序的main函数。
/* main function* writen by Liangjin Song on 20200122
*/
#include "GDigit.h"
#include <iostream>
using namespace std;
int main()
{GDigit gdigit;gdigit.initial();Digit guess;Result res;do{do{cout<<"Please input four unique digits:"<<endl;cin>>guess[0]>>guess[1]>>guess[2]>>guess[3];for(auto &i : guess){i-=0x30;}}while(!gdigit.different(guess));res=gdigit.check(guess);cout<<static_cast<int>(res.A)<<"A"<<static_cast<int>(res.B)<<"B"<<endl;}while(!gdigit.finish(guess));cout<<endl;return 0;
}
四、运行结果
控制台下的运行效果如下。
五、图形界面
使用MFC制作图形界面,代码链接为:猜数字游戏MFC源代码,其运行效果如下图。
六、注意
程序使用了C++11特性,编译器需支持C++11。
猜数字游戏C++代码相关推荐
- C语言写出猜数字游戏的代码
猜数字游戏,即电脑生成随机数,根据用户输入猜大猜小最终实现猜对数字 思想:电脑生成随机数跟用户输入的那个数进行比较,若大了或者小了继续猜,这里可以写个死循环知道猜对才可以跳出来 代码如下所示: #in ...
- C++编写一个猜数字游戏的代码
文章目录 一.核心代码 二.整个代码实现 一.核心代码 (1)随着系统时间,随机生成一个数字(头文件应引用#include ). int s = rand() % 100 + 1;cout <& ...
- python3.3使用tkinter实现猜数字游戏代码
发布时间:2014-06-18 编辑:www.jbxue.com 原文地址:http://www.jbxue.com/article/python/22152.html python3.3使用tk ...
- CASIO 5800P计算器游戏--猜数字游戏
CASIO 5800P 计算器游戏--猜数字游戏原代码 我编的计算器小游戏--猜数字游戏 LbI I↙ "xxGUESS NUMBERxx xPROGRAMMER:JCHx -------- ...
- c#语言猜数字游戏,C#实现猜数字游戏
本文实例为大家分享了C#实现猜数字游戏具体代码,供大家参考,具体内容如下 给定一个0-100的随机数字猜其大小 题目样式: 电脑产生一个0到100之间的随机数字,并且要求用户来猜,如果用户猜的数字比这 ...
- C语言入门小游戏——猜数字游戏(详解)
大家好,我是十一,今天给大家带来"猜数字游戏"的代码和讲解. 目录 前言 基本流程 1.打印菜单 1.1主函数逻辑 2.生成随机数 随机数生成结果 2.1srand函数 2.2时间 ...
- Python春节特训营07:和电脑玩猜数字游戏
第7天 和电脑玩猜数字游戏 猜数字(又称 Bulls and Cows )是一种古老的的密码破译类益智类小游戏,起源于20世纪中期,一般由两个人或多人玩,也可以由一个人和电脑玩.今天我们就来用 Pyt ...
- python猜年龄代码_python入门教程NO.7用python来写一个猜数字游戏
python入门教程 本文涉及的python基础语法为while循环 #python#3中while语句常常被用于循环执行某个程序,任何非0和非空null的值,都会被条件判断为True while 条 ...
- Go-实现猜数字游戏代码
实现猜数字游戏代码 1 package main 2 3 import ( 4 "fmt" 5 "math/rand" 6 "time" 7 ...
最新文章
- /proc/diskstats各字段解析
- Java 403 forbidden错误解决
- java map 实例_java中map集合嵌套形式简单示例
- Cisco交换机密码忘记重置
- [BZOJ2282]消防
- win虚拟光驱怎么做linux,手把手教你用虚拟光驱安装windows10系统的详细步骤
- 计算机d盘无法格式化,为什么不能格式化D盘?D盘无法格式化的解决方法
- python爬虫抖音视频代码_python爬虫 抖音短视频解析下载
- 把文字图片转换成文本文字
- 工业控制信息安全资源汇总(国内篇)
- 计算机如何添加gust用户,win7系统如何创建安全的Guest账户
- Guided Anchoring 论文笔记
- 软考 | 2019年上半年 软件设计师 下午试卷
- oracle11g登录企业管理器,Oracle11g RAC常用操作 (维护及管理)
- c#winform使用EntityFramework导入数据库
- 不同速度的蚂蚁跑圈相遇问题
- Java基础 - AO BO DO PO VO DAO DTO POJO
- 一分钟看懂外卖O2O:小心!别掉入这三个坑里
- 芯动A11算力2000M以太坊矿机机皇
- SQL语言——联结表