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

# 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. 如何根据SRA accession number 从NCBI下载数据
  2. 除了芯片 我们还应关注哪些核心技术
  3. FP与IP作为两种编程范型的解决问题思路及其适用领域分析
  4. kickstart自动化安装
  5. 让 typora和word一样好用
  6. 成都郫县php开发学校_成都各区九年制学校、十二年制学校汇总
  7. [转]linux各文件夹介绍
  8. Linux安装宝塔(Bt-Panel),修改用户名或密码,查看面板入口
  9. Docker教程-仓库管理
  10. 一个线程加一运算,一个线程做减一运算,多个线程同时交替运行--synchronized...
  11. python os.listdir列举当前文件夹下所有文件及文件夹
  12. NFS部署及优化(一)
  13. Redis 6.0 新特性概览
  14. 进程的描述与控制 操作系统第二章知识点归纳总结
  15. Android开发笔记(九十六)集合动画与属性动画
  16. scala学习--难点
  17. org.jgroups.ChannelException: failed to start p...
  18. kubernetes滚动更新
  19. Genius‘s Gambit【学习进度条1】
  20. 基于3DGIS的智慧“云”综合产业园区建设

热门文章

  1. 反射和代理以及Mapper中的应用
  2. Python的自我修炼之路(一)
  3. 打印Diamond钻石图案
  4. 删除数组最后一个元素
  5. 美国只是个傀儡 真正的对手是黑暗帝国
  6. 一分钟学会看k线图_一分钟怎样学会看k线图(纯干货)散户必备!
  7. 微信PC版史诗级更新,终于摆脱手机了!
  8. 6.3 理解矩阵背后的意义
  9. 要凉?46%开发者表示短期内不考虑学习区块链技术,拿什么拯救你我的区块链人才荒...
  10. 知乎如何通过关键字搜索文章