相信看过哈利波特的同学们一定对那顶格兰芬多传下来的分院帽非常的好奇,分院帽是怎么得出正确的结论——去霍格沃茨学校的同学们该进哪所学院的呢?今天我们就用代码来揭示一下~~
好了,废话不多说,我们开始呈现代码!

# include <iostream>
# include <string>
# include <ctime>
# include <Windows.h>
//函数的声明
void Gryffindor();
void Ravenclaw();
void Hufflepuff();
void Slytherin();
//我们需要制作一个秘钥
int judge = 0;
using namespace std;
//分数累计模板
void Score(int score)
{static int sum = 0;sum = sum + score;if (judge == 1){if (sum >= 0 && sum <= 100)Ravenclaw();if (sum > 100 && sum <= 300)Gryffindor();if (sum > 300 && sum <= 900)Hufflepuff();if (sum > 900)Slytherin();}
}
//万能的问题模板
void EveryProblem(string problem[5])
{problem[0] = "我想要知道你最喜欢的颜色是……";problem[1] = "我想知道你来霍格沃茨学校的目的是……";problem[2] = "我想知道你对魔法了解多少……";problem[3] = "我想知道你认为下面哪种动物对你来说最亲切……";problem[4] = "如果让你出生在中土世界……我是说如果……你会选择做些什么……";
}
//问题函数
void Problem_gram()
{string problem[5];//定义接收问题的函数char select;//定义选择的变量EveryProblem(problem);for (int count = 1; count <= 5; count++){int i = rand() % 7;//我们想引入一个随机数来打乱问题的顺序switch (i){case 0:cout << count << "、" << problem[0] << endl;Sleep(2000);cout << "A、蓝色\tB、红色\nC、黄色\tD、银色\n";cout << "请输入您的选择" << "\t";cin >> select;Sleep(1000);switch (select){case 'A':Score(0);cout << "(大声地)拉文……不行,我得保守……我还得继续冷静思考" << endl;;break;case 'B':Score(50);cout << "(大声地)格兰芬……不行,我得保守……我还得继续冷静思考" << endl;break;case 'C':Score(100);cout << "(大声地)赫奇……不行,我得保守……我还得继续冷静思考" << endl;break;case 'D':Score(200);cout << "(大声地)斯莱特……不行,我得保守……我还得继续冷静思考" << endl;break;}Sleep(2000);system("cls");break;case 1:cout << count << "、" << problem[1] << endl;Sleep(2000);cout << "A、快乐的去冒险\tB、学习巫术\nC、结交很多的魔法朋友\tD、很难选,我觉得以上都是我来这里的原因" << endl;;cout << "请输入您的选择" << "\t";cin >> select;switch (select){case 'A':Score(50);cout << "哈哈,在这里你会得到快乐的……" << endl;break;case 'B':Score(200);cout << "额,我好像是明知故问……" << endl;break;case 'C':Score(100);cout << "这里的教授和同学们都很好相处哟……" << endl;break;case 'D':int n = rand() % 100 + 1;Score(n);cout << "你看样子很随便呀……再这么随便我就把你随机分了(大声地)" << endl;break;}Sleep(2000);system("cls");break;case 2:cout << count << "、" << problem[2] << endl;Sleep(2000);cout << "A、一概不知\tB、我父母之前都在这里上过学,他们教会了我一些\nC、我了解很多,比如“除你武器”之类的\tD、我几乎快把低年级的课本翻烂了" << endl;;cout << "请输入您的选择" << "\t";cin >> select;switch (select){case 'A':cout << "额,我好像是明知故问……" << endl;Score(200);break;case 'B':cout << "是嘛?那看来你有机会能把你的父母变成师哥师姐咯……哈哈哈……" << endl;Score(100);break;case 'C':cout << "哦,聪明的孩子,我大概知道你该分去哪里了……" << endl;Score(0);break;case 'D':cout << "哦,勤奋的孩子,我大概知道你该分去哪里了……" << endl;Score(50);break;}Sleep(2000);system("cls");break;case 3:cout << count << "、" << problem[3] << endl;Sleep(2000);cout << "A、狮子\tB、鹰\nC、蛇\tD、地鼠" << endl;;cout << "请输入您的选择" << "\t";cin >> select;switch (select){case 'A':cout << "看来答案已经浮出了水面……" << endl;Score(50);break;case 'B':cout << "看来答案已经浮出了水面……" << endl;Score(0);break;case 'C':cout << "看来答案已经浮出了水面……" << endl;Score(200);break;case 'D':cout << "看来答案已经浮出了水面……" << endl;Score(100);break;}Sleep(2000);system("cls");break;case 4:cout << count << "、" << problem[4] << endl;Sleep(2000);cout << "A、我想成为富裕的国王\tB、我想成为一位征服世界的勇士\nC、我想成为一位游行四方的谋士,四方皆为自己的朋友\tD、我更喜欢现在的生活,我不想回归过去" << endl;cout << "请输入您的选择" << "\t";cin >> select;switch (select){case 'A':cout << "你只要足够努力,魔法的皇冕终将属于你……" << endl;Score(0);break;case 'B':cout << "给你一把宝剑的话,我想再也没有什么能够打消你的勇气……" << endl;Score(50);break;case 'C':cout << "愿忠诚与希望永远伴随着你……" << endl;Score(100);break;case 'D':cout << "我是说如果……好吧……看来你的现实主义色彩很强烈嘛!" << endl;Score(200);break;}Sleep(2000);system("cls");break;default:break;}}judge = 1;Score(0);
}
//格兰芬多学院
void Gryffindor()
{cout << "分院帽:(大声地)格兰芬多!!!" << endl;Sleep(5000);system("cls");cout << "恭喜你!你的血液里铭刻的是戈德里克·格兰芬多的名字,他的不朽伟业将后继有人!" << endl;cout << "创始人:\t戈德里克·格兰芬多\n" << "特质:\t勇气\n" << "象征元素:\t火\n"<< "学院的代表色:\t红色,金色\n" << "知名校友:\t哈利•波特\\邓布利多\n" << "代表动物:\t狮子\n";
}
//拉文克劳学院
void Ravenclaw()
{cout << "分院帽:(大声地)拉文克劳!!!" << endl;Sleep(5000);system("cls");cout << "我们真是庆幸!罗伊纳·拉文克劳也会同样的骄傲我们的学院来临了一位天才魔法师!!!" << endl;cout << "创始人:\t罗伊纳·拉文克劳\n" << "特质:\t聪颖\n" << "象征元素:\t风\n"<< "学院的代表色:\t蓝色,青铜色\n" << "知名校友:\t秋·张//卢娜·洛夫古德\n" << "代表动物:\t鹰\n";
}
//赫奇帕奇学院
void Hufflepuff()
{cout << "分院帽:(大声地)赫奇帕奇!!!" << endl;Sleep(5000);system("cls");cout << "感谢赫尔加·赫奇帕奇创建学院,我们才能与你相识!!!" << endl;cout << "创始人:\t赫尔加·赫奇帕奇\n" << "特质:\t忠诚\n" << "象征元素:\t土\n"<< "学院的代表色:\t黄色和黑色\n" << "知名校友:\t厄尼·麦克米兰//纽特·斯卡曼德\n" << "代表动物:\t地鼠\n";
}
//斯莱特林学院
void Slytherin()
{cout << "分院帽:(大声地)斯莱特林!!!" << endl;Sleep(5000);system("cls");cout << "斯莱特林会帮你达到巅峰" << endl;cout << "创始人:\t萨拉查·斯莱特林\n" << "特质:\t野心\n" << "象征元素:\t水\n"<< "学院的代表色:\t绿色、银色\n" << "知名校友:\t(模糊不清,好像是在隐藏什么)\n" <<"代表动物:\t蛇\n";
}
int main(void)
{//我们需要一个随机数的种子srand((unsigned int)time(NULL));//我们先定义好Sortinghat(分院帽)cout << "分院帽:欢迎来到这里,让我来看看你现在手里拿的是什么样的魔杖" << endl;Sleep(3000);cout << "A、槭木 凤凰羽毛  七英寸长\t" <<" B、山毛榉木 蛇的神经  九英寸长\n"<< "C、榆木 龙的神经  八英寸长\t" << "D、山楂木 独角兽毛  十英寸长" << endl;Sleep(3000);cout << "(现在分院帽会有你手中的魔杖来决定你是一个什么类型的人)";char select;cout << "请输入您的选择" << "\t";cin >> select;switch (select){case 'A':Score(10);cout << "嗯,不错的选择……我现在已经有了十足的把握,但为了对你了解的更加深入,\n你还是要继续回答我下面的问题,你可要如实的回答哟……" << endl; Sleep(5000);system("cls");Problem_gram();break;case 'B':Score(100);cout << "嗯……这根魔杖很适合你嘛……利用好的话他会帮你走上巅峰\n请你还是要继续回答我下面的问题……" << endl;Sleep(5000);system("cls");Problem_gram();break;case 'C':Score(500);cout << "你可知道他之前的主人……额……我会让你如愿以偿" << endl;Sleep(5000);system("cls");Problem_gram();break;case 'D':Score(100);cout << "没有什么能比独角兽的毛做枕芯再合适不过的了……你很神秘……就让我用5道题来解开你的真面目吧……" << endl;Sleep(5000);system("cls");Problem_gram();break;}system("pause");return 0;
}

嘿嘿,其实漫长的代码大部分都是些问答,大家可以运行一下代码,看一下你与哪所学院有缘,其实小靴子非常懒,我一开始编程的时候想利用goto函数在
void Gryffindor();
void Ravenclaw();
void Hufflepuff();
void Slytherin();
这四个函数里面进行跳转,但是编着编着就转糊涂了,改出来了一个
void EveryProblem(string problem[5]),一个万能的问题模板,里面的是5个问题,我在这个函数里加上了一个随机函数的种子,给问题编上了序号,因此不同的人运行起来抽到的问题不一定会一样,但是小靴子编写的题库太小了,有兴趣的同学可以再加些问题,这样每个人抽到的题目重复率就会降低,小靴子在判断分学院的时候不是用的switch 的选择机制,而是用的分数累加,这样编码者操控起来比较简单,易操作,无论是你抽到的是鹰院还是狮院,(突然一脸认真地)小靴子都祝大家万事如意,学有所成~

用C++编写出《哈利波特》的分院帽程序,不要错过哦~相关推荐

  1. Python 入门篇-用Notepad++编写出第一个python程序

    首先我们要安装Notepad++ Notepad++获取方式如下: 官网获取 小蓝枣的资源仓库获取,提取码:cu89 安装简单,选择简体中文安装就好了,中间会有个配置安装路径,想改的话可以改. 接下来 ...

  2. 用python编写一个猜年龄的小程序-知道了这个,你也能写出 Python 趣味小程序

    原标题:知道了这个,你也能写出 Python 趣味小程序 前两天在 51CTO 看见某篇推荐博文,大概是一个 豆子比较感兴趣,在知乎和 github 上搜索了相关的源代码,发现原来实现起来非常的简单, ...

  3. 使用Qt编写模块化插件式应用程序

    动态链接库技术使软件工程师们兽血沸腾,它使得应用系统(程序)可以以二进制模块的形式灵活地组建起来.比起源码级别的模块化,二进制级别的模块划分使得各模块更加独立,各模块可以分别编译和链接,模块的升级不会 ...

  4. ROS学习笔记三:编写第一个ROS节点程序

    在编写第一个ROS节点程序之前需要创建工作空间(workspace)和功能包(package). 一.创建工作空间(workspace) 创建一个catkin_ws: #注意:如果使用sudo一次性创 ...

  5. 编写一个基本的Android程序

    程序员有个惯例,在任何一个新平台上学习一门新语言的时候,首先做的第一件事情就是编写一个Hello,World程序,在Android上也不例外,<Hello,World>的第一个程序也是He ...

  6. Android 系统到底提供了哪些东西,供我们可以开发出优秀的应用程序(文末送书)

    Android 系统到底提供了哪些东西,供我们可以开发出优秀的应用程序. 作者:坚果 公众号:"大前端之旅" 华为云享专家,InfoQ签约作者,阿里云专家博主,51CTO博客首席体 ...

  7. 七点建议,帮助你编写出简洁、干练的Java代码

    在每一位刚入行的程序员的心中,编写程序都是一门神圣的艺术创作.他们无不希望自己的代码作品既简洁清晰,又可读性强,而且还具有一定的容错能力.本文小千将为您带来七点建议和技巧,以帮助您编写出简洁.干练的J ...

  8. 编写高性能的托管应用程序:入门

    编写高性能的托管应用程序:入门 发布日期: 6/15/2004 | 更新日期: 6/15/2004 Gregor Noriskin Microsoft CLR 性能小组 适用于:Microsoft . ...

  9. c语言编写pdf,编写并运行C语言程序.pdf

    VC6.0 使用教程 :从 VC6.0安装到运行和调试 [详解版] VisualC++6.0 简称 VC或者 VC6.0 ,是微软推出的一款 C和 C++编译器 ,具有强大的可 视化开发功能和调试功能 ...

  10. 怎么在一里以外识别出一个菜鸡程序员

    作者 | Scott Shipp 译者 | 核子可乐 当我还是菜鸡程序员时,我看到资深程序员们写的代码会觉得:"这也太傻了吧,毫无特点."当我工作经验渐长后,才发现自己还是太年轻, ...

最新文章

  1. 姚期智施尧耘获FOCS 2021时间检验奖,MIT华人摘最佳学生论文奖
  2. 多线程的两种实现方式和区别?
  3. ASP.NET Core 2.2 基础知识(十四) WebAPI Action返回类型(未完待续)
  4. android 自定义控件央视,Android自定义ViewGroup之第一次接触ViewGroup
  5. Prism+WPF使用DependencyInjection实现AutoMapper的依赖注入功能
  6. vue中使用Ueditor编辑器 -- 1
  7. mysql函数使用_mysql函数应用
  8. 李宏毅自然语言处理——依存句法分析
  9. 【模版】求单个/多个欧拉函数值
  10. 微型计算机控制技术王艳芳,基于单片机液位控制器的设计与实现最终版(样例3)...
  11. 线性代数matlab的心得体会,关于线性代数心得体会
  12. uni-app引入阿里图标【单色】
  13. HTML kind属性怎么用?
  14. chloe.mysql 源码_[开源]无sql之旅-Chloe.ORM之增删查改
  15. 知物由学 | 一文读懂Android资源文件保护
  16. 固网服务器win7系统驱动,固网HU-4608驱动
  17. parallels 激活window7
  18. NHOI 2004 宠物收养所 splay解法
  19. Airtest(poco)使用注意事项以及遇到的坑:adb下载安装、poco不显示渲染树
  20. stateflow仿真练习实例——汽车五状态逻辑控制仿真

热门文章

  1. Model Compression and Hardware Acceleration for Neural Networks A Comprehensive Survey
  2. UVALive 7279 Sheldon Numbers
  3. solidworks模型如何进行1/4剖面
  4. 文档自动分类模型--分类算法思路总结
  5. Wault Finance闪贷攻击溯源
  6. C语言I博客作业07
  7. pandas dataframe 分组聚合时,分组组名并入列的方法
  8. 测试 软通动力软件测试机试_软通动力软件测试笔试题.doc
  9. 计算机 实验室安全准入制度,实验实训室安全准入制度(试行)
  10. C# Buffer.BlockCopy方法详解